MDM se puede controlar sin su ventana de tres maneras:
- La propia línea de comandos de la aplicación, los mismos modificadores que los de IDM: entregar una descarga a la aplicación en ejecución desde un script, un archivo por lotes u otro programa.
misterdownloadmanager-cli, una herramienta de línea de comandos independiente: descarga archivos, vídeos y torrents en un terminal, con progreso, sin la aplicación.- La API de automatización: otros programas listan las descargas de la aplicación en ejecución (como JSON) y las pausan, inician, eliminan o borran, a través de un canal local protegido por token. Los asistentes de IA lo usan a través del servidor MCP de MDM: consulta Asistentes de IA.
Los ejemplos usan rutas de Windows; en macOS y Linux los programas tienen los mismos nombres sin .exe.
La línea de comandos de la aplicación
misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
| Modificador | Qué hace |
|---|---|
/d URL |
La dirección a descargar. |
/p folder |
Guardarlo en esta carpeta (si no, la carpeta de la categoría de Opciones → Guardar en). |
/f name |
Guardarlo con este nombre. |
/a |
Añadirlo a la cola de descarga principal sin iniciarlo. |
/n |
Silencioso: sin ventana de Información del archivo de descarga, la descarga comienza (o se pone en cola, con /a) de inmediato. |
/s |
Iniciar la cola de descarga principal. |
/exit |
Guardar y cerrar la aplicación en ejecución (el instalador lo usa antes de una actualización). |
un archivo .torrent o un enlace magnet: |
Abrirlo en Añadir torrent (lo que Windows pasa cuando MDM abre torrents). |
Los modificadores pueden empezar con / o -, en cualquier caso. Si MDM se está ejecutando, el comando va a él; si no, MDM se inicia y lo ejecuta. Por ejemplo:
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
Viene con cada descarga de MDM, junto a la aplicación (el instalador lo pone en la carpeta de MDM). Funciona por sí solo: la aplicación no necesita ejecutarse, excepto para status y api.
| Comando | Qué hace |
|---|---|
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] |
Descarga un archivo con hasta 8 conexiones (-c, de 1 a 128), mostrando el progreso. Ctrl+C lo pausa; resume lo continúa. --checksum comprueba el archivo terminado: MD5 hexadecimal, SHA-1, SHA-256, SHA-512 o CRC32, opcionalmente con nombre (sha256:…). |
resume file.mdm.json [-c connections] [-H ...] |
Continuar una descarga pausada o rota desde el archivo .mdm.json que está junto a ella. |
video-info URL |
Qué vídeo contiene una página (YouTube, Vimeo, ...), y las calidades a elegir. |
video-get URL [-f selector] [-o folder] |
Descargar un vídeo; -f toma el selector de calidad de video-info (b = el mejor archivo único). |
install-ytdlp, install-ffmpeg |
Instalar o actualizar los ayudantes que necesitan los vídeos: yt-dlp (verificado con su clave de firma) y ffmpeg (Windows; en macOS y Linux MDM usa los del sistema). |
torrent-info SOURCE |
El nombre de un torrent, los archivos (numerados) y el tamaño; SOURCE es un enlace magnet o un archivo .torrent. |
torrent-get SOURCE [-o folder] [--files 0,2] |
Descargar un torrent, o solo algunos de sus archivos. |
torrent-create PATH -o file.torrent |
Crear un .torrent de un archivo o carpeta (los pares lo encuentran a través de la DHT). |
status |
Las descargas de la aplicación en ejecución, como JSON, con sus ID (la API de automatización debe estar activada). |
pause ID..., start ID... |
Pausar las descargas en curso, o iniciar (reanudar) las detenidas, en cola o fallidas, en la aplicación en ejecución. |
remove ID..., delete ID... |
Quitar descargas de la lista de la aplicación en ejecución: remove mantiene sus archivos, delete también los elimina. Una descarga en curso se pausa primero (pause). |
api on, api off |
Activar o desactivar la API de automatización de la aplicación en ejecución. |
misterdownloadmanager-cli help <command>muestra todas las opciones. Un comando que falla (la aplicación no se está ejecutando, responde con un error, una descarga se interrumpe) sale con el código 1. Por ejemplo:
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 para scripts y programas
Con --json (antes o después del comando), cada comando imprime JSON en lugar de texto, un objeto por línea, para que los scripts y agentes de IA lo lean:
| Comando | Imprime |
|---|---|
get, resume |
Una línea {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} cada medio segundo, luego {"event": "done", "path", "size", "seconds"}, o {"event": "paused", "state"} después de Ctrl+C (state es el archivo que resume toma). |
video-get |
{"event": "progress", "downloaded", "size", "speed"}líneas, luego {"event": "done", "path"}. |
torrent-get |
{"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}líneas, luego {"event": "done", "path", "size"}, o {"event": "stopped", "downloaded", "seconds"} con --seconds. |
video-info |
{"title", "choices": [{"label", "format", "size"}]}; el format de una opción es lo que video-get -f toma. |
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 |
La respuesta de la aplicación, que ya es JSON (ver más abajo). |
Los tamaños están en bytes (null mientras se desconoce), las velocidades en bytes por segundo. Un fallo imprime {"error": "…"} y sale con el código 1. Por ejemplo:
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}
La API de automatización
Otros programas pueden preguntar a la aplicación en ejecución qué está descargando, y pausar, iniciar, eliminar o borrar descargas. La API está desactivada por defecto; actívela con misterdownloadmanager-cli api on (y desactívela con api off).
Cómo un programa se comunica con MDM
- Mientras se ejecuta, MDM escucha en un puerto de
127.0.0.1(solo en este equipo) y escribe el puerto y un token secreto enipc.jsonen su carpeta de datos: - Windows:%APPDATA%\misterdownloadmanager\ipc.json- macOS:~/Library/Application Support/misterdownloadmanager/ipc.json- Linux:~/.local/share/misterdownloadmanager/ipc.json- Una copia portable:data\ipc.jsonjunto al programa.
El token cambia en cada inicio; solo los programas que pueden leer su carpeta de datos (la suya) pueden usarlo. 2. Conéctese a ese puerto y envíe una línea de JSON: el token y los campos del comando, por ejemplo {"token": "<token>", "query": "list"}. 3. MDM responde con una línea: ok para un comando, o un objeto JSON para una pregunta.
Qué entiende
Campos (además de token) |
Respuesta |
|---|---|
{"query": "list"} |
Cada descarga y la velocidad total: {"downloads": [{"id", "file", "url", "path", "status", "size", "downloaded", "speed", "added", "error"}], "speed": bytes per second}. status es Queued, Downloading, Stopped, Complete o Error; size es null mientras se desconoce; error (por qué falló) solo está presente para una descarga en Error. Solo mientras la API esté activada. |
{"action": "pause", "ids": [3, 4]} |
Actúa sobre las descargas por ID: "pause", "start", "remove" (archivo conservado) o "delete" (archivo también eliminado). Responde {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}; una descarga en curso debe pausarse antes de ser eliminada o borrada. Solo mientras la API esté activada. |
{"api": true} / {"api": false} |
Activa o desactiva la API: {"api": true}. |
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} |
Añade una descarga, como hacen los /d /p /f /n de la línea de comandos ("later": true es /a); ok. También con la API desactivada, como la línea de comandos. |
{"start_queue": true} |
Inicia la cola principal de descargas; ok. |
Una pregunta o acción desconocida se responde {"error": "…"}, al igual que una pregunta mientras la API está desactivada (entonces con "code": "api-off", para que los programas comprueben: el texto del error puede cambiar). Un token incorrecto se responde denied.
Cada solicitud y respuesta se describe, campo por campo, en un esquema JSON: automation-api.schema.json (también en https://misterdownloadmanager.com/automation-api.schema.json). Se genera a partir del código con el que responde la aplicación, por lo que se mantiene exacto; los programas pueden verificar lo que envían y leen con él, o generar sus tipos a partir de él.
Ejemplos
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"])
Para añadir una descarga, envía {"token": "…", "url": "https://example.com/a.zip", "silent": true}.
Gratis, código abierto, sin anuncios, sin prueba.
Descargar Mister Download Manager