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.4.1.tar.gz (94.7 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.4.1-py3-none-any.whl (38.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for kikusan-0.4.1.tar.gz
Algorithm Hash digest
SHA256 a3a03e93a22b559ef05a1f110b5cc74f74dfa342fe1bf37a026e224e5de005f2
MD5 1bb4acb38c06ca2ac7d328733220aa4a
BLAKE2b-256 c89053c5dffa8bfdf1a42011185b67808a1c4482f759436674cc8a26c99c0ec6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: kikusan-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 38.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.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c0014e003be558e7afea470c5778291b82a7876a6f2be91336bf3ea965931976
MD5 42dabb741d38d2625fb60fdd048ed97e
BLAKE2b-256 b51f160adaab3e4352b15a26107fbabd3de6d126863e4d2b3c1e83d9a22176b5

See more details on using hashes here.

Provenance

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