Mister Download Manager
  1. หน้าหลัก
  2. วิธีใช้
  3. บรรทัดคำสั่งและการทำงานอัตโนมัติ

บรรทัดคำสั่งและการทำงานอัตโนมัติ

MDM สามารถทำงานได้โดยไม่ต้องเปิดหน้าต่างด้วยสามวิธีดังนี้:

  • บรรทัดคำสั่งของแอป ใช้สวิตช์เดียวกับ IDM: ส่งการดาวน์โหลดไปยังแอปที่กำลังทำงานอยู่จากสคริปต์ ไฟล์แบตช์ หรือโปรแกรมอื่น
  • misterdownloadmanager-cli เครื่องมือบรรทัดคำสั่งแยกต่างหาก: ดาวน์โหลดไฟล์ วิดีโอ และทอร์เรนต์ในเทอร์มินัล พร้อมแสดงความคืบหน้า โดยไม่ต้องเปิดแอป
  • API สำหรับการทำงานอัตโนมัติ: โปรแกรมอื่นสามารถแสดงรายการดาวน์โหลดของแอปที่กำลังทำงานอยู่ (ในรูปแบบ JSON) และหยุดชั่วคราว เริ่ม ลบ หรือลบออกผ่านช่องทางภายในที่ป้องกันด้วยโทเค็น ผู้ช่วย AI ใช้ผ่านเซิร์ฟเวอร์ MCP ของ MDM: ดูที่ ผู้ช่วย AI

ตัวอย่างใช้พาธของ 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 บันทึกและปิดแอปที่กำลังทำงานอยู่ (ตัวติดตั้งใช้ก่อนการอัปเกรด)
ไฟล์ .torrent หรือลิงก์ magnet: เปิดใน เพิ่มทอร์เรนต์ (สิ่งที่ Windows ส่งเมื่อ MDM เปิดทอร์เรนต์)

สวิตช์สามารถเริ่มต้นด้วย / หรือ - ในกรณีใดก็ได้ หาก MDM กำลังทำงานอยู่ คำสั่งจะถูกส่งไปที่นั่น หากไม่ MDM จะเริ่มและดำเนินการตามคำสั่ง ตัวอย่างเช่น:

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

มาพร้อมกับการดาวน์โหลด MDM ทุกครั้ง ถัดจากแอป (ตัวติดตั้งจะใส่ไว้ในโฟลเดอร์ของ MDM) ทำงานได้ด้วยตัวเอง: แอปไม่จำเป็นต้องทำงาน ยกเว้น status และ api

