MeTube: Self-hosted YouTube indirme programı
(github.com/alexta69)-
32 bit ARM derlemeleri durduruldu
- Yeni Node sürümü 32 bit ARM'yi desteklemiyor
- Güvenlik güncellemeleri ve bağımlılık sorunları nedeniyle 64 bit işletim sistemine geçiş gerekiyor
-
MeTube tanıtımı
- youtube-dl için web GUI'si (yt-dlp fork'u kullanır)
- YouTube ve çeşitli sitelerden video indirmeyi destekler
Docker ile çalıştırma
-
Docker komutu
docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube -
docker-compose örneği
version: "3" services: metube: image: ghcr.io/alexta69/metube container_name: metube restart: unless-stopped ports: - "8081:8081" volumes: - /path/to/downloads:/downloads
Ortam değişkenleriyle yapılandırma
- UID: MeTube'un çalışacağı kullanıcı kimliği (varsayılan: 1000)
- GID: MeTube'un çalışacağı grup kimliği (varsayılan: 1000)
- UMASK: umask değeri (varsayılan: 022)
- DEFAULT_THEME: Varsayılan tema (
light,dark,auto, varsayılan:auto) - DOWNLOAD_DIR: İndirmelerin kaydedileceği yol (varsayılan:
/downloads) - AUDIO_DOWNLOAD_DIR: Yalnızca ses indirmeleri için kayıt yolu (varsayılan:
DOWNLOAD_DIR) - DOWNLOAD_DIRS_INDEXABLE: İndirme dizinlerinin indekslenebilir olup olmadığı (varsayılan:
false) - CUSTOM_DIRS: Özel dizinlere indirmeyi etkinleştirip etkinleştirmeme (varsayılan:
true) - CREATE_CUSTOM_DIRS: Dizinlerin otomatik oluşturulmasını destekleyip desteklememe (varsayılan:
true) - STATE_DIR: Kuyruk kalıcılığı dosyalarının kaydedileceği yol (varsayılan:
/downloads/.metube) - TEMP_DIR: Geçici indirme dosyalarının kaydedileceği yol (varsayılan:
/downloads) - DELETE_FILE_ON_TRASHCAN: Arayüzde silinen dosyaların sunucudan da silinip silinmeyeceği (varsayılan:
false) - URL_PREFIX: Web sunucusunun temel yolu (varsayılan:
/) - PUBLIC_HOST_URL: Arayüzde gösterilen indirme bağlantılarının temel URL'si
- PUBLIC_HOST_AUDIO_URL: Ses indirme bağlantılarının temel URL'si
- OUTPUT_TEMPLATE: İndirilen dosya adı şablonu (varsayılan:
%(title)s.%(ext)s) - OUTPUT_TEMPLATE_CHAPTER: Bölümlere ayrılmış video dosyası adı şablonu (varsayılan:
%(title)s - %(section_number)s %(section_title)s.%(ext)s) - YTDL_OPTIONS: youtube-dl'ye iletilecek ek seçenekler (JSON biçiminde)
- YTDL_OPTIONS_FILE:
YTDL_OPTIONSdeğerini doldurmak için JSON dosya yolu
Tarayıcı çerezlerini kullanma
-
docker-compose.yml içine ekleyin
volumes: - /path/to/cookies:/cookies environment: - YTDL_OPTIONS={"cookiefile":"/cookies/cookies.txt"} -
Çerez çıkarma eklentisini kurun
- Firefox
- Chrome
Tarayıcı eklentileri
- Chrome: Google Chrome Webstore üzerinden kurulabilir
- Firefox: Firefox Addons üzerinden kurulabilir
iOS Kısayolları
- iOS Kısayolu: URL'yi Safari'den MeTube'a gönderir
- Sunucu adresi ve portunun girilmesi gerekir
iOS uyumluluğu
- iOS video dosyası gereksinimleri: h264 veya h265 video kodeği ve aac ses kodeği gereklidir
- MP4 biçiminde indirirken "Best (iOS)" seçeneği seçilebilir
Bookmarklet
- Chrome bookmarklet'i: O anda açık olan web sayfasını MeTube'a gönderir
- HTTPS sayfalarında kullanmak için HTTPS ters proxy gerekir
Ters proxy arkasında çalıştırma
-
NGINX yapılandırma örneği
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 yapılandırma örneği
<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 yapılandırma örneği
example.com { route /metube/* { uri strip_prefix metube reverse_proxy metube:8081 } }
yt-dlp güncellemesi
- Otomatik gece derlemeleri: Yeni bir yt-dlp sürümü olduğunda Docker imajı otomatik olarak derlenir ve güncellenir
- watchtower kurulumu ve yapılandırması önerilir
Sorun giderme ve issue gönderme
- MeTube, yt-dlp için bir UI'dir: yt-dlp ile ilgili sorunları MeTube projesine göndermeyin
- yt-dlp komutunu doğrudan kullanmanız önerilir: Seçenekleri test ettikten sonra
YTDL_OPTIONSiçine uygulayın
Yerelde derleme ve çalıştırma
-
Gerekli araçlar: node.js ve 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 imajını yerelde derleme
docker build -t metube .
Geliştirme notları
- Windows, macOS, Linux üzerinde çalışır
- Sunucu VSCode içinde çalıştırıldığında indirme klasörü kullanıcının Downloads klasörüdür
GN⁺ özeti
- MeTube, youtube-dl için bir web GUI'sidir ve çeşitli sitelerden video indirmenizi sağlar
- Docker ile kolayca dağıtılabilir ve yapılandırılabilir; ayrıca çeşitli ortam değişkenleriyle özelleştirilebilir
- Tarayıcı eklentileri ve iOS Kısayolları sayesinde videolar rahatça indirilebilir
- yt-dlp'nin en güncel sürümünü otomatik olarak güncelleyerek her zaman güncel kalır
- Benzer işlevler sunan projeler arasında JDownloader ve Video DownloadHelper bulunur
1 yorum
Hacker News görüşleri
Tube Archivist, teknoloji kanallarını arşivlemek ve indekslemek için kullanışlı
YouTube TiVo benzeri bir özellik isteniyor
yt-dlpkullanarak basit bir uygulama yapma düşüncesi varJellyfin ile entegre bir arayüz iyi olurdu
yt-dlpile indirdikten sonra reklamsız olarak Jellyfin üzerinden yayınlanabilirÇok sayıda YouTube yansılama aracının olması şaşırtıcı bulunuyor
yt-dlptabanlı bir sunucu, PiHole gibi basit bir imajlayıcı ve ön uç istemci uygulamasıyla paketlenirse popüler olabilirTubeSync kullanılıyor
Cobalt.tools kullanılıyor
Oynatma listesine eklenen videolar indirilip paylaşılan Plex sunucusunda saklanıyor
İlgili araçlardan biri de Yark: Offline UI ile YouTube Arşivleyici