Mister Download Manager
  1. Главная
  2. Справка
  3. Командная строка и автоматизация

Командная строка и автоматизация

MDM можно управлять без его окна тремя способами:

  • Собственная командная строка приложения, те же параметры, что и у IDM: передайте загрузку запущенному приложению из скрипта, пакетного файла или другой программы.
  • misterdownloadmanager-cli, отдельный инструмент командной строки: загружайте файлы, видео и торренты в терминале, с отображением прогресса, без приложения.
  • API автоматизации: другие программы выводят список загрузок запущенного приложения (в формате JSON) и ставят их на паузу, запускают, удаляют или стирают их через локальный, защищенный токеном канал. AI-помощники используют его через сервер MCP MDM: см. AI-помощники.

В примерах используются пути 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 — это magnet-ссылка или файл .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]} Действует на загрузки по id: "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