# Lyrics-Client
**Get the lyrics of your favorite musics !**
## Features
- Automatic lyrics fetching from different services
- Currently supported : Genius, Musixmatch, AZLyrics
- Title and artist verification to find the best match
- Easy to use, straightforward interface
- Extensive results information
- Possible to use via DI integration
## Installation
### Pip
```
pip install lyrics-client
```
### Poetry
[Poetry](https://python-poetry.org/) is a Python dependency management and packaging tool. I actually use it for this project.
```
poetry add lyrics-client
```
## Usage
There are 2 ways to use this library : using the LyricsClient object or via the DI.
### Using LyricsClient
The library exposes the LyricsClient class. This class has 2 methods : `get_lyrics` and `get_from_song`.
Both methods do the same thing : fetching lyrics and returns the results in a list of `FetchLyricsResult`.
However, `get_lyrics` accept a `FetchLyricsCommand` object as parameter, while `get_from_song` accept a song title, the song artists and optionally the clients to use.
**Example :**
```python
from lyrics_client import LyricsClient
client = LyricsClient()
results = client.get_from_song("in the end", "linkin park")
lyrics = results[0].lyrics
```
### Using DI
The library also exposes a `BaseLyricsClient` interface and a `add_lyrics_client` function for [Taipan-DI](https://github.com/Billuc/Taipan-DI).
In this method, the clients are registered as a Pipeline. All you need to do is to resolve the pipeline and execute it.
**Example :**
```python
from lyrics_client import BaseLyricsClient, add_lyrics_client, FetchLyricsCommand
from taipan_di import DependencyCollection
services = DependencyCollection()
add_lyrics_client(services)
provider = services.build()
client = provider.resolve(BaseLyricsClient)
request = FetchLyricsCommand("in the end", "linkin park")
results = client.exec(request)
lyrics = results[0].lyrics
```
## Inspirations
This library is partially based on spotDL's [spotify-downloader](https://github.com/spotDL/spotify-downloader).
Raw data
{
"_id": null,
"home_page": "https://github.com/Billuc/lyrics-client",
"name": "lyrics-client",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9,<4.0",
"maintainer_email": "",
"keywords": "lyrics client,lyrics,python,genius,azlyrics, musixmatch",
"author": "Billuc",
"author_email": "billuc@hotmail.fr",
"download_url": "https://files.pythonhosted.org/packages/ff/ef/ad7ddda378a020d949cadde3ebe137547107ba09a25edbce054e177f75f5/lyrics_client-0.0.4.tar.gz",
"platform": null,
"description": "# Lyrics-Client\n\n**Get the lyrics of your favorite musics !**\n\n## Features\n\n - Automatic lyrics fetching from different services\n - Currently supported : Genius, Musixmatch, AZLyrics\n - Title and artist verification to find the best match\n - Easy to use, straightforward interface\n - Extensive results information\n - Possible to use via DI integration\n\n## Installation\n\n### Pip\n\n```\npip install lyrics-client\n```\n\n### Poetry\n\n[Poetry](https://python-poetry.org/) is a Python dependency management and packaging tool. I actually use it for this project.\n\n```\npoetry add lyrics-client\n```\n\n## Usage\n\nThere are 2 ways to use this library : using the LyricsClient object or via the DI.\n\n### Using LyricsClient\n\nThe library exposes the LyricsClient class. This class has 2 methods : `get_lyrics` and `get_from_song`.\n\nBoth methods do the same thing : fetching lyrics and returns the results in a list of `FetchLyricsResult`.\n\nHowever, `get_lyrics` accept a `FetchLyricsCommand` object as parameter, while `get_from_song` accept a song title, the song artists and optionally the clients to use.\n\n**Example :**\n\n```python\nfrom lyrics_client import LyricsClient\n\nclient = LyricsClient()\nresults = client.get_from_song(\"in the end\", \"linkin park\")\n\nlyrics = results[0].lyrics\n```\n\n### Using DI\n\nThe library also exposes a `BaseLyricsClient` interface and a `add_lyrics_client` function for [Taipan-DI](https://github.com/Billuc/Taipan-DI).\n\nIn this method, the clients are registered as a Pipeline. All you need to do is to resolve the pipeline and execute it.\n\n**Example :**\n\n```python\nfrom lyrics_client import BaseLyricsClient, add_lyrics_client, FetchLyricsCommand\nfrom taipan_di import DependencyCollection\n\nservices = DependencyCollection()\nadd_lyrics_client(services)\n\nprovider = services.build()\nclient = provider.resolve(BaseLyricsClient)\nrequest = FetchLyricsCommand(\"in the end\", \"linkin park\")\n\nresults = client.exec(request)\nlyrics = results[0].lyrics\n```\n\n## Inspirations\n\nThis library is partially based on spotDL's [spotify-downloader](https://github.com/spotDL/spotify-downloader).\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A generic client to fetch lyrics from a song's data",
"version": "0.0.4",
"project_urls": {
"Documentation": "https://github.com/Billuc/lyrics-client",
"Homepage": "https://github.com/Billuc/lyrics-client",
"Repository": "https://github.com/Billuc/lyrics-client"
},
"split_keywords": [
"lyrics client",
"lyrics",
"python",
"genius",
"azlyrics",
" musixmatch"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6fa02ad045d2883290888c988e09a39443bc9e75337b2d85e34b0f3083e6a740",
"md5": "e13ac4bc6eab152f0ec93584cd5f4082",
"sha256": "91bdf2cd6985d969d5e415d632b2d7d3878bcf06be34e6fb2412c03fe733dc7d"
},
"downloads": -1,
"filename": "lyrics_client-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e13ac4bc6eab152f0ec93584cd5f4082",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<4.0",
"size": 12556,
"upload_time": "2023-07-20T20:11:45",
"upload_time_iso_8601": "2023-07-20T20:11:45.378128Z",
"url": "https://files.pythonhosted.org/packages/6f/a0/2ad045d2883290888c988e09a39443bc9e75337b2d85e34b0f3083e6a740/lyrics_client-0.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ffefad7ddda378a020d949cadde3ebe137547107ba09a25edbce054e177f75f5",
"md5": "df98d0d8bfbeac5a21a8e46efffa78b8",
"sha256": "9fe352420cc5664e3798257d250d9f76e50bee84766f9d3da3015607ef558aac"
},
"downloads": -1,
"filename": "lyrics_client-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "df98d0d8bfbeac5a21a8e46efffa78b8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<4.0",
"size": 7941,
"upload_time": "2023-07-20T20:11:46",
"upload_time_iso_8601": "2023-07-20T20:11:46.754260Z",
"url": "https://files.pythonhosted.org/packages/ff/ef/ad7ddda378a020d949cadde3ebe137547107ba09a25edbce054e177f75f5/lyrics_client-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-20 20:11:46",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Billuc",
"github_project": "lyrics-client",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "lyrics-client"
}