6 puan yazan GN⁺ 2024-07-30 | 1 yorum | WhatsApp'ta paylaş
  • 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_OPTIONS değ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_OPTIONS iç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

 
GN⁺ 2024-07-30
Hacker News görüşleri
  • Tube Archivist, teknoloji kanallarını arşivlemek ve indekslemek için kullanışlı

    • Gelişmiş tam metin ve meta veri arama özellikleri sunuyor
    • Alphabet'ten çok daha iyi arama sunuyor
  • YouTube TiVo benzeri bir özellik isteniyor

    • Sık izlenen 100 kanalı kaçırmak istenmiyor
    • Öncelikli bir akış gerekli
    • DLNA üzerinden indirip izlenebilirse daha da iyi olur
    • YouTube, kullanıcıların sevdiği içerikleri kaçırmamasını sağlamakla ilgilenmiyor
  • yt-dlp kullanarak basit bir uygulama yapma düşüncesi var

    • Bunu bir sunucuda barındırmanın gerekli olmadığı düşünülüyor
    • Alternatif olup olmadığı merak ediliyor
  • Jellyfin ile entegre bir arayüz iyi olurdu

    • YouTube'da arama yapıp yt-dlp ile indirdikten sonra reklamsız olarak Jellyfin üzerinden yayınlanabilir
  • Çok sayıda YouTube yansılama aracının olması şaşırtıcı bulunuyor

    • Videoları indirmenin/arşivlemenin nedeni merak ediliyor
    • Videolar silinirse diye arşivlemek iyi olsa da, kişisel olarak bunun nadiren yaşandığı düşünülüyor
    • Bir video izlendiğinde tekrar izleme ihtiyacı olmadığı düşünülüyor
  • yt-dlp tabanlı bir sunucu, PiHole gibi basit bir imajlayıcı ve ön uç istemci uygulamasıyla paketlenirse popüler olabilir

    • Bir Raspberry Pi satın alıp microSD kartı imajladıktan sonra favori YT kanallarını seçip istemci uygulamasını kurarak YT içeriğine yerelde reklamsız erişim mümkün olabilir
  • TubeSync kullanılıyor

    • Basit işlevleri ve çok sayıdaki hatasına rağmen yeterince iyi çalışıyor
    • Kanallara veya oynatma listelerine abone olup videoları bir yola indiriyor ve günde bir kez yeni içerikleri kontrol ediyor
    • Sadece kanal ayarları için iyi bir UX gerekiyor
    • Dosyaları depolayıp geri kalanını Plex'in halletmesine izin veriliyor
    • Daha iyi seçenekler olup olmadığı merak ediliyor
  • Cobalt.tools kullanılıyor

    • Memnun kalınmış
  • Oynatma listesine eklenen videolar indirilip paylaşılan Plex sunucusunda saklanıyor

    • Çoğunlukla konser videoları ve kaykay bölümleri arşivleniyor
  • İlgili araçlardan biri de Yark: Offline UI ile YouTube Arşivleyici