An open API service indexing awesome lists of open source software.

https://github.com/serial-ata/lyr

A tool to download and embed lyrics from multiple sources
https://github.com/serial-ata/lyr

lyrics lyrics-fetcher lyrics-finder lyrics-search rust

Last synced: 7 months ago
JSON representation

A tool to download and embed lyrics from multiple sources

Awesome Lists containing this project

README

          

# Lyr

[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/Serial-ATA/lyr/ci.yml?style=for-the-badge&logo=github)](https://github.com/Serial-ATA/lyr/actions/workflows/ci.yml)
[![Downloads](https://img.shields.io/crates/d/lyr?style=for-the-badge&logo=rust)](https://crates.io/crates/lyr)
[![Version](https://img.shields.io/crates/v/lyr?style=for-the-badge&logo=rust)](https://crates.io/crates/lyr)

Download and embed lyrics from multiple sources.

## Sources

* [AZLyrics](https://azlyrics.com)
* [Genius](https://genius.com)
* [JahLyrics](https://jah-lyrics.com)
* [Musixmatch](https://www.musixmatch.com)

NOTE: Genius currently has an issue where there will be missing newlines
between section headers, so the output may look like:

```
[Verse 1]
Foo
Bar Baz
Qux
[Chorus] # Notice this header immediately follows the last line of Verse 1
```

Not sure how to fix this as of now.

## Usage

Fetch and print the lyrics to stdout:
```console
$ lyr --artist="2Pac" --title="Changes"
```

Try to get the artist and title from the tags in the file:

For the list of supported files see [lofty-rs](https://github.com/Serial-ATA/lofty-rs#supported-formats).
```console
# NOTE: This will add the lyrics to the tags of the file
$ lyr --input="some-music-file.mp3"
# Use the `no-embed` flag to prevent this
$ lyr --input="some-music-file.mp3" --no-embed
```

Output the lyrics to a file:
```console
$ lyr --artist="2Pac" --title="Changes" lyrics.txt
```

## Config

This config is stored at `$CONFIG_DIR/lyr/config.toml`.

```toml
# Default flags to append to every command
flags = ''
# The list of fetchers to use when searching for lyrics
fetchers = ['AZLyrics', 'Genius', 'JahLyrics', 'Musixmatch']
```

## License

Licensed under either of

* Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)

at your option.

## Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.