Mister Download Manager
  1. Inicio
  2. Ayuda
  3. Línea de comandos y automatización

Línea de comandos y automatización

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

  1. 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 en ipc.json en 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.json junto 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