6 पॉइंट द्वारा GN⁺ 2024-07-30 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 32-बिट ARM बिल्ड बंद

    • नया Node version 32-बिट ARM को सपोर्ट नहीं करता
    • security updates और dependency समस्याओं के कारण 64-बिट OS पर migration ज़रूरी
  • MeTube परिचय

    • youtube-dl का web GUI (yt-dlp fork का उपयोग)
    • YouTube और कई अन्य sites से video download सपोर्ट

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
    

environment variables से सेटिंग

  • UID: वह user ID जिससे MeTube चलेगा (default: 1000)
  • GID: वह group ID जिससे MeTube चलेगा (default: 1000)
  • UMASK: umask value (default: 022)
  • DEFAULT_THEME: default theme (light, dark, auto, default: auto)
  • DOWNLOAD_DIR: download save path (default: /downloads)
  • AUDIO_DOWNLOAD_DIR: केवल audio downloads के लिए save path (default: DOWNLOAD_DIR)
  • DOWNLOAD_DIRS_INDEXABLE: क्या download directories indexable होंगी (default: false)
  • CUSTOM_DIRS: क्या custom directory downloads enabled होंगे (default: true)
  • CREATE_CUSTOM_DIRS: क्या directories का auto-creation supported है (default: true)
  • STATE_DIR: queue persistence files save path (default: /downloads/.metube)
  • TEMP_DIR: अस्थायी download files save path (default: /downloads)
  • DELETE_FILE_ON_TRASHCAN: UI में delete की गई files को server से भी delete करना है या नहीं (default: false)
  • URL_PREFIX: web server का base path (default: /)
  • PUBLIC_HOST_URL: UI में दिखने वाले download links का base URL
  • PUBLIC_HOST_AUDIO_URL: audio download links का base URL
  • OUTPUT_TEMPLATE: download file name template (default: %(title)s.%(ext)s)
  • OUTPUT_TEMPLATE_CHAPTER: chapters में बंटी video file name template (default: %(title)s - %(section_number)s %(section_title)s.%(ext)s)
  • YTDL_OPTIONS: youtube-dl को pass किए जाने वाले अतिरिक्त options (JSON format)
  • YTDL_OPTIONS_FILE: YTDL_OPTIONS भरने के लिए JSON file path

browser cookies का उपयोग

  • docker-compose.yml में जोड़ें

    volumes:
      - /path/to/cookies:/cookies
    environment:
      - YTDL_OPTIONS={"cookiefile":"/cookies/cookies.txt"}
    
  • cookie extraction extension install करें

    • Firefox
    • Chrome

browser extensions

  • Chrome: Google Chrome Webstore से install किया जा सकता है
  • Firefox: Firefox Addons से install किया जा सकता है

iOS shortcuts

  • iOS shortcut: Safari से URL को MeTube पर भेजता है
  • server address और port दर्ज करना ज़रूरी

iOS compatibility

  • iOS video file requirements: h264 या h265 video codec और aac audio codec ज़रूरी
  • MP4 format में download करते समय "Best (iOS)" option चुना जा सकता है

bookmarklet

  • Chrome bookmarklet: अभी खुला web page MeTube पर भेजता है
  • HTTPS pages पर उपयोग के लिए HTTPS reverse proxy ज़रूरी

