Mister Download Manager
  1. خانه
  2. راهنما
  3. خط فرمان و اتوماسیون

خط فرمان و اتوماسیون

MDM را می‌توان بدون پنجره‌اش به سه روش کنترل کرد:

  • خط فرمان خود برنامه، همان سوئیچ‌های IDM: یک بارگیری را از یک اسکریپت، یک فایل دسته‌ای یا برنامه دیگر به برنامه در حال اجرا بسپارید.
  • misterdownloadmanager-cli، یک ابزار خط فرمان جداگانه: فایل‌ها، ویدیوها و تورنت‌ها را در یک ترمینال، با نمایش پیشرفت، بدون نیاز به برنامه بارگیری کنید.
  • رابط برنامه‌نویسی کاربردی (API) خودکارسازی: برنامه‌های دیگر، بارگیری‌های برنامه در حال اجرا را (به صورت 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، با شناسه‌های آن‌ها (API خودکارسازی باید روشن باشد).
pause ID..., start ID... در برنامه در حال اجرا، دانلودهای فعال را مکث کنید، یا دانلودهای متوقف شده، در صف یا ناموفق را شروع (ادامه) کنید.
remove ID..., delete ID... دانلودها را از لیست برنامه در حال اجرا حذف کنید: remove فایل‌های آن‌ها را نگه می‌دارد، delete آن‌ها را نیز حذف می‌کند. یک دانلود در حال اجرا ابتدا مکث می‌شود (pause).
api on, api off API اتوماسیون برنامه در حال اجرا را روشن یا خاموش کنید.

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}

API اتوماسیون

برنامه‌های دیگر می‌توانند از برنامه در حال اجرا بپرسند که چه چیزی را دانلود می‌کند، و دانلودها را مکث، شروع، حذف یا پاک کنند. API به طور پیش‌فرض خاموش است؛ آن را با misterdownloadmanager-cli api on روشن کنید (و با api off خاموش کنید).

چگونه یک برنامه با MDM صحبت می‌کند

  1. هنگامی که 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 وجود دارد. فقط زمانی که API روشن است.
{"action": "pause", "ids": [3, 4]} بر اساس شناسه روی دانلودها عمل می‌کند: "pause"، "start"، "remove" (فایل نگه داشته می‌شود) یا "delete" (فایل نیز حذف می‌شود). پاسخ {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}؛ یک دانلود در حال اجرا باید قبل از حذف یا پاک شدن مکث شود. فقط زمانی که API روشن است.
{"api": true} / {"api": false} API را روشن یا خاموش می‌کند: {"api": true}.
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} یک دانلود اضافه می‌کند، همانطور که /d /p /f /n خط فرمان انجام می‌دهد ("later": true برابر است با /a)؛ ok. همچنین با خاموش بودن API، مانند خط فرمان.
{"start_queue": true} صف اصلی دانلود را شروع می‌کند؛ ok.

یک سوال یا عمل ناشناخته با {"error": "…"} پاسخ داده می‌شود، همانطور که یک سوال در حالی که API خاموش است (سپس با "code": "api-off"، برای بررسی برنامه‌ها: متن خطا ممکن است تغییر کند). یک توکن اشتباه با denied پاسخ داده می‌شود.

هر درخواست و پاسخ، فیلد به فیلد، در یک JSON Schema توضیح داده شده است: 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