Mister Download Manager
  1. Início
  2. Ajuda
  3. Linha de comandos e automação

Linha de comandos e automação

O MDM pode ser controlado sem a sua janela de três formas:

  • A linha de comandos da própria aplicação, os mesmos parâmetros do IDM: entregar uma transferência à aplicação em execução a partir de um script, um ficheiro batch ou outro programa.
  • misterdownloadmanager-cli, uma ferramenta de linha de comandos separada: transferir ficheiros, vídeos e torrents num terminal, com progresso, sem a aplicação.
  • A API de automação: outros programas listam as transferências da aplicação em execução (como JSON) e pausam, iniciam, removem ou apagam-nas, através de um canal local protegido por token. Os assistentes de IA usam-no através do servidor MCP do MDM: consulte Assistentes de IA.

Os exemplos usam caminhos do Windows; no macOS e Linux os programas têm os mesmos nomes sem .exe.

A linha de comandos da aplicação

misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
Parâmetro O que faz
/d URL O endereço a transferir.
/p folder Guardar nesta pasta (caso contrário, a pasta da categoria de Opções → Guardar em).
/f name Guardar com este nome.
/a Adicionar à fila de transferência principal sem iniciar.
/n Silencioso: sem janela de Informações do Ficheiro de Transferência, a transferência começa (ou é adicionada à fila, com /a) de imediato.
/s Iniciar a fila de transferência principal.
/exit Guardar e fechar a aplicação em execução (o instalador usa-o antes de uma atualização).
um ficheiro .torrent ou link magnet: Abrir em Adicionar torrent (o que o Windows passa quando o MDM abre torrents).

Os parâmetros podem começar com / ou -, em qualquer caso. Se o MDM estiver em execução, o comando vai para ele; se não, o MDM inicia e executa-o. Por exemplo:

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

Vem com cada transferência do MDM, ao lado da aplicação (o instalador coloca-o na pasta do MDM). Funciona por si só: a aplicação não precisa de estar em execução, exceto para status e api.

Comando O que faz
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] Transferir um ficheiro com até 8 ligações (-c, 1 a 128), mostrando o progresso. Ctrl+C pausa-o; resume continua. --checksum verifica o ficheiro terminado: hex MD5, SHA-1, SHA-256, SHA-512 ou CRC32, opcionalmente nomeado (sha256:…).
resume file.mdm.json [-c connections] [-H ...] Continuar uma transferência pausada ou interrompida a partir do ficheiro .mdm.json ao lado.
video-info URL Que vídeo uma página contém (YouTube, Vimeo, ...), e as qualidades a escolher.
video-get URL [-f selector] [-o folder] Transferir um vídeo; -f usa um seletor de qualidade de video-info (b = o melhor ficheiro único; mp3:320, mp3:256, mp3:192 ou mp3:128 = o som como MP3 nessa taxa de bits, mp3:0 na sua melhor taxa variável; MP3 precisa de ffmpeg).
install-ytdlp, install-ffmpeg Instalar ou atualizar os auxiliares que os vídeos precisam: yt-dlp (verificado contra a sua chave de assinatura) e ffmpeg (Windows; no macOS e Linux o MDM usa os do sistema).
torrent-info SOURCE Nome de um torrent, ficheiros (numerados) e tamanho; SOURCE é um link magnet ou um ficheiro .torrent.
torrent-get SOURCE [-o folder] [--files 0,2] [--use-existing] Transferir um torrent, ou apenas alguns dos seus ficheiros. Se alguns dos seus ficheiros já estiverem na pasta, ele para e nomeia-os; --use-existing usa-os em vez disso (o que corresponde é mantido, o resto transferido).
torrent-create PATH -o file.torrent Criar um .torrent de um ficheiro ou pasta (os pares encontram-no através do DHT).
status As transferências da aplicação em execução, como JSON, com os seus IDs (a API de automação deve estar ativada).
pause ID..., start ID... Interrompe as transferências em curso, ou inicia (retoma) as que estão paradas, em fila ou falhadas, na aplicação em execução.
remove ID..., delete ID... Remove transferências da lista da aplicação em execução: remove mantém os ficheiros, delete também os apaga. Uma transferência em curso é primeiro interrompida (pause).
api on, api off Ativa ou desativa a API de automatização da aplicação em execução.

