Skip to main content

Search and download music from YouTube Music with lyrics

Project description

Kikusan

Search and download music from YouTube Music with lyrics.

Features

  • Search YouTube Music
  • Download audio in OPUS/MP3/FLAC format
  • Playlist support (download entire playlists)
  • Quick download (search and download first match)
  • Automatic lyrics fetching from lrclib.net (LRC format)
  • CLI and web interface
  • Docker support
  • Plugin system for custom music sources (RSS feeds, listenbrainz, etc.)
  • Scheduled sync with cron support

Plugin System

Kikusan supports plugins for syncing music from various sources beyond standard playlists:

Built-in Plugins:

  • listenbrainz - Weekly recommendations from listenbrainz.org
  • rss - Generic RSS/Atom feed parser for music podcasts, blogs, etc.

Usage:

# List available plugins
kikusan plugins list

# Run a plugin once
kikusan plugins run listenbrainz --config '{"user": "myuser"}'

# Schedule in cron.yaml
# See cron.example.yaml for configuration examples

Creating Third-Party Plugins:

See examples/third-party-plugin/ for a complete example of creating your own plugin. Plugins are distributed as Python packages and automatically discovered via entry points.

Installation

uv sync

Usage

CLI

# Search for music
kikusan search "Bohemian Rhapsody"

# Download by video ID
kikusan download bSnlKl_PoQU

# Download by URL
kikusan download --url "https://music.youtube.com/watch?v=bSnlKl_PoQU"

# Search and download first match
kikusan download --query "Bohemian Rhapsody Queen"

# Download entire playlist
kikusan download --url "https://music.youtube.com/playlist?list=..."

# Custom filename format
kikusan download bSnlKl_PoQU --filename "%(title)s"

# Options
kikusan download bSnlKl_PoQU --output ~/Music --format mp3

Web Interface

kikusan web
# Open http://localhost:8000

Docker

docker compose up -d
# Open http://localhost:8000

Configuration

Environment variables:

Variable Default Description
KIKUSAN_DOWNLOAD_DIR ./downloads Download directory
KIKUSAN_AUDIO_FORMAT opus Audio format (opus, mp3, flac)
KIKUSAN_FILENAME_TEMPLATE %(artist,uploader)s - %(title)s Filename template (yt-dlp format)
KIKUSAN_WEB_PORT 8000 Web server port
KIKUSAN_WEB_PLAYLIST None M3U playlist name for web downloads (optional)

Requirements

  • Python 3.12+
  • ffmpeg (for audio processing)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kikusan-0.5.0.tar.gz (99.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kikusan-0.5.0-py3-none-any.whl (43.0 kB view details)

Uploaded Python 3

File details

Details for the file kikusan-0.5.0.tar.gz.

File metadata

  • Download URL: kikusan-0.5.0.tar.gz
  • Upload date:
  • Size: 99.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kikusan-0.5.0.tar.gz
Algorithm Hash digest
SHA256 9933ef3b89278368a68e31be717fba5a319eb7e338b21997f9f765f12be18a05
MD5 94dc50e0ce31dda880aaca080c0efe77
BLAKE2b-256 8f6d96f221016e2e8b543c0f3fd5bac3b982df1332397bd1f766df88453cc05f

See more details on using hashes here.

Provenance

The following attestation bundles were made for kikusan-0.5.0.tar.gz:

Publisher: publish.yml on dadav/kikusan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kikusan-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: kikusan-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 43.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kikusan-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2e1b8ec415f251067db3c0124cc28cf0b8cb654b2ba47f28429cedcfecc5666a
MD5 9e70dfe0838234d257d3d75470ce3f70
BLAKE2b-256 8059777669a097897e12d7b357d29417463992d554720b3a9f0af68598588301

See more details on using hashes here.

Provenance

The following attestation bundles were made for kikusan-0.5.0-py3-none-any.whl:

Publisher: publish.yml on dadav/kikusan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page