GolinksPRO Download Manager
  1. 홈
  2. 도움말
  3. 명령줄 및 자동화

명령줄 및 자동화

GDM can be driven without its window in three ways:

  • 앱의 명령줄은 IDM과 같은 스위치를 사용합니다. 스크립트, 배치 파일 또는 다른 프로그램에서 실행 중인 앱에 다운로드를 전달할 수 있습니다.
  • misterdownloadmanager-cli는 별도의 명령줄 도구입니다. 앱을 실행하지 않고 터미널에서 진행 상황을 확인하며 파일, 동영상, 토렌트를 다운로드할 수 있습니다.
  • 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.

예시에서는 Windows 경로를 사용합니다. macOS 및 Linux에서는 프로그램 이름이 .exe 없이 동일합니다.

앱의 명령줄

misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
스위치 기능
/d URL 다운로드할 주소입니다.
/p folder 이 폴더에 저장합니다 (그렇지 않으면 옵션 → 저장 위치에서 카테고리 폴더에 저장됩니다).
/f name 이 이름으로 저장합니다.
/a 시작하지 않고 메인 다운로드 대기열에 추가합니다.
/n 자동: 파일 정보 다운로드 창이 나타나지 않으며, 다운로드가 즉시 시작됩니다 (또는 /a와 함께 대기열에 추가됩니다).
/s 메인 다운로드 대기열을 시작합니다.
/exit 실행 중인 앱을 저장하고 닫습니다 (설치 프로그램이 업그레이드 전에 사용합니다).
/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.
a .torrent 파일 또는 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.