misterdownloadmanager-cli help <command>mostra todas as opções. Um comando que falha (a aplicação não está em execução, responde com um erro, uma transferência falha) termina com o código 1. Por exemplo:

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 e programas

Com --json (antes ou depois do comando), cada comando imprime JSON em vez de texto, um objeto por linha, para scripts e agentes de IA lerem:

Comando Imprime
get, resume Uma linha {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} a cada meio segundo, depois {"event": "done", "path", "size", "seconds"}, ou {"event": "paused", "state"} após Ctrl+C (state é o ficheiro que resume usa).
video-get {"event": "progress", "downloaded", "size", "speed"}linhas, depois {"event": "done", "path"}.
torrent-get {"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}linhas, depois {"event": "done", "path", "size"}, ou {"event": "stopped", "downloaded", "seconds"} com --seconds.
video-info {"title", "choices": [{"label", "format", "size"}]}; o format de uma escolha é o que video-get -f usa.
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 A resposta da aplicação, que já é JSON (ver abaixo).

Os tamanhos são em bytes (null enquanto desconhecido), as velocidades em bytes por segundo. Uma falha imprime {"error": "…"} e termina com o código 1. Por exemplo:

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}

A API de automatização

Outros programas podem perguntar à aplicação em execução o que está a transferir e interromper, iniciar, remover ou apagar transferências. A API está desativada por predefinição; ative-a com misterdownloadmanager-cli api on (e desative-a com api off).

Como um programa comunica com o MDM

  1. Enquanto está em execução, o MDM escuta numa porta de 127.0.0.1 (apenas neste computador) e escreve a porta e um token secreto para ipc.json na sua pasta de dados: - Windows: %APPDATA%\misterdownloadmanager\ipc.json - macOS: ~/Library/Application Support/misterdownloadmanager/ipc.json - Linux: ~/.local/share/misterdownloadmanager/ipc.json - Uma cópia portátil: data\ipc.json ao lado do programa.

O token muda a cada início; apenas programas que podem ler a sua pasta de dados (a sua) podem usá-lo. 2. Conecte-se a essa porta e envie uma linha de JSON: o token e os campos do comando, por exemplo {"token": "<token>", "query": "list"}. 3. O MDM responde com uma linha: ok para um comando, ou um objeto JSON para uma pergunta.

O que ele entende

Campos (além de token) Resposta
{"query": "list"} Cada transferência e a velocidade total: {"downloads": [{"id", "file", "url", "path", "status", "size", "downloaded", "speed", "added", "error"}], "speed": bytes per second}. status é Queued, Downloading, Stopped, Complete ou Error; size é null enquanto desconhecido; error (por que falhou) só está presente para uma transferência em Error. Apenas enquanto a API estiver ativada.
{"action": "pause", "ids": [3, 4]} Atua sobre as transferências por ID: "pause", "start", "remove" (ficheiro mantido) ou "delete" (ficheiro também apagado). Responde {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}; uma transferência em curso deve ser interrompida antes de ser removida ou apagada. Apenas enquanto a API estiver ativada.
{"api": true} / {"api": false} Ativa ou desativa a API: {"api": true}.
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} Adiciona uma transferência, como o /d /p /f /n da linha de comandos ("later": true é /a); ok. Também com a API desativada, como a linha de comandos.
{"start_queue": true} Inicia a fila de transferências principal; ok.

Uma pergunta ou ação desconhecida é respondida com {"error": "…"}, assim como uma pergunta enquanto a API está desativada (então com "code": "api-off", para os programas verificarem: o texto do erro pode mudar). Um token errado é respondido com denied.

Cada pedido e resposta é descrito, campo a campo, num JSON Schema: automation-api.schema.json (também em https://misterdownloadmanager.com/automation-api.schema.json). É feito a partir do código com que a aplicação responde, para que se mantenha exato; os programas podem verificar o que enviam e leem em relação a ele, ou gerar os seus tipos a partir dele.

Exemplos

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 adicionar uma transferência, envie {"token": "…", "url": "https://example.com/a.zip", "silent": true}.

Gratuito, de código aberto, sem anúncios, sem período de avaliação.

Transferir Mister Download Manager