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). Вона створена з коду, яким відповідає програма, тому залишається точною; програми можуть перевіряти те, що вони надсилають і читають, або генерувати свої типи з неї.

Приклади

PowerShell (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()

Python:

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