GDM can be driven without its window in three ways:
- Uygulamanın kendi komut satırı, IDM'ninkiyle aynı anahtarlar: çalışan uygulamaya bir betikten, toplu iş dosyasından veya başka bir programdan bir indirme görevi verin.
misterdownloadmanager-cli, ayrı bir komut satırı aracı: uygulamayı kullanmadan, ilerlemeyi göstererek terminalde dosyaları, videoları ve torrentleri indirin.- 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.
Örneklerde Windows yolları kullanılmıştır; macOS ve Linux'ta programlar .exe olmadan aynı adlara sahiptir.
Uygulamanın komut satırı
misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
| Anahtar | Ne yapar |
|---|---|
/d URL |
İndirilecek adres. |
/p folder |
Bu klasöre kaydedin (aksi takdirde Seçenekler → Kaydedileceği yer bölümündeki kategorinin klasörüne). |
/f name |
Bu adla kaydedin. |
/a |
Başlatmadan ana indirme kuyruğuna ekleyin. |
/n |
Sessiz: Dosya Bilgilerini İndir penceresi yok, indirme hemen başlar (veya /a ile kuyruğa alınır). |
/s |
Ana indirme kuyruğunu başlatın. |
/exit |
Çalışan uygulamayı kaydedin ve kapatın (yükleyici bir yükseltmeden önce bunu kullanır). |
/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. |
bir .torrent dosyası veya magnet: bağlantısı |
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.
| Komut | Ne yapar |
|---|---|
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] [--dns choice] [--adapter name] |
İlerlemeyi göstererek 8 bağlantıya kadar (-c, 1 ila 128) bir dosya indirin. Ctrl+C duraklatır; resume devam ettirir. --checksum bitmiş dosyayı kontrol eder: onaltılık MD5, SHA-1, SHA-256, SHA-512 veya CRC32, isteğe bağlı olarak adlandırılmış (sha256:…). --dns DNS'i seçer: system (varsayılan); bir hizmet ve ona nasıl sorulacağı, cloudflare-https, quad9-tls, google-plain, adguard-https, nextdns-tls; DNS sunucularının adresleri, 9.9.9.9,149.112.112.112; veya bir DNS-over-HTTPS adresi. Asla sistemin DNS'ine geri dönmez. --adapter her bağlantıyı adıyla (Ethernet, wg0) veya adreslerinden biriyle tek bir ağ bağdaştırıcısı üzerinden gönderir; bağlı değilse hiçbir şey gönderilmez ve indirme başarısız olur. Debrid hesaplarınızdan birinin (Seçenekler → Hesaplar) desteklediği bir dosya barındırıcısından gelen bir bağlantı, uygulamadaki gibi o hesap üzerinden gider ve get through Real-Debrid der; --direct adresin kendisini indirir (Debrid hizmeti hesapları). |
resume file.mdm.json [-c connections] [-H ...] [--direct] |
Duraklatılmış veya bozuk bir indirmeyi yanındaki .mdm.json dosyasından devam ettirin. Bir debrid hesabı aracılığıyla, get gibi: hizmet, eski bağlantının süresi dolduğunda yeni bir bağlantı verir; --direct adresin kendisinden devam eder. |
install-gallery-dl |
Resim galerileri için gallery-dl'yi kurun veya güncelleyin: sağlama toplamı listesi yazarının imzalama anahtarıyla, program da o listeyle kontrol edilir (Windows ve Linux x86-64; diğer yerlerde kendiniz kurun). |
gallery-get URL [-o folder] [--limit N] [--adapter name] |
Bir galerinin resimlerini (bir Wikimedia Commons kategorisi, bir Flickr albümü, ...) -o içine, kendi adıyla bir klasöre indirir; --limit en fazla o kadarını alır, sitenin listelediği ilkleri. Tekrar başlatıldığında, sadece yenilerini indirir. --adapter, gallery-dl'nin bağlantılarını get için olduğu gibi tek bir ağ bağdaştırıcısı üzerinden gönderir. |
video-info URL |
Bir sayfada hangi videonun bulunduğunu (YouTube, Vimeo vb.) ve seçilebilecek görüntü kalitelerini gösterir. |
playlist-info URL [--from N] [--count N] |
Oynatma listesindeki veya kanaldaki videoları listelendikleri sırayla, her satırda bir video olacak şekilde gösterir: listedeki yeri, süresi, başlığı ve adresi. |
playlist-get URL [-f selector] [-o folder] [--from N] [--count N] |
Bir oynatma listesindeki veya kanaldaki videoları, -o içindeki liste adıyla oluşturulan bir klasöre sırayla indirin. -f, video-get için olduğu gibi hepsi için tek bir kalitedir (varsayılan olarak her videonun en iyisi; bv*[height<=720]+ba/b[height<=720] = 720p'ye kadar; ba = orijinal ses; mp3:320, opus:, flac:, video-get için olduğu gibi). |
video-get URL [-f selector] [-o folder] [--subs langs] [--auto-subs] [--embed-subs] [--adapter name] |
Bir video indirir; -f, video-info'den bir kalite seçici alır (b = en iyi tek dosya; ba = sitenin sahip olduğu gibi sadece ses, dönüştürülmemiş; mp3:320, mp3:256, mp3:192 veya mp3:128 = o bit hızında MP3 olarak ses, mp3:0 en iyi değişken bit hızında; opus: = Opus olarak; flac: = FLAC olarak, kayıpsız ancak sitenin sesinden daha iyi değil; dönüştürmeler için ffmpeg gerekir). --subs altyazıları yanına kaydeder: video-info'ten dil kodları (en,fr) veya yükleyicinin verdiği her biri için all; --auto-subs bunun yerine sitenin otomatik altyazılarını alır; --embed-subs bunları videoya yerleştirir (ffmpeg, MP4 veya MKV gerekir). --adapter, yt-dlp'nin bağlantılarını (ve ffmpeg'inkileri) get için olduğu gibi tek bir ağ bağdaştırıcısı üzerinden gönderir; bağlı değilse hiçbir şey başlamaz. |
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 |
Bir torrentin adı, dosyaları (numaralı) ve boyutu; SOURCE bir magnet bağlantısı veya bir .torrent dosyasıdır. |
torrent-get SOURCE [-o folder] [--files 0,2] [--use-existing] |
Bir torrenti veya sadece bazı dosyalarını indirin. Dosyalarından bazıları zaten klasördeyse, durur ve adlarını belirtir; --use-existing bunun yerine onları kullanır (eşleşenler tutulur, geri kalanı indirilir). |
torrent-create PATH -o file.torrent |
Bir dosya veya klasörün .torrent'ini yapın (eşler onu DHT aracılığıyla bulur). |
status |
Çalışan uygulamanın indirmeleri, kimlikleriyle birlikte JSON olarak (otomasyon API'si açık olmalıdır). |
pause ID..., start ID... |
Çalışan uygulamadaki devam eden indirmeleri duraklatır veya durdurulmuş, sıraya alınmış veya başarısız olanları başlatır (devam ettirir). |
remove ID..., delete ID... |
Çalışan uygulamanın listesinden indirmeleri kaldırır: remove dosyalarını tutar, delete ise onları da siler. Çalışan bir indirme önce duraklatılır (pause). |
api on, api off |
Çalışan uygulamanın otomasyon API'sini açar veya kapatır. |
misterdownloadmanager-cli help <command>tüm seçenekleri gösterir. Başarısız olan bir komut (uygulama çalışmıyor, hata ile yanıt veriyor, bir indirme bozuluyor) 1 koduyla çıkar. Örneğin:
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
Betikler ve programlar için JSON
--json ile (komuttan önce veya sonra), her komut metin yerine JSON çıktısı verir, her satırda bir nesne olacak şekilde, betiklerin ve yapay zeka ajanlarının okuması için:
| Komut | Çıktı |
|---|---|
get, resume |
{"event": "through", "service"}indirme bir debrid hesabı üzerinden gittiğinde önce, sonra her yarım saniyede bir {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} satırı, sonra {"event": "done", "path", "size", "seconds"} veya {"event": "paused", "state"} sonra Ctrl+C (state, resume'nın aldığı dosyadır). |
video-get |
{"event": "progress", "downloaded", "size", "speed"}satır, sonra {"event": "done", "path", "subtitles", "subtitle_problems"}: yanına kaydedilen altyazı dosyaları ve sitenin reddettiği diller ({"code", "name", "reason", "beside"}; beside: ikinci denemede, videonun içinde değil, yanında geldiler). |
torrent-get |
{"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}satır, sonra {"event": "done", "path", "size"} veya {"event": "stopped", "downloaded", "seconds"} ile --seconds. |
video-info |
{"title", "choices": [{"label", "format", "size"}], "subtitles": [{"code", "name", "automatic"}]}; bir seçimin format değeri video-get -f tarafından alınır, bir altyazının code değeri --subs tarafından alınır. |
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 |
Uygulamanın yanıtı, zaten JSON olan (aşağıya bakın). |
Boyutlar bayt cinsindendir (null bilinmiyorken), hızlar saniyedeki bayt cinsindendir. Bir hata {"error": "…"} çıktısı verir ve 1 koduyla çıkar. Örneğin:
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}
Otomasyon API'si
Diğer programlar, çalışan uygulamaya ne indirdiğini sorabilir ve indirmeleri duraklatabilir, başlatabilir, kaldırabilir veya silebilir. API varsayılan olarak kapalıdır; misterdownloadmanager-cli api on ile açın (ve api off ile kapatın).
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.
Ne anlar
Alanlar (token hariç) |
Yanıt |
|---|---|
{"query": "list"} |
Her indirme ve toplam hız: {"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 şunlardan biridir: Queued, Downloading, Stopped, Complete veya Error; size bilinmiyorken null'dur; error (neden başarısız olduğu) yalnızca Error durumundaki bir indirme için vardır; category bir kategorinin key'sidir; free indirmelerin gittiği boş alandır (bilinmiyorsa null). Yalnızca API açıkken. |
{"action": "pause", "ids": [3, 4]} |
İndirmeler üzerinde kimliğe göre işlem yapar: "pause", "start", "remove" (dosya tutuldu) veya "delete" (dosya da silindi). {"done": [3], "skipped": [{"id": 4, "why": "not running"}]} yanıtı verir; çalışan bir indirme, kaldırılmadan veya silinmeden önce duraklatılmalıdır. Yalnızca API açıkken. |
{"action": "start_queue", "queue": "Main download queue"} |
O isimdeki kuyruğu başlatır (veya "stop_queue" ile durdurur) (listeden bir isim queues). {"done": [], "skipped": []} veya {"error": …, "code": "unknown-queue"} yanıtını verir. Yalnızca API açıkken. |
{"api": true} / {"api": false} |
API'yi açar veya kapatır: {"api": true}. |
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} |
Bir indirme ekler, komut satırının /d /p /f /n yaptığı gibi ("later": true şudur: /a); ok. "category" (listenin categories'sinden bir anahtar) onu türünün seçtiği klasör yerine o kategorinin klasörüne koyar; "queue" (bir kuyruğun adı) "later" ile beklediği kuyruktur. API kapalıyken de, komut satırı gibi çalışır. |
{"start_queue": true} |
Ana indirme kuyruğunu başlatır; ok. |
Bilinmeyen bir soru veya eyleme {"error": "…"} ile yanıt verilir. API kapalıyken gelen bir soruya da "code": "api-off" ile yanıt verilir; programlar bunu denetleyebilir, ancak hata metni değişebilir. Hatalı bir belirtece denied ile yanıt verilir.
Her istek ve yanıt, alan alan, bir JSON Şeması'nda açıklanmıştır: automation-api.schema.json (ayrıca https://misterdownloadmanager.com/automation-api.schema.json adresinde). Uygulamanın yanıt verdiği koddan yapılmıştır, bu yüzden doğru kalır; programlar gönderdiklerini ve okuduklarını buna göre kontrol edebilir veya türlerini bundan oluşturabilir.
Örnekler
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"])
Bunun yerine bir indirme eklemek için {"token": "…", "url": "https://example.com/a.zip", "silent": true} gönderin.
Ücretsiz, açık kaynak, reklamsız, deneme sürümü yok.
Download GolinksPRO Download Manager