Mister Download Manager
  1. 主页
  2. 帮助
  3. 命令行和自动化

命令行和自动化

MDM 可以在不显示窗口的情况下通过以下三种方式运行:

  • 应用程序自己的命令行,与 IDM 的开关相同:从脚本、批处理文件或另一个程序将下载任务交给正在运行的应用程序。
  • misterdownloadmanager-cli,一个单独的命令行工具:在终端中下载文件、视频和种子,显示进度,无需应用程序。
  • 自动化 API:其他程序通过本地、受令牌保护的通道列出正在运行的应用程序的下载(以 JSON 格式),并暂停、开始、移除或删除它们。AI 助手通过 MDM 的 MCP 服务器使用它:请参阅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 是磁力链接或 .torrent 文件。
torrent-get SOURCE [-o folder] [--files 0,2] 下载种子,或仅下载其部分文件。
torrent-create PATH -o file.torrent 制作文件或文件夹的 .torrent(对等点通过 DHT 找到它)。
status 正在运行的应用程序的下载,以 JSON 格式显示,包含其 ID(自动化 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 而不是文本,每行一个对象,供脚本和 AI 代理读取:

命令 打印
get, resume 每半秒一行 {"event": "progress", "downloaded", "size", "speed", "connections", "segments"},然后是 {"event": "done", "path", "size", "seconds"},或者在 Ctrl+C 之后是 {"event": "paused", "state"}(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"},或者 --seconds 的 {"event": "stopped", "downloaded", "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。

当 API 关闭时,未知的问题或操作会得到{"error": "…"}的回答(此时会显示"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