MeTube: โปรแกรมดาวน์โหลด YouTube แบบโฮสต์เอง
(github.com/alexta69)-
ยกเลิกการบิลด์ ARM 32 บิต
- Node เวอร์ชันใหม่ไม่รองรับ ARM 32 บิต
- จำเป็นต้องย้ายไปใช้ OS แบบ 64 บิตเนื่องจากการอัปเดตความปลอดภัยและปัญหาการพึ่งพา
-
แนะนำ MeTube
- เว็บ GUI ของ youtube-dl (ใช้ฟอร์ก yt-dlp)
- รองรับการดาวน์โหลดวิดีโอจาก YouTube และอีกหลายเว็บไซต์
รันด้วย Docker
-
คำสั่ง Docker
docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube -
ตัวอย่าง docker-compose
version: "3" services: metube: image: ghcr.io/alexta69/metube container_name: metube restart: unless-stopped ports: - "8081:8081" volumes: - /path/to/downloads:/downloads
ตั้งค่าด้วยตัวแปรสภาพแวดล้อม
- UID: ID ผู้ใช้ที่ MeTube จะรันด้วย (ค่าเริ่มต้น: 1000)
- GID: ID กลุ่มที่ MeTube จะรันด้วย (ค่าเริ่มต้น: 1000)
- UMASK: ค่า umask (ค่าเริ่มต้น: 022)
- DEFAULT_THEME: ธีมเริ่มต้น (
light,dark,auto, ค่าเริ่มต้น:auto) - DOWNLOAD_DIR: พาธสำหรับเก็บไฟล์ดาวน์โหลด (ค่าเริ่มต้น:
/downloads) - AUDIO_DOWNLOAD_DIR: พาธสำหรับเก็บไฟล์ดาวน์โหลดเสียงเท่านั้น (ค่าเริ่มต้น:
DOWNLOAD_DIR) - DOWNLOAD_DIRS_INDEXABLE: ให้ทำดัชนีไดเรกทอรีดาวน์โหลดได้หรือไม่ (ค่าเริ่มต้น:
false) - CUSTOM_DIRS: เปิดใช้การดาวน์โหลดไปยังไดเรกทอรีที่กำหนดเองหรือไม่ (ค่าเริ่มต้น:
true) - CREATE_CUSTOM_DIRS: รองรับการสร้างไดเรกทอรีอัตโนมัติหรือไม่ (ค่าเริ่มต้น:
true) - STATE_DIR: พาธสำหรับเก็บไฟล์สถานะคิวถาวร (ค่าเริ่มต้น:
/downloads/.metube) - TEMP_DIR: พาธสำหรับเก็บไฟล์ดาวน์โหลดชั่วคราว (ค่าเริ่มต้น:
/downloads) - DELETE_FILE_ON_TRASHCAN: ลบไฟล์บนเซิร์ฟเวอร์เมื่อถูกลบจาก UI หรือไม่ (ค่าเริ่มต้น:
false) - URL_PREFIX: พาธฐานของเว็บเซิร์ฟเวอร์ (ค่าเริ่มต้น:
/) - PUBLIC_HOST_URL: URL ฐานของลิงก์ดาวน์โหลดที่แสดงใน UI
- PUBLIC_HOST_AUDIO_URL: URL ฐานของลิงก์ดาวน์โหลดเสียง
- OUTPUT_TEMPLATE: เทมเพลตชื่อไฟล์ดาวน์โหลด (ค่าเริ่มต้น:
%(title)s.%(ext)s) - OUTPUT_TEMPLATE_CHAPTER: เทมเพลตชื่อไฟล์วิดีโอที่แบ่งเป็นตอน (ค่าเริ่มต้น:
%(title)s - %(section_number)s %(section_title)s.%(ext)s) - YTDL_OPTIONS: ออปชันเพิ่มเติมที่จะส่งให้ youtube-dl (รูปแบบ JSON)
- YTDL_OPTIONS_FILE: พาธไฟล์ JSON สำหรับเติมค่า
YTDL_OPTIONS
ใช้คุกกี้ของเบราว์เซอร์
-
เพิ่มใน docker-compose.yml
volumes: - /path/to/cookies:/cookies environment: - YTDL_OPTIONS={"cookiefile":"/cookies/cookies.txt"} -
ติดตั้งส่วนขยายสำหรับดึงคุกกี้
- Firefox
- Chrome
ส่วนขยายเบราว์เซอร์
- Chrome: ติดตั้งได้จาก Google Chrome Webstore
- Firefox: ติดตั้งได้จาก Firefox Addons
คำสั่งลัด iOS
- คำสั่งลัด iOS: ส่ง URL จาก Safari ไปยัง MeTube
- ต้องกรอกที่อยู่เซิร์ฟเวอร์และพอร์ต
ความเข้ากันได้กับ iOS
- ข้อกำหนดของไฟล์วิดีโอสำหรับ iOS: ต้องใช้วิดีโอ codec h264 หรือ h265 และเสียง codec aac
- เมื่อดาวน์โหลดเป็นรูปแบบ MP4 สามารถเลือกตัวเลือก "Best (iOS)" ได้
Bookmarklet
- Bookmarklet สำหรับ Chrome: ส่งหน้าเว็บที่เปิดอยู่ในปัจจุบันไปยัง MeTube
- หากใช้บนหน้า HTTPS ต้องมี HTTPS reverse proxy
รันหลัง reverse proxy
-
ตัวอย่างการตั้งค่า NGINX
location /metube/ { proxy_pass http://metube:8081; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } -
ตัวอย่างการตั้งค่า Apache
<Location /metube/> ProxyPass http://localhost:8081/ retry=0 timeout=30 ProxyPassReverse http://localhost:8081/ </Location> <Location /metube/socket.io> RewriteEngine On RewriteCond %{QUERY_STRING} transport=websocket [NC] RewriteRule /(.*) ws://localhost:8081/socket.io/$1 [P,L] ProxyPass http://localhost:8081/socket.io retry=0 timeout=30 ProxyPassReverse http://localhost:8081/socket.io </Location> -
ตัวอย่างการตั้งค่า Caddy
example.com { route /metube/* { uri strip_prefix metube reverse_proxy metube:8081 } }
อัปเดต yt-dlp
- nightly build อัตโนมัติ: หากมี yt-dlp เวอร์ชันใหม่ ระบบจะบิลด์และอัปเดต Docker image อัตโนมัติ
- แนะนำให้ติดตั้งและตั้งค่า watchtower
การแก้ปัญหาและการส่ง issue
- MeTube เป็น UI ของ yt-dlp: ปัญหาที่เกี่ยวข้องกับ yt-dlp ไม่ควรส่งไปยังโปรเจกต์ MeTube
- แนะนำให้ใช้คำสั่ง yt-dlp โดยตรง: ทดสอบออปชันก่อนแล้วค่อยนำไปใช้กับ
YTDL_OPTIONS
บิลด์และรันในเครื่อง
-
เครื่องมือที่ต้องใช้: node.js และ Python 3.11
cd metube/ui npm install node_modules/.bin/ng build cd .. pip3 install pipenv pipenv install pipenv run python3 app/main.py -
บิลด์ Docker image ในเครื่อง
docker build -t metube .
บันทึกสำหรับนักพัฒนา
- ทำงานได้บน Windows, macOS, Linux
- เมื่อรันเซิร์ฟเวอร์ใน VSCode โฟลเดอร์ดาวน์โหลดคือโฟลเดอร์ Downloads ของผู้ใช้
สรุปของ GN⁺
- MeTube เป็นเว็บ GUI ของ youtube-dl ที่ให้ดาวน์โหลดวิดีโอจากหลายเว็บไซต์ได้
- สามารถดีพลอยและตั้งค่าได้ง่ายด้วย Docker และปรับแต่งได้ผ่านตัวแปรสภาพแวดล้อมหลากหลาย
- ดาวน์โหลดวิดีโอได้สะดวกผ่านส่วนขยายเบราว์เซอร์และคำสั่งลัด iOS
- อัปเดตเป็น yt-dlp เวอร์ชันล่าสุดโดยอัตโนมัติเพื่อให้ทันสมัยอยู่เสมอ
- โปรเจกต์ที่มีฟังก์ชันคล้ายกัน ได้แก่ JDownloader, Video DownloadHelper เป็นต้น
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
Tube Archivist มีประโยชน์สำหรับการเก็บถาวรและทำดัชนีช่องสายเทคนิค
ต้องการฟังก์ชันคล้าย YouTube TiVo
กำลังคิดจะทำแอปง่าย ๆ โดยใช้ yt-dlp
ถ้ามีอินเทอร์เฟซที่เชื่อมกับ Jellyfin ได้ก็น่าจะดี
แปลกใจที่มีเครื่องมือสำหรับ mirror YouTube มากมาย
ถ้าเซิร์ฟเวอร์ที่อิง yt-dlp ถูกแพ็กให้เป็นอิมเมจและแอปไคลเอนต์ฝั่งหน้าใช้งานง่ายแบบ PiHole ก็น่าจะได้รับความนิยม
กำลังใช้ TubeSync อยู่
กำลังใช้ Cobalt.tools
ดาวน์โหลดวิดีโอที่เพิ่มไว้ในเพลย์ลิสต์แล้วเก็บไว้บนเซิร์ฟเวอร์ Plex ที่แชร์กัน
เครื่องมือที่เกี่ยวข้องอีกตัวคือ Yark: YouTube Archiver with Offline UI