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

Linha de comando e automação

GDM can be driven without its window in three ways:

  • 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: baixar arquivos, vídeos e torrents pelo terminal, com indicador de progresso e sem abrir o aplicativo.
  • The automation API: other programs list the running app's downloads (as JSON) and pause, start, remove or delete them, over a local, token-protected channel. AI assistants use it through GDM's MCP server: see AI assistants.

To run the whole app without a window, on a home server or a NAS, see Run GDM on a server (misterdownloadmanager --headless); to control it from a phone, Control GDM from your phone.

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).
/startup Start in the notification area, the window hidden: what Launch GolinksPRO Download Manager on startup starts GDM with when you sign in. Where no notification area shows GDM's icon (some Linux desktops), GDM starts minimized. A running GDM stays as it is.
um arquivo .torrent ou link magnet: Open it in Add torrent (what Windows passes when GDM opens torrents).

Switches can start with / or -, in any case. If GDM is running, the command goes to it; if not, GDM starts and carries it out. For example:

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

It comes with every download of GDM, next to the app (the installer puts it in GDM's folder). It works on its own: the app needn't run, except for status and api.

Comando O que faz
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] [--dns choice] [--adapter name] 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:…). --dns escolhe o DNS: system (o padrão); um serviço e como solicitá-lo, cloudflare-https, quad9-tls, google-plain, adguard-https, nextdns-tls; endereços de servidores DNS, 9.9.9.9,149.112.112.112; ou um endereço DNS-over-HTTPS. Nunca retorna ao DNS do sistema. --adapter envia cada conexão por um adaptador de rede, pelo seu nome (Ethernet, wg0) ou um de seus endereços; quando não está conectado, nada é enviado e o download falha. Um link de um host de arquivo que uma de suas contas de desbridamento (Opções → Contas) suporta passa por essa conta, como no aplicativo, e get diz through Real-Debrid; --direct baixa o próprio endereço (Contas de serviço de desbridamento).
resume file.mdm.json [-c connections] [-H ...] [--direct] Continua um download pausado ou interrompido a partir do arquivo .mdm.json ao lado dele. Através de uma conta de desbridamento, como get: o serviço fornece um novo link quando o antigo expirou; --direct continua a partir do próprio endereço.
install-gallery-dl Instala ou atualiza o gallery-dl, para galerias de imagens: a lista de somas de verificação é verificada com a chave de assinatura do autor, o programa com essa lista (Windows e Linux x86-64; em outros sistemas, instale você mesmo).
gallery-get URL [-o folder] [--limit N] [--adapter name] Baixar as imagens de uma galeria (uma categoria do Wikimedia Commons, um álbum do Flickr, ...) para uma pasta com o nome da galeria dentro de -o; --limit limita a quantidade ao número indicado, começando pelas primeiras imagens listadas pelo site. Ao executar novamente, busca apenas as imagens novas. --adapter direciona as conexões do gallery-dl por um adaptador de rede, como em get.
video-info URL Quais vídeos uma página contém (YouTube, Vimeo, ...) e as qualidades disponíveis.
playlist-info URL [--from N] [--count N] Vídeos de uma playlist ou canal, um por linha, na ordem em que aparecem na lista: posição, duração, título e endereço.
playlist-get URL [-f selector] [-o folder] [--from N] [--count N] Baixar os vídeos de uma playlist ou canal um após o outro, em uma pasta com o nome da lista dentro de -o. -f define uma qualidade para todos, como em video-get (por padrão, a melhor de cada vídeo; bv*[height<=720]+ba/b[height<=720] = até 720p; ba = o áudio original; mp3:320, opus:, flac: como em video-get).
video-get URL [-f selector] [-o folder] [--subs langs] [--auto-subs] [--embed-subs] [--adapter name] Baixa um vídeo; -f pega um seletor de qualidade de video-info (b = o melhor arquivo único; ba = apenas o áudio como o site o tem, não convertido; mp3:320, mp3:256, mp3:192 ou mp3:128 = o áudio como MP3 nessa taxa de bits, mp3:0 na sua melhor taxa variável; opus: = como Opus; flac: = como FLAC, sem perdas, mas não melhor que o áudio do site; as conversões precisam do ffmpeg). --subs salva legendas ao lado: códigos de idioma de video-info (en,fr), ou all para cada uma que o uploader forneceu; --auto-subs pega as legendas automáticas do site em vez disso; --embed-subs as coloca no vídeo (precisa do ffmpeg, MP4 ou MKV). --adapter envia as conexões do yt-dlp (e do ffmpeg) por um adaptador de rede, como para get; quando não está conectado, nada começa.
install-ytdlp, install-ffmpeg Install or update the helpers videos need: yt-dlp (checked against its signing key) and ffmpeg (Windows; on macOS and Linux GDM uses the system's).
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] [--use-existing] Baixar um torrent ou apenas alguns de seus arquivos. Se alguns arquivos já estiverem na pasta, o download é interrompido e os nomes desses arquivos são exibidos; --use-existing usa esses arquivos (os que correspondem são mantidos, e os demais são baixados).
torrent-create PATH -o file.torrent Criar um .torrent de um arquivo ou pasta (os pares o encontram pela DHT).
status Os downloads do aplicativo em execução, em JSON, com seus IDs (a API de automação deve estar ativada).
pause ID..., start ID... Pausar downloads em andamento ou iniciar (retomar) downloads parados, na fila ou com falha 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 {"event": "through", "service"}primeiro quando o download passa por uma conta de desbridamento, depois 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, então {"event": "done", "path", "subtitles", "subtitle_problems"}: os arquivos de legenda salvos ao lado, e os idiomas que o site recusou ({"code", "name", "reason", "beside"}; beside: eles vieram em uma segunda tentativa, ao lado do vídeo em vez de dentro dele).
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"}], "subtitles": [{"code", "name", "automatic"}]}; o format de uma escolha é o que video-get -f pega, o code de uma legenda é o que --subs pega.
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).

How a program talks to GDM

  1. While it runs, GDM listens on a port of 127.0.0.1 (this computer only) and writes the port and a secret token to ipc.json in its data folder: - Windows: %APPDATA%\misterdownloadmanager\ipc.json - macOS: ~/Library/Application Support/misterdownloadmanager/ipc.json - Linux: ~/.local/share/misterdownloadmanager/ipc.json - A portable copy: data\ipc.json next to the program.

The token changes at every start; only programs that can read your data folder (yours) can use it. 2. Connect to that port and send one line of JSON: the token and the command's fields, e.g. {"token": "<token>", "query": "list"}. 3. GDM answers with one line: ok for a command, or a JSON object for a question.

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", "category", "error"}], "speed": bytes per second, "queues": [{"name", "running", "ids"}], "categories": [{"key", "name"}], "free": bytes}. status é Queued, Downloading, Stopped, Complete ou Error; size é null enquanto desconhecido; error (por que falhou) só existe para um download em Error; category é o key de uma categoria; free é o espaço livre onde os downloads são salvos (null quando desconhecido). 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.
{"action": "start_queue", "queue": "Main download queue"} Inicia (ou com "stop_queue", para) a fila com esse nome (um nome do queues da lista). Responde {"done": [], "skipped": []}, ou {"error": …, "code": "unknown-queue"}. 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. "category" (uma chave do categories da lista) o coloca na pasta dessa categoria em vez daquela que seu tipo escolhe; "queue" (o nome de uma fila) é a fila em que ele espera com "later". 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.

Download GolinksPRO Download Manager