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

Linha de comandos e automação

GDM can be driven without its window in three ways:

  • 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.
  • 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 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).
/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 ficheiro .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] Transfere um ficheiro com até 8 ligações (-c, 1 a 128), mostrando o progresso. Ctrl+C pausa-o; resume continua. --checksum verifica o ficheiro concluído: MD5 hexadecimal, SHA-1, SHA-256, SHA-512 ou CRC32, opcionalmente nomeado (sha256:…). --dns escolhe o DNS: system (o predefinido); um serviço e como o solicitar, 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 recorre ao DNS do sistema. --adapter envia cada ligação através de um adaptador de rede, pelo seu nome (Ethernet, wg0) ou um dos seus endereços; quando não está ligado, nada é enviado e a transferência falha. Uma ligação de um anfitrião de ficheiros que uma das suas contas de desbridamento (Opções → Contas) suporta passa por essa conta, como na aplicação, e get diz through Real-Debrid; --direct transfere o próprio endereço (Contas de serviço de desbridamento).
resume file.mdm.json [-c connections] [-H ...] [--direct] Continua uma transferência pausada ou interrompida a partir do ficheiro .mdm.json ao lado. Através de uma conta de desbridamento, como get: o serviço dá uma nova ligação quando a antiga expirou; --direct continua a partir do próprio endereço.
install-gallery-dl Instalar ou atualizar o gallery-dl, para galerias de imagens: a sua lista de somas de verificação é verificada em relação à chave de assinatura do autor, o programa em relação a essa lista (Windows e Linux x86-64; noutros sistemas, instale-o você mesmo).
gallery-get URL [-o folder] [--limit N] [--adapter name] Transfere 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 transfere no máximo esse número de imagens, as primeiras que o site lista. Se for iniciado novamente, só transfere as novas. --adapter envia as ligações do gallery-dl através de um adaptador de rede, tal como para get.
video-info URL Que vídeo uma página contém (YouTube, Vimeo, ...), e as qualidades a escolher.
playlist-info URL [--from N] [--count N] Os vídeos de uma lista de reprodução ou canal, um por linha, pela ordem em que aparecem: a sua posição, duração, título e endereço.
playlist-get URL [-f selector] [-o folder] [--from N] [--count N] Transfere os vídeos de uma lista de reprodução ou canal, um após o outro, para uma pasta com o nome da lista dentro de -o. -f é uma qualidade para todos, como para video-get (por predefinição, a melhor de cada vídeo; bv*[height<=720]+ba/b[height<=720] = até 720p; ba = o som original; mp3:320, opus:, flac: como para video-get).
video-get URL [-f selector] [-o folder] [--subs langs] [--auto-subs] [--embed-subs] [--adapter name] Transfere um vídeo; -f usa um seletor de qualidade de video-info (b = o melhor ficheiro único; ba = apenas o áudio como está no site, sem conversão; mp3:320, mp3:256, mp3:192 ou mp3:128 = o áudio como MP3 com essa taxa de bits, mp3:0 com a melhor taxa de bits variável; opus: = como Opus; flac: = como FLAC, sem perdas, mas não melhor do que o áudio do site; as conversões precisam do ffmpeg). --subs guarda as legendas ao lado: códigos de idioma de video-info (en,fr), ou all para todas as que o carregador forneceu; --auto-subs usa as legendas automáticas do site; --embed-subs coloca-as no vídeo (precisa do ffmpeg, MP4 ou MKV). --adapter envia as ligações do yt-dlp (e do ffmpeg) através de um adaptador de rede, tal como para get; quando não está ligado, 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 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 {"event": "through", "service"}primeiro quando a transferência 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 ficheiro que resume usa).
video-get {"event": "progress", "downloaded", "size", "speed"}linhas, depois {"event": "done", "path", "subtitles", "subtitle_problems"}: os ficheiros de legendas guardados ao lado, e os idiomas que o site recusou ({"code", "name", "reason", "beside"}; beside: vieram numa 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 usa, o code de uma legenda é o que --subs 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).

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 transferência 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 uma transferência em Error; category é o key de uma categoria; free é o espaço livre onde as transferências são guardadas (null quando desconhecido). Apenas enquanto a API estiver ativa.
{"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.
{"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"}. Apenas enquanto a API estiver ativa.
{"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 faz ("later": true é /a); ok. "category" (uma chave do categories da lista) coloca-a na pasta dessa categoria em vez daquela que o seu tipo escolhe; "queue" (o nome de uma fila) é a fila em que espera com "later". 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.

Download GolinksPRO Download Manager