MCPcopy Index your code
hub / github.com/MattBlackOnly/TubeTube

github.com/MattBlackOnly/TubeTube @v0.8.15

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.8.15 ↗ · + Follow
38 symbols 87 edges 9 files 0 documented · 0% updated 3d agov0.8.15 · 2026-07-05★ 673
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Logo

TubeTube is a simple YouTube downloader.

Features:

  • Multithreaded Downloads: Fast, simultaneous downloads.
  • Custom Locations & Formats: YAML-based settings.
  • Mobile Optimized: Designed for small screens.
  • Download Options: Choose between audio or video.
  • Live Video Support: Supports multiple live streams.

Docker Compose Configuration

Create a docker-compose.yml file:

services:
  tubetube:
    image: ghcr.io/mattblackonly/tubetube:latest
    container_name: tubetube
    ports:
      - 6543:6543
    volumes:
      - /path/to/general:/data/General
      - /path/to/music:/data/Music
      - /path/to/podcasts:/data/Podcast
      - /path/to/videos:/data/Video
      - /path/to/config:/config
      - /path/to/temp:/temp # Optional. Temp files are deleted on startup.
      - /etc/localtime:/etc/localtime:ro # Optional. Sync time with host.
      - /etc/timezone:/etc/timezone:ro # Optional. Sync timezone with host.
    environment:
      - PUID=1000
      - PGID=1000
    restart: unless-stopped

Directory Configuration

Create a settings.yaml file in the /path/to/config directory with the following format:

General:
  audio_ext: m4a
  audio_format_id: '140'
  video_ext: mp4
  video_format_id: '625'
Music:
  audio_ext: mp3
  audio_format_id: '140'
Podcast:
  audio_ext: m4a
  audio_format_id: '140'
Video:
  audio_format_id: '140'
  video_ext: mp4
  video_format_id: '625'

Notes:

  • Replace /path/to/general, etc.. with actual paths on your host machine.
  • Ensure the settings.yaml file is correctly placed in the /path/to/config directory.
  • The volume paths in the docker-compose.yml file should match the names specified in the settings.yaml file (e.g., /data/General, etc..).
  • You can create as many directory locations as needed in settings.yaml, but each must be mapped individually in docker-compose.yml.
  • To use a cookies file, create a cookies.txt file and place it in the config directory.

Subtitle Configuration

  • When WRITE_SUBS=True, actual subtitles will be saved to a subtitle file. If no actual subtitles are available, no subtitles will be created. Additionally, setting ALLOW_AUTO_SUBS=True provides a fallback to automatically generated subtitles saved to the subtitle file.
  • When EMBED_SUBS=True, actual subtitles will be embedded into the video. If no actual subtitles are present, no subtitles will be included. Similarly, ALLOW_AUTO_SUBS=True can serve as a fallback to embed automatically generated subtitles.

To effectively manage subtitles, enable ALLOW_AUTO_SUBS in conjunction with either WRITE_SUBS or EMBED_SUBS. This configuration will attempt to download actual subtitles, and if they are not available, it will default to using automatically generated subtitles.

Configuration via Environment Variables

Customize the behavior of TubeTube by setting the following environment variables in your docker-compose.yml file:

environment:
  - PUID=1000                       # User ID for permissions (default: 1000)
  - PGID=1000                       # Group ID for permissions (default: 1000)
  - VERBOSE_LOGS=false              # Enable verbose logging for yt-dlp (default: false)
  - TRIM_METADATA=false             # Trim metadata from files (default: false)
  - PREFERRED_LANGUAGE=en           # Desired audio language for downloads (default: en)
  - PREFERRED_AUDIO_CODEC=aac       # Desired audio codec (default: aac)
  - PREFERRED_VIDEO_CODEC=vp9       # Desired video codec (default: vp9)
  - PREFERRED_VIDEO_EXT=mp4         # Desired video file extension (default: mp4)
  - EMBED_SUBS=false                # Embed subtitles in the video (default: false)
  - WRITE_SUBS=false                # Write subtitles as separate files (default: false)
  - ALLOW_AUTO_SUBS=false           # Allow automatically generated subtitles as a fallback (default: true)
  - SUBTITLE_FORMAT=vtt             # Format of the subtitles (default: vtt)
  - SUBTITLE_LANGUAGES=en           # Subtitle language (default: en)
  - THREAD_COUNT=4                  # Number of threads for processing (default: 4)

Screenshots

Phone (Dark Mode)

Phone

Desktop (Dark Mode)

Screenshot

Star History

Star History Chart

Core symbols most depended-on inside this repo

setTheme
called by 6
tubetube/static/js_theme_switcher.js
getSystemTheme
called by 3
tubetube/static/js_theme_switcher.js
_enqueue_item
called by 2
tubetube/yt_downloader.py
updateSelectAllState
called by 2
tubetube/static/js_table_script.js
populateDropdown
called by 2
tubetube/static/js_general_script.js
cleanup_temp_folder
called by 1
tubetube/yt_downloader.py
add_to_queue
called by 1
tubetube/yt_downloader.py
_download_item
called by 1
tubetube/yt_downloader.py

Shape

Method 23
Function 8
Class 6
Route 1

Languages

Python82%
TypeScript18%

Modules by API surface

tubetube/tubetube.py12 symbols
tubetube/yt_downloader.py10 symbols
tubetube/settings.py6 symbols
tubetube/static/js_general_script.js3 symbols
tubetube/helpers.py3 symbols
tubetube/static/js_theme_switcher.js2 symbols
tubetube/static/js_table_script.js2 symbols

For agents

$ claude mcp add TubeTube \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page