Skip to main content

A command line tool to fetch lyrics from various streaming providers

Project description

lyriks License PyPI version PyPI downloads

A command line tool that fetches lyrics from various streaming providers.

Installation

You can install lyriks from PyPI using uv or pip:

# uv
uv tool install lyriks

# pip
pip install lyriks

To install it from source instead, clone the repository and build the wheel before installing it:

uv build

# uv
uv tool install dist/lyriks-*-py3-none-any.whl

# pip
pip install dist/lyriks-*-py3-none-any.whl

You can also run the script directly from within the repository:

./lyriks.py /path/to/music/folder

Make sure to first install the required dependencies from pyproject.toml (i.e. uv sync).

Usage

Run the script with the path to the folder containing your music as an argument. This can be your whole collection, a single artist, or a single album.

lyriks /path/to/music/folder

By default, lyrics are fetched from Genie, but you can switch to other providers with the --provider/-P flag.

Currently supported providers are:

The script will search for audio files (.flac or .mp3) in the given folder, and attempt to fetch the lyrics. Note that it will only be able to do that for files that are properly tagged with MusicBrainz MBIDs (specifically musicbrainz_releasegroupid and musicbrainz_trackid). It then uses them to resolve the provider ID from the release or release group on MusicBrainz. Thus, at least one release in the release group must have an album URL relationship for the selected provider.

If successful, the lyrics will be downloaded and stored next to the audio files with the appropriate extension (.lrc or .txt, depending on whether they're synced or not).

For more information on usage, check the help message:

lyriks --help

Exclude files and folders

You can recursively ignore folders by adding a (empty) .nolyrics file inside the folder you want to exclude. This can be useful for Western artists, where Genie is unlikely to have lyrics, or for instrumental releases.

Likewise, you can ignore specific songs by creating a file with the same name as the audio file but the extension changed to .nolyrics. For example, a track named 01 Song.flac can be excluded by creating a file named 01 Song.nolyrics.

Excluded files won't be queried at all, which can noticeably speed up the synchronisation process for large collections.

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

lyriks-0.6.0.tar.gz (35.6 kB view details)

Uploaded Source

Built Distribution

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

lyriks-0.6.0-py3-none-any.whl (42.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lyriks-0.6.0.tar.gz
  • Upload date:
  • Size: 35.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for lyriks-0.6.0.tar.gz
Algorithm Hash digest
SHA256 e0936a1d805da55b0e8ce83df7da195dcf11fa4d948e9df00ee637335e5464c5
MD5 104afadc81468d2e885173101ff05a16
BLAKE2b-256 2095329814c55ac4e72f89d93434c4abbb3c2ebef20fadec188e35f406053c91

See more details on using hashes here.

File details

Details for the file lyriks-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: lyriks-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 42.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for lyriks-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0bf8ee54686cba60f8d2431cfef91f44dae8e474d464d23f6626051e5eed58f1
MD5 b50df93083f93153c1945a4c513aa2d4
BLAKE2b-256 6803a593d947da6fb4e575ea2524728b71a4414b163521b8f99de728da662b84

See more details on using hashes here.

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