يمكن تشغيل MDM بدون نافذته بثلاث طرق:
- سطر أوامر التطبيق الخاص، نفس مفاتيح IDM: تسليم تنزيل إلى التطبيق قيد التشغيل من نص برمجي، ملف دفعي أو برنامج آخر.
misterdownloadmanager-cli، أداة سطر أوامر منفصلة: تنزيل الملفات ومقاطع الفيديو والتورنت في طرفية، مع إظهار التقدم، بدون التطبيق.- واجهة برمجة التطبيقات للأتمتة: تدرج البرامج الأخرى تنزيلات التطبيق قيد التشغيل (بصيغة JSON) وتوقفها أو تبدأها أو تزيلها أو تحذفها، عبر قناة محلية محمية برمز مميز. تستخدمها مساعدات الذكاء الاصطناعي من خلال خادم MCP الخاص بـ MDM: انظر مساعدات الذكاء الاصطناعي.
تستخدم الأمثلة مسارات Windows؛ في macOS و Linux، البرامج لها نفس الأسماء بدون .exe.
سطر أوامر التطبيق
misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
| المفتاح | ما تفعله |
|---|---|
/d URL |
العنوان المراد تنزيله. |
/p folder |
احفظه في هذا المجلد (وإلا مجلد الفئة من الخيارات ← حفظ في). |
/f name |
احفظه بهذا الاسم. |
/a |
أضفه إلى قائمة التنزيل الرئيسية دون بدء تشغيله. |
/n |
صامت: لا توجد نافذة معلومات ملف التنزيل، يبدأ التنزيل (أو يوضع في قائمة الانتظار، مع /a) على الفور. |
/s |
ابدأ قائمة التنزيل الرئيسية. |
/exit |
احفظ وأغلق التطبيق قيد التشغيل (يستخدمه المثبت قبل الترقية). |
ملف .torrent أو رابط magnet: |
افتحه في إضافة تورنت (ما يمرره Windows عندما يفتح MDM ملفات التورنت). |
يمكن أن تبدأ المفاتيح بـ / أو -، بأي حالة. إذا كان MDM قيد التشغيل، ينتقل الأمر إليه؛ وإذا لم يكن كذلك، يبدأ MDM وينفذه. على سبيل المثال:
misterdownloadmanager.exe /d https://example.com/files/report.pdf /p D:\Reports /n
misterdownloadmanager.exe /d https://example.com/big.iso /a
misterdownloadmanager.exe /s
misterdownloadmanager-cli
يأتي مع كل تنزيل لـ MDM، بجانب التطبيق (يضعه المثبت في مجلد MDM). يعمل بمفرده: لا يحتاج التطبيق إلى التشغيل، باستثناء status و api.
| الأمر | ما تفعله |
|---|---|
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] |
تنزيل ملف بما يصل إلى 8 اتصالات (-c، من 1 إلى 128)، مع إظهار التقدم. Ctrl+C يوقفه مؤقتا؛ resume يتابعه. --checksum يتحقق من الملف المكتمل: MD5 سداسي عشري، SHA-1، SHA-256، SHA-512 أو CRC32، مع إمكانية تسميته (sha256:…). |
resume file.mdm.json [-c connections] [-H ...] |
متابعة تنزيل متوقف مؤقتا أو معطل من ملف .mdm.json المجاور له. |
video-info URL |
ما هو الفيديو الذي تحتويه الصفحة (YouTube، Vimeo، ...) والجودات للاختيار من بينها. |
video-get URL [-f selector] [-o folder] |
تنزيل فيديو؛ -f يأخذ محدد جودة من video-info (b = أفضل ملف واحد). |
install-ytdlp, install-ffmpeg |
تثبيت أو تحديث المساعدين الذين تحتاجهم مقاطع الفيديو: yt-dlp (يتم التحقق منه مقابل مفتاح التوقيع الخاص به) و ffmpeg (Windows؛ في macOS و Linux يستخدم MDM نظام التشغيل). |
torrent-info SOURCE |
اسم التورنت، الملفات (مرقمة) والحجم؛ SOURCE هو رابط مغناطيسي أو ملف .torrent. |
torrent-get SOURCE [-o folder] [--files 0,2] |
تنزيل تورنت، أو بعض ملفاته فقط. |
torrent-create PATH -o file.torrent |
إنشاء .torrent لملف أو مجلد (يجد الأقران ذلك من خلال DHT). |
status |
تنزيلات التطبيق قيد التشغيل، بصيغة JSON، مع معرفاتها (يجب تشغيل واجهة برمجة تطبيقات الأتمتة). |
pause ID..., start ID... |
إيقاف مؤقت للتنزيلات الجارية، أو بدء (استئناف) التنزيلات المتوقفة أو الموجودة في قائمة الانتظار أو الفاشلة، في التطبيق قيد التشغيل. |
remove ID..., delete ID... |
إزالة التنزيلات من قائمة التطبيق قيد التشغيل: remove يحتفظ بملفاتها، delete يحذفها أيضا. يتم إيقاف التنزيل الجاري مؤقتا أولا (pause). |
api on, api off |
تشغيل أو إيقاف واجهة برمجة تطبيقات الأتمتة للتطبيق قيد التشغيل. |
misterdownloadmanager-cli help <command>يعرض كل خيار. الأمر الذي يفشل (التطبيق لا يعمل، يجيب بخطأ، التنزيل يتعطل) يخرج بالرمز 1. على سبيل المثال:
misterdownloadmanager-cli get https://example.com/big.iso -o D:\Downloads -c 16 --checksum sha256:9f86d0…
misterdownloadmanager-cli video-get "https://www.youtube.com/watch?v=aqz-KE-bpKQ" -f "b[height=720]"
misterdownloadmanager-cli torrent-get "magnet:?xt=urn:btih:…" --files 0
JSON للبرامج النصية والبرامج
مع --json (قبل أو بعد الأمر)، يطبع كل أمر JSON بدلا من النص، كائن واحد لكل سطر، لكي تقرأه السكربتات وعوامل الذكاء الاصطناعي:
| الأمر | يطبع |
|---|---|
get, resume |
سطر {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} كل نصف ثانية، ثم {"event": "done", "path", "size", "seconds"}، أو {"event": "paused", "state"} بعد Ctrl+C (state هو الملف الذي يأخذه resume). |
video-get |
{"event": "progress", "downloaded", "size", "speed"}أسطر، ثم {"event": "done", "path"}. |
torrent-get |
{"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}أسطر، ثم {"event": "done", "path", "size"}، أو {"event": "stopped", "downloaded", "seconds"} مع --seconds. |
video-info |
{"title", "choices": [{"label", "format", "size"}]}؛ format للاختيار هو ما يأخذه video-get -f. |
torrent-info |
{"name", "info_hash", "size", "files": [{"index", "size", "path"}]}. |
torrent-create |
{"info_hash", "path"}. |
install-ytdlp, install-ffmpeg |
{"tool", "version", "path"}. |
status، pause، start، remove، delete،api |
إجابة التطبيق، وهي JSON بالفعل (انظر أدناه). |
الأحجام بالبايت (null بينما غير معروف)، والسرعات بالبايت في الثانية. الفشل يطبع {"error": "…"} ويخرج بالرمز 1. على سبيل المثال:
misterdownloadmanager-cli --json get https://example.com/big.iso -o D:\Downloads
{"event":"progress","downloaded":4194304,"size":1073741824,"speed":52428800,"connections":8,"segments":8}
…
{"event":"done","path":"D:\\Downloads\\big.iso","size":1073741824,"seconds":20.4}
واجهة برمجة تطبيقات الأتمتة
يمكن للبرامج الأخرى أن تسأل التطبيق قيد التشغيل عما يقوم بتنزيله، وإيقاف التنزيلات مؤقتا أو بدءها أو إزالتها أو حذفها. واجهة برمجة التطبيقات معطلة افتراضيا؛ قم بتشغيلها باستخدام misterdownloadmanager-cli api on (وإيقافها باستخدام api off).
كيف يتحدث البرنامج إلى MDM
- أثناء تشغيله، يستمع MDM على منفذ
127.0.0.1(هذا الكمبيوتر فقط) ويكتب المنفذ ورمزا سريا إلىipc.jsonفي مجلد بياناته: - Windows:%APPDATA%\misterdownloadmanager\ipc.json- macOS:~/Library/Application Support/misterdownloadmanager/ipc.json- Linux:~/.local/share/misterdownloadmanager/ipc.json- نسخة محمولة:data\ipc.jsonبجوار البرنامج.
يتغير الرمز المميز عند كل بدء تشغيل؛ فقط البرامج التي يمكنها قراءة مجلد بياناتك (الخاص بك) يمكنها استخدامه. 2. اتصل بهذا المنفذ وأرسل سطرا واحدا من JSON: الرمز المميز وحقول الأمر، على سبيل المثال {"token": "<token>", "query": "list"}. 3. يجيب MDM بسطر واحد: ok لأمر، أو كائن JSON لسؤال.
ماذا يفهم
الحقول (بالإضافة إلى token) |
الإجابة |
|---|---|
{"query": "list"} |
كل تنزيل والسرعة الإجمالية: {"downloads": [{"id", "file", "url", "path", "status", "size", "downloaded", "speed", "added", "error"}], "speed": bytes per second}. status هو Queued، Downloading، Stopped، Complete أو Error؛ size هو null بينما غير معروف؛ error (سبب الفشل) موجود فقط لتنزيل في Error. فقط عندما تكون واجهة برمجة التطبيقات قيد التشغيل. |
{"action": "pause", "ids": [3, 4]} |
يعمل على التنزيلات حسب المعرف: "pause"، "start"، "remove" (تم الاحتفاظ بالملف) أو "delete" (تم حذف الملف أيضا). يجيب {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}؛ يجب إيقاف التنزيل الجاري مؤقتا قبل إزالته أو حذفه. فقط عندما تكون واجهة برمجة التطبيقات قيد التشغيل. |
{"api": true} / {"api": false} |
يقوم بتشغيل أو إيقاف واجهة برمجة التطبيقات: {"api": true}. |
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} |
يضيف تنزيلا، كما تفعل /d /p /f /n في سطر الأوامر ("later": true هو /a)؛ ok. أيضا مع إيقاف تشغيل واجهة برمجة التطبيقات، مثل سطر الأوامر. |
{"start_queue": true} |
يبدأ قائمة انتظار التنزيل الرئيسية؛ ok. |
يتم الرد على سؤال أو إجراء غير معروف بـ {"error": "…"}، كما هو الحال مع سؤال بينما تكون واجهة برمجة التطبيقات معطلة (ثم مع "code": "api-off"، لكي تتحقق البرامج: قد يتغير نص الخطأ). يتم الرد على رمز غير صحيح بـ denied.
يتم وصف كل طلب وإجابة، حقلا بحقل، في مخطط JSON: automation-api.schema.json (موجود أيضا على https://misterdownloadmanager.com/automation-api.schema.json). وهو مصنوع من الكود الذي يجيب به التطبيق، لذلك يبقى دقيقا؛ يمكن للبرامج التحقق مما ترسله وتقرأه مقابل ذلك، أو إنشاء أنواعها منه.
أمثلة
بوويرشيل (Windows):
$ep = Get-Content "$env:APPDATA\misterdownloadmanager\ipc.json" | ConvertFrom-Json
$client = New-Object Net.Sockets.TcpClient("127.0.0.1", $ep.port)
$stream = $client.GetStream()
$writer = New-Object IO.StreamWriter($stream); $reader = New-Object IO.StreamReader($stream)
$writer.WriteLine((@{ token = $ep.token; query = "list" } | ConvertTo-Json -Compress))
$writer.Flush()
$reader.ReadLine() | ConvertFrom-Json | Select-Object -ExpandProperty downloads | Format-Table file, status, downloaded, size
$client.Close()
بايثون:
import json, os, socket
ipc = os.path.join(os.environ["APPDATA"], "misterdownloadmanager", "ipc.json") # see above elsewhere
ep = json.load(open(ipc))
with socket.create_connection(("127.0.0.1", ep["port"])) as s:
s.sendall((json.dumps({"token": ep["token"], "query": "list"}) + "\n").encode())
answer = json.loads(s.makefile().readline())
for d in answer["downloads"]:
print(d["file"], d["status"], d["downloaded"], d["size"])
لإضافة تنزيل بدلا من ذلك، أرسل {"token": "…", "url": "https://example.com/a.zip", "silent": true}.
مجاني، مفتوح المصدر، بدون إعلانات، بدون فترة تجريبية.
تنزيل Mister Download Manager