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
- Enquanto executa, o MDM escuta em uma porta de
127.0.0.1(somente neste computador) e escreve a porta e um token secreto emipc.jsonem 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.jsonao 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