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.6.0.tar.gz (102.3 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.6.0-py3-none-any.whl (46.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for kikusan-0.6.0.tar.gz
Algorithm Hash digest
SHA256 c26efb4465ca06f5235e7e756c1137782d385fa048539b5378031a5d382ec05d
MD5 ec26628d7cee139bdd8b46c597fb4a28
BLAKE2b-256 c15eace7aa8eb0d57e74e03804ef539fe75640df1015ac69feb5381d87aef593

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: kikusan-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 46.3 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.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a6bd4ab871b5acf570f629025e06a7358d6a7698a4643bd1fb5798bd41394eeb
MD5 d03b7da3a1dba1d1571e542161dba3cd
BLAKE2b-256 7a7abe763471833f012e99fa065f1b29587bd13c5d9fb704f59071e5952f462c

See more details on using hashes here.

Provenance

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