คำสั่ง สิ่งที่ทำ
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] ดาวน์โหลดไฟล์ด้วยการเชื่อมต่อสูงสุด 8 การเชื่อมต่อ (-c, 1 ถึง 128) พร้อมแสดงความคืบหน้า Ctrl+C หยุดชั่วคราว; resume ดำเนินการต่อ --checksum ตรวจสอบไฟล์ที่เสร็จสมบูรณ์: hex MD5, SHA-1, SHA-256, SHA-512 หรือ CRC32 โดยเลือกตั้งชื่อได้ (sha256:…)
resume file.mdm.json [-c connections] [-H ...] ดำเนินการดาวน์โหลดที่หยุดชั่วคราวหรือเสียหายต่อจากไฟล์ .mdm.json ที่อยู่ข้างๆ
video-info URL วิดีโอที่หน้าเว็บมี (YouTube, Vimeo, ...), และคุณภาพที่เลือกได้
video-get URL [-f selector] [-o folder] ดาวน์โหลดวิดีโอ; -f ใช้ตัวเลือกคุณภาพจาก video-info (b = ไฟล์เดียวที่ดีที่สุด)
install-ytdlp, install-ffmpeg ติดตั้งหรืออัปเดตตัวช่วยที่วิดีโอต้องการ: yt-dlp (ตรวจสอบกับคีย์ลงนาม) และ ffmpeg (Windows; บน macOS และ Linux MDM ใช้ของระบบ)
torrent-info SOURCE ชื่อทอร์เรนต์, ไฟล์ (มีหมายเลข) และขนาด; SOURCE คือลิงก์แม่เหล็กหรือไฟล์ .torrent
torrent-get SOURCE [-o folder] [--files 0,2] ดาวน์โหลดทอร์เรนต์ หรือเฉพาะบางไฟล์
torrent-create PATH -o file.torrent สร้าง .torrent ของไฟล์หรือโฟลเดอร์ (ผู้เข้าร่วมค้นหาผ่าน DHT)
status การดาวน์โหลดของแอปที่กำลังทำงานอยู่ ในรูปแบบ JSON พร้อม ID (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 agent เพื่ออ่าน:

คำสั่ง พิมพ์
get, resume บรรทัด {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} ทุกครึ่งวินาที, จากนั้น {"event": "done", "path", "size", "seconds"}, หรือ {"event": "paused", "state"} หลังจาก Ctrl+C (state คือไฟล์ที่ resume ใช้)
video-get {"event": "progress", "downloaded", "size", "speed"}บรรทัด, จากนั้น {"event": "done", "path"}
torrent-get {"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}บรรทัด, จากนั้น {"event": "done", "path", "size"}, หรือ {"event": "stopped", "downloaded", "seconds"} ด้วย --seconds
video-info {"title", "choices": [{"label", "format", "size"}]}; format ของตัวเลือกคือสิ่งที่ video-get -f ใช้
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)

โปรแกรมสื่อสารกับ MDM อย่างไร

  1. ขณะที่ทำงาน MDM จะฟังที่พอร์ตของ 127.0.0.1 (คอมพิวเตอร์เครื่องนี้เท่านั้น) และเขียนพอร์ตและโทเค็นลับไปยัง ipc.json ในโฟลเดอร์ข้อมูลของมัน: - Windows: %APPDATA%\misterdownloadmanager\ipc.json - macOS: ~/Library/Application Support/misterdownloadmanager/ipc.json - Linux: ~/.local/share/misterdownloadmanager/ipc.json - สำเนาแบบพกพา: data\ipc.json ถัดจากโปรแกรม

โทเค็นจะเปลี่ยนไปทุกครั้งที่เริ่มต้น; เฉพาะโปรแกรมที่สามารถอ่านโฟลเดอร์ข้อมูลของคุณ (ของคุณ) เท่านั้นที่สามารถใช้ได้ 2. เชื่อมต่อกับพอร์ตนั้นและส่ง JSON หนึ่งบรรทัด: โทเค็นและฟิลด์ของคำสั่ง เช่น {"token": "<token>", "query": "list"} 3. MDM จะตอบกลับด้วยหนึ่งบรรทัด: ok สำหรับคำสั่ง หรืออ็อบเจกต์ JSON สำหรับคำถาม

สิ่งที่เข้าใจ

ฟิลด์ (นอกจาก token) คำตอบ
{"query": "list"} ทุกการดาวน์โหลดและความเร็วรวม: {"downloads": [{"id", "file", "url", "path", "status", "size", "downloaded", "speed", "added", "error"}], "speed": bytes per second} status คือ Queued, Downloading, Stopped, Complete หรือ Error; size คือ null ขณะที่ไม่ทราบ; error (เหตุผลที่ล้มเหลว) จะมีอยู่เฉพาะสำหรับการดาวน์โหลดใน Error เท่านั้น เฉพาะเมื่อ API เปิดอยู่
{"action": "pause", "ids": [3, 4]} ดำเนินการกับการดาวน์โหลดตาม ID: "pause", "start", "remove" (เก็บไฟล์ไว้) หรือ "delete" (ลบไฟล์ด้วย) ตอบกลับ {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}; การดาวน์โหลดที่กำลังทำงานอยู่จะต้องถูกหยุดชั่วคราวก่อนที่จะถูกลบหรือลบออก เฉพาะเมื่อ 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 นอกจากนี้ยังสามารถทำได้แม้ API ปิดอยู่ เช่นเดียวกับบรรทัดคำสั่ง
{"start_queue": true} เริ่มคิวการดาวน์โหลดหลัก; ok

คำถามหรือการกระทำที่ไม่รู้จักจะถูกตอบกลับ {"error": "…"} เช่นเดียวกับคำถามในขณะที่ API ปิดอยู่ (จากนั้นด้วย "code": "api-off" สำหรับโปรแกรมที่จะตรวจสอบ: ข้อความข้อผิดพลาดอาจเปลี่ยนแปลงได้) โทเค็นที่ไม่ถูกต้องจะถูกตอบกลับ denied

ทุกคำขอและคำตอบจะถูกอธิบายทีละฟิลด์ใน JSON Schema: 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} แทน

ฟรี, โอเพนซอร์ส, ไม่มีโฆษณา, ไม่มีช่วงทดลองใช้

ดาวน์โหลด Mister Download Manager