main
  1# Music Playlist Downloader Configuration
  2# Copy this file to /neo/music/music-playlist-dl.yaml and customize
  3
  4# Base directory for downloads
  5# - Downloads go to: {base_dir}/{show}/
  6# - Playlists go to: {base_dir}/../playlists/{artist} - {show}.m3u
  7# Example base_dir: /neo/music/mixes or /neo/music/podcasts
  8# Playlists will be in: /neo/music/playlists/
  9base_dir: /neo/music/mixes
 10
 11# Beets integration (optional, disabled by default)
 12# Enable this to automatically import podcasts to beets music library manager
 13# for enhanced metadata management, smart playlists, and database queries
 14beets:
 15  enable: false  # Set to true to enable beets integration
 16
 17  # Import new downloads automatically after each run
 18  import_after_download: true
 19
 20  # Write beets metadata to file tags (recommended)
 21  write_tags: true
 22
 23  # Default tags applied to ALL shows
 24  # These can be overridden per-show using beets_tags
 25  default_tags:
 26    albumtype: podcast
 27    genre: Electronic
 28    language: eng
 29
 30# Mixcloud shows to download
 31# Format: Mixcloud handle, artist name, show name, and optional beets_tags
 32mixcloud_shows:
 33  - handle: aboveandbeyond
 34    artist: Above & Beyond
 35    show: Group Therapy
 36    beets_tags:  # Optional: override/extend default_tags
 37      genre: Progressive Trance
 38      comments: "Weekly trance radio show"
 39  - handle: ArminvanBuuren
 40    artist: Armin van Buuren
 41    show: A State of Trance
 42    beets_tags:
 43      genre: Trance
 44      comments: "Longest-running trance show (since 2001)"
 45  - handle: CosmicGate
 46    artist: Cosmic Gate
 47    show: Wake Your Mind Radio
 48    # No beets_tags - uses default_tags only
 49  - handle: FerryCorsten
 50    artist: Ferry Corsten
 51    show: Resonation Radio
 52  - handle: paulvandyk
 53    artist: Paul van Dyk
 54    show: VONYC Sessions
 55  - handle: sandervandoornofficial
 56    artist: Sander van Doorn
 57    show: Identity
 58  - handle: victordinaire
 59    artist: Dinaire+Bissen
 60    show: This Is HalfwayHaus
 61
 62# SoundCloud shows to download
 63# Format: Full URL, artist name, and show name
 64soundcloud_shows:
 65  - url: https://soundcloud.com/garethemery/sets/the-gareth-emery-podcast
 66    artist: Gareth Emery
 67    show: The Gareth Emery Podcast
 68  - url: https://soundcloud.com/clublifebytiesto
 69    artist: Tiësto
 70    show: CLUBLIFE
 71
 72# yt-dlp options
 73yt_dlp_options:
 74  format: bestaudio        # Download best audio quality
 75  audio_format: opus       # Convert to Opus (smaller, better quality than MP3)
 76  audio_quality: 128K      # 128kbps Opus is excellent for podcasts/DJ mixes
 77  add_metadata: true       # Add metadata (artist, album) to files
 78  embed_thumbnail: true    # Embed artwork in audio files
 79  continue: true           # Resume partial downloads
 80  ignore_errors: true      # Continue on errors
 81
 82  # Alternative formats:
 83  # audio_format: mp3      # Use MP3 for broader compatibility (car stereos, etc.)
 84  # audio_format: m4a      # Use M4A/AAC for Apple devices
 85  # audio_quality: 192K    # Higher quality (larger files)
 86
 87# Directory Structure
 88# After running, your directory structure will look like:
 89#
 90# /neo/music/
 91# ├── mixes/                     # base_dir (or podcasts/)
 92# │   ├── Group Therapy/
 93# │   │   ├── .downloaded.txt              # Archive file (tracks downloaded IDs)
 94# │   │   ├── Group Therapy 657-abc123.m4a
 95# │   │   └── Group Therapy 658-def456.m4a
 96# │   ├── A State of Trance/
 97# │   │   ├── .downloaded.txt
 98# │   │   └── ASOT Episode 1255-xyz789.m4a
 99# │   └── CLUBLIFE/
100# │       ├── .downloaded.txt
101# │       └── CLUBLIFE Podcast 908-ghi012.m4a
102# └── playlists/                 # Shared playlists directory
103#     ├── Above & Beyond - Group Therapy.m3u
104#     ├── Armin van Buuren - A State of Trance.m3u
105#     └── Tiësto - CLUBLIFE.m3u
106#
107# Download Archive Files:
108# Each show directory contains a .downloaded.txt file that tracks episode IDs.
109# This prevents re-downloading episodes even if files are renamed or moved.
110# Do not delete these files - they ensure efficient incremental downloads.
111
112# Playlist Format
113# Playlists are standard M3U format with relative paths:
114#
115# #EXTM3U
116# ../Group Therapy/Group Therapy 657-abc123.m4a
117# ../Group Therapy/Group Therapy 658-def456.m4a
118
119# Podcast Information & Sources
120#
121# Above & Beyond - Group Therapy
122#   Weekly trance podcast (ABGT)
123#   https://podcasts.apple.com/us/podcast/above-beyond-group-therapy
124#
125# Armin van Buuren - A State of Trance
126#   Longest-running trance show (since 2001)
127#   https://www.astateoftrance.com/
128#
129# Cosmic Gate - Wake Your Mind Radio
130#   Weekly progressive/trance show
131#   https://podcasts.apple.com/us/podcast/cosmic-gate-wym-radio
132#
133# Ferry Corsten - Resonation Radio
134#   Weekly electronic music show
135#   https://www.ferrycorsten.com/radio
136#
137# Paul van Dyk - VONYC Sessions
138#   Grammy winner's weekly show
139#   https://podcasts.apple.com/us/podcast/paul-van-dyks-vonyc-sessions-podcast
140#
141# Gareth Emery - The Gareth Emery Podcast
142#   Original podcast (ended 2016)
143#   https://soundcloud.com/garethemery/sets/the-gareth-emery-podcast
144#
145# Tiësto - CLUBLIFE
146#   Weekly club tracks since 2007
147#   https://podcasts.apple.com/us/podcast/clublife
148
149# Beets Integration Workflow
150#
151# Beets (https://beets.io/) is a music library manager that provides:
152# - Rich metadata management and tagging
153# - Smart playlists based on queries
154# - Database-driven music organization
155# - MusicBrainz integration (not used for podcasts)
156#
157# Setup:
158# 1. Enable beets integration by setting beets.enable: true above
159# 2. Run music-playlist-dl --import-existing to import all existing files once
160# 3. Future runs will automatically import new downloads
161#
162# Files stay in {base_dir}/{show}/ - beets imports in-place (doesn't move)
163# This preserves yt-dlp's download archive (.downloaded.txt) for deduplication
164#
165# Tag Hierarchy:
166# - default_tags: Applied to ALL shows (albumtype, genre, language, etc.)
167# - beets_tags: Per-show overrides/extensions (genre, comments, year, etc.)
168# - Always set: artist and album (from show configuration)
169#
170# Example queries after import:
171#   beet ls albumtype:podcast          # List all podcasts
172#   beet ls genre:Trance                # List all trance shows
173#   beet ls artist:"Armin van Buuren"  # List ASOT episodes
174#   beet write albumtype:podcast        # Write tags to files