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.7.0.tar.gz (104.5 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.7.0-py3-none-any.whl (49.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for kikusan-0.7.0.tar.gz
Algorithm Hash digest
SHA256 d02f9d9d26a5873e675902bd59648209acf17a54448e970608074154a05d6523
MD5 d928590a00368f2cc0812c78edceccc6
BLAKE2b-256 3b7535687ca06ab428a9d94128abcd782abe0b45819636a9182d2574e57496fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for kikusan-0.7.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.7.0-py3-none-any.whl.

File metadata

  • Download URL: kikusan-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 49.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.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c09326ec0fa252249241a7a1181615095e4b97f34acfd91cb8a14cfdf383a0f9
MD5 2dc7e93bda063804acea95e7c36960ce
BLAKE2b-256 802880c4eb9e73dfda85f035c62024be5fcfe1967610f069f75712066f5f19eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for kikusan-0.7.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