명령 기능
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] [--dns choice] [--adapter name] 진행 상황을 표시하며 최대 8개 연결(-c, 1~128)로 파일을 다운로드합니다. Ctrl+C로 일시 중지하고 resume로 계속합니다. --checksum는 다운로드가 완료된 파일의 MD5, SHA-1, SHA-256, SHA-512 또는 CRC32 체크섬을 16진수로 확인합니다. 체크섬 이름은 선택 사항입니다(sha256:…). --dns는 DNS를 선택합니다. system(기본값), 서비스와 요청 방법(cloudflare-https, quad9-tls, google-plain, adguard-https, nextdns-tls), DNS 서버 주소(9.9.9.9,149.112.112.112) 또는 DNS-over-HTTPS 주소를 선택할 수 있습니다. 시스템 DNS로 전환하지 않습니다. --adapter는 지정된 이름(Ethernet, wg0)이나 주소 중 하나를 사용해 모든 연결을 단일 네트워크 어댑터로 보냅니다. 어댑터가 연결되지 않으면 아무것도 전송되지 않고 다운로드가 실패합니다. 파일 호스트 링크가 디브리드 서비스 계정 중 하나에서 지원되면 앱에서처럼 해당 계정을 통해 다운로드합니다(옵션 → 계정). get는 through Real-Debrid를 나타내고, --direct는 주소 자체를 다운로드합니다(디브리드 서비스 계정).
resume file.mdm.json [-c connections] [-H ...] [--direct] .mdm.json 파일 옆에 있는 일시 중지되거나 손상된 다운로드를 계속합니다. get와 같이 디브리드 계정을 통해: 서비스는 이전 링크가 만료되면 새 링크를 제공합니다. --direct는 주소 자체에서 계속합니다.
install-gallery-dl 이미지 갤러리용 gallery-dl을 설치하거나 업데이트합니다. 체크섬 목록은 작성자의 서명 키로 확인하고, 프로그램은 해당 목록으로 확인합니다(Windows 및 Linux x86-64에서 지원되며, 그 외 환경에서는 직접 설치해야 합니다).
gallery-get URL [-o folder] [--limit N] [--adapter name] 갤러리(예: Wikimedia Commons 카테고리, Flickr 앨범)의 사진을 -o 안에 갤러리 이름으로 폴더를 만들어 다운로드합니다. --limit로 최대 개수를 지정하면 사이트에 표시된 첫 사진부터 그 개수만큼 다운로드합니다. 다시 실행하면 새 사진만 가져옵니다. --adapter는 get와 마찬가지로 gallery-dl의 연결을 단일 네트워크 어댑터로 보냅니다.
video-info URL 페이지에 있는 동영상(YouTube, Vimeo 등)과 선택할 수 있는 화질을 표시합니다.
playlist-info URL [--from N] [--count N] 재생목록이나 채널의 동영상 정보를 사이트에 표시된 순서대로 한 줄씩 표시합니다. 항목 위치, 길이, 제목, 주소가 포함됩니다.
playlist-get URL [-f selector] [-o folder] [--from N] [--count N] 재생목록이나 채널의 동영상을 차례로 다운로드하고, -o 안에 목록 이름으로 폴더를 만듭니다. -f로 모든 동영상에 동일한 화질을 지정할 수 있습니다(video-get와 같습니다. 기본값은 동영상마다 최고 화질입니다. bv*[height<=720]+ba/b[height<=720] = 최대 720p, ba = 원본 오디오, mp3:320, opus:, flac:는 video-get와 같습니다).
video-get URL [-f selector] [-o folder] [--subs langs] [--auto-subs] [--embed-subs] [--adapter name] 동영상을 다운로드합니다. -f는 video-info에서 화질 선택자를 가져옵니다(b = 최고 화질의 단일 파일, ba = 사이트에 있는 오디오만 변환 없이 다운로드, mp3:320, mp3:256, mp3:192 또는 mp3:128 = 지정된 비트레이트의 MP3 오디오, mp3:0 = 최고 가변 비트레이트의 MP3 오디오, opus: = Opus 오디오, flac: = FLAC 오디오. 무손실 형식이지만 사이트 오디오보다 음질이 더 좋지는 않습니다. 변환하려면 ffmpeg가 필요합니다). --subs는 자막을 동영상 파일 옆에 저장합니다. video-info(en,fr)에서 언어 코드를 지정하거나, 업로더가 제공한 모든 자막을 받으려면 all를 사용합니다. --auto-subs는 대신 사이트의 자동 자막을 가져옵니다. --embed-subs는 자막을 동영상에 포함합니다(ffmpeg, MP4 또는 MKV 필요). --adapter는 get와 마찬가지로 yt-dlp와 ffmpeg의 연결을 단일 네트워크 어댑터로 보냅니다. 어댑터가 연결되지 않으면 다운로드가 시작되지 않습니다.
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 토렌트의 이름, 파일(번호 매겨짐) 및 크기입니다. SOURCE은 마그넷 링크 또는 .torrent 파일입니다.
torrent-get SOURCE [-o folder] [--files 0,2] [--use-existing] 토렌트 전체 또는 일부 파일을 다운로드합니다. 일부 파일이 폴더에 이미 있으면 다운로드를 중단하고 해당 파일 이름을 표시합니다. --use-existing를 사용하면 해당 파일을 대신 사용합니다(일치하는 파일은 유지하고 나머지는 다운로드).
torrent-create PATH -o file.torrent 파일 또는 폴더의 .torrent을 만듭니다 (피어는 DHT를 통해 찾습니다).
status 실행 중인 앱의 다운로드 목록과 ID를 JSON으로 표시합니다(자동화 API가 켜져 있어야 합니다).
pause ID..., start ID... 실행 중인 앱에서 진행 중인 다운로드를 일시 중지하거나, 중지·대기 중이거나 실패한 다운로드를 시작(재개)합니다.
remove ID..., delete ID... 실행 중인 앱의 목록에서 다운로드를 제거합니다. remove는 파일을 유지하고, delete는 파일도 삭제합니다. 진행 중인 다운로드는 먼저 일시 중지됩니다(pause).
api on, api off 실행 중인 앱의 자동화 API를 켜거나 끕니다.

misterdownloadmanager-cli help <command>모든 옵션을 표시합니다. 명령이 실패하면(앱이 실행 중이지 않거나, 오류 응답을 받거나, 다운로드가 중단되는 경우) 종료 코드 1을 반환합니다. 예를 들어:

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

명령 앞이나 뒤에 --json를 지정하면 모든 명령이 텍스트 대신 JSON을 출력합니다. 스크립트와 AI 에이전트가 읽을 수 있도록 한 줄에 객체 하나씩 출력합니다.

