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
- While it runs, GDM listens on a port of
127.0.0.1(this computer only) and writes the port and a secret token toipc.jsonin 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.jsonnext 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