github guillevc/yubal v0.2.0
✨ v0.2.0 — Playlists support

6 hours ago

This is a major release featuring playlist support, a rewritten backend, and numerous UI improvements.

🎵 Playlist Downloads

Download YouTube Music playlists, not just albums. Each track goes to its proper album folder, and an M3U file references them—no duplicates.

  data/
  ├── Pink Floyd/
  │   └── 1973 - The Dark Side of the Moon/
  │       ├── 01 - Speak to Me.opus
  │       └── cover.jpg
  └── Playlists/
      ├── My Favorites.m3u
      └── My Favorites.jpg

🚀 New Features

  • Playlist support — Download full playlists with M3U generation and cover art (#4)
  • Automatic album detection — The server now auto-detects whether a playlist URL is actually an album. Generates M3U files only on playlists.
  • Max items limit — Cap tracks downloaded from a playlist
  • CLI tool — Use yubal standalone from the command line
  • UI refresh — Redesigned header/footer, gradient background, real-time structured logs, playlist metadata in downloads panel

🏗️ Architecture Overhaul

  • Removed beets — Metadata now comes directly from YouTube Music via ytmusicapi, with fuzzy track matching via rapidfuzz
  • Monorepo structureyubal (core library + CLI), yubal-api (FastAPI), web (React)
  • Simplified config — Just two directories: data for output, config for settings

⚠️ Breaking Changes from v0.1

Volumes

Old New
/app/beets (removed)
/app/ytdlp /app/config/ytdlp

Environment Variables

Old New
YUBAL_DATA_DIR YUBAL_DATA
YUBAL_BEETS_DIR (removed)
YUBAL_YTDLP_DIR (removed)
YUBAL_CONFIG

YUBAL_CONFIG is the new base config directory. Cookies go in $YUBAL_CONFIG/ytdlp/cookies.txt.

Migration

# compose.yaml
volumes:
-  - ./beets:/app/beets
-  - ./ytdlp:/app/ytdlp
+  - ./config:/app/config

Move your ytdlp/cookies.txt to config/ytdlp/cookies.txt.

🐳 Docker Compose

services:
  yubal:
    image: ghcr.io/guillevc/yubal:0.2.0
    ports:
      - 8000:8000
    environment:
      YUBAL_TZ: UTC
    volumes:
      - ./data:/app/data
      - ./config:/app/config
    restart: unless-stopped

💜 Support

Enjoying yubal? A small contribution helps keep the project going:

ko-fi


Full Changelog: v0.1.4...v0.2.0

Don't miss a new yubal release

NewReleases is sending notifications on new releases.