명령 출력 내용
get, resume {"event": "through", "service"}다운로드가 디브리드 계정을 통해 진행되면 먼저, 0.5초마다 {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} 줄을 출력한 다음 {"event": "done", "path", "size", "seconds"}를 출력합니다. 또는 Ctrl+C 후에 {"event": "paused", "state"}를 출력합니다(state는 resume가 사용하는 파일입니다).
video-get {"event": "progress", "downloaded", "size", "speed"}줄, 그 다음 {"event": "done", "path", "subtitles", "subtitle_problems"}: 옆에 저장된 자막 파일과 사이트에서 거부한 언어({"code", "name", "reason", "beside"}; beside: 두 번째 시도에서 동영상 안에 대신 옆에 저장됨).
torrent-get {"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}줄을 출력한 다음 {"event": "done", "path", "size"} 또는 --seconds가 포함된 {"event": "stopped", "downloaded", "seconds"}를 출력합니다.
video-info {"title", "choices": [{"label", "format", "size"}], "subtitles": [{"code", "name", "automatic"}]}; 선택 항목의 format는 video-get -f가 사용하는 파일이고, 자막의 code는 --subs가 사용하는 파일입니다.
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 이미 JSON 형식인 앱의 응답입니다(아래 참조).

크기는 바이트 단위입니다(알 수 없는 경우 null). 속도는 초당 바이트 단위입니다. 실패하면 {"error": "…"}를 출력하고 종료 코드 1을 반환합니다. 예를 들어:

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}

자동화 API

다른 프로그램은 실행 중인 앱에 다운로드 중인 항목을 물어보고 다운로드를 일시 중지, 시작, 제거 또는 삭제할 수 있습니다. API는 기본적으로 꺼져 있습니다. misterdownloadmanager-cli api on로 켜고 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.

지원하는 요청

필드(token 제외) 응답
{"query": "list"} 각 다운로드 및 총 속도: {"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 또는 Error입니다. size는 알 수 없을 때 null입니다. error(실패 이유)는 Error에 있는 다운로드에만 표시됩니다. category는 카테고리의 key입니다. free는 다운로드가 저장되는 여유 공간입니다(null는 알 수 없을 때). API가 켜져 있을 때만 가능합니다.
{"action": "pause", "ids": [3, 4]} ID로 다운로드를 처리합니다: "pause", "start", "remove"(파일 유지) 또는 "delete"(파일도 삭제). {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}로 응답합니다. 진행 중인 다운로드는 제거하거나 삭제하기 전에 일시 중지해야 합니다. API가 켜져 있을 때만 사용할 수 있습니다.
{"action": "start_queue", "queue": "Main download queue"} 해당 이름의 대기열을 시작합니다(또는 "stop_queue"로 중지합니다)(목록의 queues에 있는 이름). {"done": [], "skipped": []} 또는 {"error": …, "code": "unknown-queue"}로 응답합니다. API가 켜져 있을 때만 가능합니다.
{"api": true} / {"api": false} API를 켜거나 끕니다: {"api": true}.
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} 명령줄의 /d /p /f /n처럼 다운로드를 추가합니다("later": true는 /a입니다). ok. "category"(목록의 categories에 있는 키)는 해당 유형이 선택하는 폴더 대신 해당 카테고리의 폴더에 저장합니다. "queue"(대기열 이름)은 "later"와 함께 대기하는 대기열입니다. 명령줄처럼 API가 꺼져 있을 때도 가능합니다.
{"start_queue": true} 주 다운로드 대기열을 시작합니다. ok.

알 수 없는 질문이나 작업은 {"error": "…"}로 응답하며, API가 꺼져 있는 동안의 질문도 마찬가지입니다(이 경우 프로그램이 확인할 수 있도록 "code": "api-off"로 응답합니다. 오류 텍스트는 변경될 수 있습니다). 잘못된 토큰은 denied로 응답합니다.

모든 요청과 응답은 JSON 스키마인 automation-api.schema.json(https://misterdownloadmanager.com/automation-api.schema.json에서도 확인 가능)에 필드별로 설명되어 있습니다. 이는 앱이 응답하는 코드로부터 만들어지므로 정확하게 유지됩니다. 프로그램은 이를 기준으로 보내고 읽는 내용을 확인하거나, 이를 통해 유형을 생성할 수 있습니다.

예시

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"])

대신 다운로드를 추가하려면 {"token": "…", "url": "https://example.com/a.zip", "silent": true}를 보내세요.

무료, 오픈 소스, 광고 없음, 평가판 없음.

Download GolinksPRO Download Manager