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

Linha de comando e automação

O MDM pode ser executado sem sua janela de três maneiras:

  • A própria linha de comando do aplicativo, os mesmos parâmetros do IDM: entregue um download ao aplicativo em execução a partir de um script, um arquivo em lote ou outro programa.
  • misterdownloadmanager-cli, uma ferramenta de linha de comando separada: baixe arquivos, vídeos e torrents em um terminal, com progresso, sem o aplicativo.
  • A API de automação: outros programas listam os downloads do aplicativo em execução (como JSON) e os pausam, iniciam, removem ou excluem, por meio de um canal local protegido por token. Assistentes de IA o usam 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 comando do aplicativo

misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
Parâmetro O que faz
/d URL O endereço para baixar.
/p folder Salve-o nesta pasta (caso contrário, a pasta da categoria em Opções → Salvar em).
/f name Salve-o com este nome.
/a Adicione-o à fila de download principal sem iniciá-lo.
/n Silencioso: nenhuma janela de Informações do Arquivo de Download, o download começa (ou é enfileirado, com /a) imediatamente.
/s Inicie a fila de download principal.
/exit Salve e feche o aplicativo em execução (o instalador o usa antes de uma atualização).
um arquivo .torrent ou link magnet: Abra-o 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 o executa. 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

Ele vem com cada download do MDM, ao lado do aplicativo (o instalador o coloca na pasta do MDM). Ele funciona sozinho: o aplicativo não precisa 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] Baixa um arquivo com até 8 conexões (-c, de 1 a 128), mostrando o progresso. Ctrl+C pausa; resume continua. --checksum verifica o arquivo finalizado: MD5 hexadecimal, SHA-1, SHA-256, SHA-512 ou CRC32, opcionalmente nomeado (sha256:…).
resume file.mdm.json [-c connections] [-H ...] Continue um download pausado ou interrompido a partir do arquivo .mdm.json ao lado dele.
video-info URL Qual vídeo uma página contém (YouTube, Vimeo, ...), e as qualidades para escolher.
video-get URL [-f selector] [-o folder] Baixe um vídeo; -f pega o seletor de qualidade de video-info (b = o melhor arquivo único).
install-ytdlp, install-ffmpeg Instale ou atualize os auxiliares que os vídeos precisam: yt-dlp (verificado contra sua chave de assinatura) e ffmpeg (Windows; no macOS e Linux o MDM usa o do sistema).
torrent-info SOURCE Nome, arquivos (numerados) e tamanho de um torrent; SOURCE é um link magnet ou um arquivo .torrent.
torrent-get SOURCE [-o folder] [--files 0,2] Baixe um torrent, ou apenas alguns de seus arquivos.
torrent-create PATH -o file.torrent Crie um .torrent de um arquivo ou pasta (os pares o encontram através do DHT).
status Os downloads do aplicativo em execução, como JSON, com seus IDs (a API de automação deve estar ativada).
pause ID..., start ID... Pausa downloads em andamento, ou inicia (retoma) downloads parados, em fila ou que falharam, no aplicativo em execução.
remove ID..., delete ID... Remove downloads da lista do aplicativo em execução: remove mantém os arquivos, delete também os apaga. Um download em andamento é pausado primeiro (pause).
api on, api off Ativa ou desativa a API de automação do aplicativo em execução.

misterdownloadmanager-cli help <command>mostra todas as opções. Um comando que falha (o aplicativo não está em execução, ele responde com um erro, um download é interrompido) sai 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 arquivo 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 do aplicativo, que já é JSON (veja abaixo).

Os tamanhos são em bytes (null enquanto desconhecido), as velocidades em bytes por segundo. Uma falha imprime {"error": "…"} e sai 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 automação

Outros programas podem perguntar ao aplicativo em execução o que ele está baixando e pausar, iniciar, remover ou excluir downloads. A API está desativada por padrão; ative-a com misterdownloadmanager-cli api on (e desative-a com api off).

Como um programa se comunica com o MDM

  1. Enquanto executa, o MDM escuta em uma porta de 127.0.0.1 (somente neste computador) e escreve a porta e um token secreto em ipc.json em 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 inicialização; somente programas que podem ler 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 download 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) está presente apenas para um download em Error. Somente enquanto a API estiver ativada.
{"action": "pause", "ids": [3, 4]} Atua em downloads por ID: "pause", "start", "remove" (arquivo mantido) ou "delete" (arquivo também excluído). Responde {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}; um download em execução deve ser pausado antes de ser removido ou excluído. Somente 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 um download, como o /d /p /f /n da linha de comando faz ("later": true é /a); ok. Também com a API desativada, como a linha de comando.
{"start_queue": true} Inicia a fila principal de downloads; ok.

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

Cada solicitação e resposta é descrita, campo por campo, em um JSON Schema: automation-api.schema.json (também em https://misterdownloadmanager.com/automation-api.schema.json). Ele é feito a partir do código com o qual o aplicativo responde, então permanece exato; os programas podem verificar o que enviam e leem em relação a ele, ou gerar 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 um download, envie {"token": "…", "url": "https://example.com/a.zip", "silent": true}.

Gratuito, de código aberto, sem anúncios, sem período de teste.

Baixar Mister Download Manager