Skip to content

Download Video or Audio from YouTube channels on a schedule via yt-dlp.

License

Notifications You must be signed in to change notification settings

TheWicklowWolf/ChannelTube

Repository files navigation

Build Status Docker Pulls

full_logo

ChannelTube is a tool for synchronizing and fetching content from YouTube channels using yt-dlp.

Run using docker-compose

services:
  channeltube:
    image: thewicklowwolf/channeltube:latest
    container_name: channeltube
    volumes:
      - /path/to/config:/channeltube/config
      - /data/media/video:/channeltube/downloads
      - /data/media/audio:/channeltube/audio_downloads
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 5000:5000
    restart: unless-stopped

Configuration via environment variables

Certain values can be set via environment variables:

  • PUID: The user ID to run the app with. Defaults to 1000.
  • PGID: The group ID to run the app with. Defaults to 1000.
  • video_format_id: Specifies the ID for the video format. The default value is 137.
  • audio_format_id: Specifies the ID for the audio format. The default value is 140.
  • defer_hours: Defines the time to defer in hours. The default value is 0.
  • thread_limit: Sets the maximum number of threads to use. The default value is 1.
  • fallback_vcodec: Specifies the fallback video codec to use. Defaults to vp9.
  • fallback_acodec :Specifies the fallback audio codec to use. Defaults to mp4a.
  • subtitles: Controls subtitle handling. Options: none, embed, external. Defaults to none.
  • subtitle_languages: Comma-separated list of subtitle languages to include. Defaults to en.
  • include_id_in_filename: Include Video ID in filename. Set to true or false. Defaults to false.
  • verbose_logs: Enable verbose logging. Set to true or false. Defaults to false.
  • short_video_cutoff: Time-based cutoff (in seconds) used to filter short videos. Videos with runtime shorter than this value will be ignored. Defaults to 180.
  • auto_update_hour: Enables automatic nightly update of yt-dlp when set to a value between 0 and 23 (24-hour clock). The update will run once per day during the specified hour. If unset or set to any value outside 0–23, automatic updates are disabled. Default is disabled

For information on format IDs, refer to https://github.com/yt-dlp/yt-dlp

yt-dlp-formats

Sync Schedule

Use a comma-separated list of hours to search for new items (e.g. 2, 20 will initiate a search at 2 AM and 8 PM).

Note: There is a deadband of up to 10 minutes from the scheduled start time.

Media Server Integration (optional)

A media server library scan can be triggered when new content is retrieved.

For Plex, use: Plex: http://192.168.1.2:32400
For Jellyfin, use: Jellyfin: http://192.168.1.2:8096
To use both, enter: Plex: http://192.168.1.2:32400, Jellyfin: http://192.168.1.2:8096
The same format applies for the tokens.

The Media Server Library Name refers to the name of the library where the videos are stored.

To disable this feature:

  • Leave Media Server Addresses, Media Server Tokens and Media Server Library Name blank.

Cookies (optional)

To utilize a cookies file with yt-dlp, follow these steps:

  • Generate Cookies File: Open your web browser and use a suitable extension (e.g. cookies.txt for Firefox) to extract cookies for a user on YT.

  • Save Cookies File: Save the obtained cookies into a file named cookies.txt and put it into the config folder.


light


dark


https://hub.docker.com/r/thewicklowwolf/channeltube