reverse proxy के पीछे चलाना

  • NGINX config उदाहरण

    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 config उदाहरण

    <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 config उदाहरण

    example.com {
      route /metube/* {
        uri strip_prefix metube
        reverse_proxy metube:8081
      }
    }
    

yt-dlp update

  • automatic nightly builds: नया yt-dlp version उपलब्ध होने पर अपने आप build और Docker image update होती है
  • watchtower install और configure करने की सिफारिश

troubleshooting और issue submit करना

  • MeTube, yt-dlp का UI है: yt-dlp से जुड़े issues MeTube project में submit न करें
  • yt-dlp command सीधे उपयोग करने की सिफारिश: options test करने के बाद उन्हें YTDL_OPTIONS में लागू करें

local build और run

  • ज़रूरी tools: 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 local build

    docker build -t metube .
    

development notes

  • Windows, macOS, Linux पर काम करता है
  • VSCode में server चलाने पर download folder उपयोगकर्ता का Downloads folder होता है

GN⁺ का सारांश

  • MeTube, youtube-dl का web GUI है, जो कई sites से video download करने की सुविधा देता है
  • Docker के साथ इसे आसानी से deploy और configure किया जा सकता है, और कई environment variables से इसे customize किया जा सकता है
  • browser extensions और iOS shortcuts के ज़रिए video download करना सुविधाजनक हो जाता है
  • yt-dlp के latest version को automatically update करके इसे हमेशा up-to-date रखा जाता है
  • मिलती-जुलती functionality देने वाले projects में JDownloader, Video DownloadHelper आदि शामिल हैं

1 टिप्पणियां

 
GN⁺ 2024-07-30
Hacker News टिप्पणियाँ
  • Tube Archivist टेक्निकल चैनलों को archive और index करने के लिए उपयोगी है

    • यह advanced full-text और metadata search सुविधाएँ देता है
    • इसका search Alphabet से कहीं बेहतर है
  • मैं YouTube TiVo जैसी सुविधा चाहता हूँ

    • मैं अक्सर देखे जाने वाले 100 चैनल मिस नहीं करना चाहता
    • मुझे एक priority feed चाहिए
    • अगर DLNA के ज़रिए download करके देख पाना संभव हो तो और बेहतर होगा
    • YouTube को इस बात में दिलचस्पी नहीं है कि उपयोगकर्ता अपनी पसंद का content मिस न करें
  • मैं yt-dlp का इस्तेमाल करके एक simple app बनाने की सोच रहा हूँ

    • मुझे नहीं लगता कि इसे server पर host करने की ज़रूरत है
    • सोच रहा हूँ कि क्या कोई alternative है
  • अगर Jellyfin के साथ integrate होने वाला interface हो तो अच्छा होगा

    • YouTube search करें, yt-dlp से download करें, फिर बिना ads के Jellyfin के ज़रिए stream किया जा सके
  • यह थोड़ा अजीब लगता है कि इतने सारे YouTube mirroring tools मौजूद हैं

    • सोचता हूँ लोग videos को download/archive क्यों करना चाहते हैं
    • video delete हो जाने की स्थिति के लिए archive रखना अच्छा है, लेकिन मेरे अनुभव में ऐसा कम होता है
    • मेरा मानना है कि video देख लेने के बाद उसे फिर से देखने की ज़रूरत नहीं पड़ती
  • अगर yt-dlp आधारित server को PiHole की तरह एक simple imager और frontend client app के साथ package किया जाए, तो यह लोकप्रिय हो सकता है

    • Raspberry Pi खरीदें, microSD card को image करें, अपने पसंदीदा YT channels चुनें, और client app install करें, फिर local स्तर पर बिना ads के YT content का उपयोग कर सकें
  • मैं TubeSync इस्तेमाल कर रहा हूँ

    • इसकी simple functionality और कई bugs के बावजूद यह पर्याप्त रूप से अच्छा काम करता है
    • यह channels या playlists को subscribe करता है, videos को किसी path पर download करता है, और दिन में एक बार नया content check करता है
    • बस channel settings के लिए बेहतर UX चाहिए
    • यह files को store करता है और बाकी काम Plex संभाल लेता है
    • सोच रहा हूँ कि क्या कोई बेहतर option है
  • मैं Cobalt.tools इस्तेमाल कर रहा हूँ

    • इससे संतुष्ट हूँ
  • मैं playlist में जोड़े गए videos को download करके shared Plex server पर store करता हूँ

    • ज़्यादातर concert videos और skate parts archive करता हूँ
  • संबंधित tool के रूप में Yark: YouTube Archiver with Offline UI मौजूद है