# Song Metadata Client
**Get metadata about your favorite songs and playlists !**
## Features
- Automatic metadata fetching from different services
- Currently supported : Spotify, Youtube Music
- Metadata fetching from an URL or a query
- Supports playlist URLs
- Easy to use, straightforward interface
- Possible to use via DI integration
## Installation
### Pip
```
pip install song-metadata-client
```
### Poetry
[Poetry](https://python-poetry.org/) is a Python dependency management and packaging tool. I actually use it for this project.
```
poetry add song-metadata-client
```
## Usage
There are 2 ways to use this library : using the SongMetadataClient object or via the DI.
### Using SongMetadataClient
The library exposes the SongMetadata class. This class has 1 methods : `search`.
This method fetches the metadata corresponding to the request you give it, whether it is an URL or a query. It returns the result as a `SongMetadata` object or a `PlaylistMetadata` object.
**Example :**
```python
from song_metadata_client import SongMetadataClient
client = SongMetadataClient()
result = client.search("in the end - linkin park")
title = result.title # In The End
```
### Using DI
The library also exposes a `BaseMetadataClient` interface and a `add_song_metadata_client` function for [Taipan-DI](https://github.com/Billuc/Taipan-DI).
In this function, the clients are registered as a Pipeline. All you need to do is to resolve the pipeline and execute it.
**Example :**
```python
from song_metadata_client import BaseMetadataClient, add_song_metadata_client
from taipan_di import DependencyCollection
services = DependencyCollection()
add_song_metadata_client(services)
provider = services.build()
client = provider.resolve(BaseMetadataClient)
result = client.exec("in the end - linkin park")
title = result.title # In The End
```
## 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/song-metadata-client",
"name": "song-metadata-client",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9,<4.0",
"maintainer_email": "",
"keywords": "metadata,python,song metadata,spotify,youtube,youtube music,music,song",
"author": "Billuc",
"author_email": "billuc@hotmail.fr",
"download_url": "https://files.pythonhosted.org/packages/60/7c/bb34fbeb814bba5c7b074b7a7ec1a3ce8c6888d614b1364906f330ae8460/song_metadata_client-0.0.2.tar.gz",
"platform": null,
"description": "# Song Metadata Client\n\n**Get metadata about your favorite songs and playlists !**\n\n## Features\n\n - Automatic metadata fetching from different services\n - Currently supported : Spotify, Youtube Music\n - Metadata fetching from an URL or a query\n - Supports playlist URLs\n - Easy to use, straightforward interface\n - Possible to use via DI integration\n\n## Installation\n\n### Pip\n\n```\npip install song-metadata-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 song-metadata-client\n```\n\n## Usage\n\nThere are 2 ways to use this library : using the SongMetadataClient object or via the DI.\n\n### Using SongMetadataClient\n\nThe library exposes the SongMetadata class. This class has 1 methods : `search`.\n\nThis method fetches the metadata corresponding to the request you give it, whether it is an URL or a query. It returns the result as a `SongMetadata` object or a `PlaylistMetadata` object.\n\n**Example :**\n\n```python\nfrom song_metadata_client import SongMetadataClient\n\nclient = SongMetadataClient()\nresult = client.search(\"in the end - linkin park\")\n\ntitle = result.title # In The End\n```\n\n### Using DI\n\nThe library also exposes a `BaseMetadataClient` interface and a `add_song_metadata_client` function for [Taipan-DI](https://github.com/Billuc/Taipan-DI).\n\nIn this function, 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 song_metadata_client import BaseMetadataClient, add_song_metadata_client\nfrom taipan_di import DependencyCollection\n\nservices = DependencyCollection()\nadd_song_metadata_client(services)\n\nprovider = services.build()\nclient = provider.resolve(BaseMetadataClient)\n\nresult = client.exec(\"in the end - linkin park\")\ntitle = result.title # In The End\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 metadata for any song",
"version": "0.0.2",
"project_urls": {
"Documentation": "https://github.com/Billuc/song-metadata-client",
"Homepage": "https://github.com/Billuc/song-metadata-client",
"Repository": "https://github.com/Billuc/song-metadata-client"
},
"split_keywords": [
"metadata",
"python",
"song metadata",
"spotify",
"youtube",
"youtube music",
"music",
"song"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0f222330f5d6ee88a686090dff487bafa5456b4fe0afd053a45f5eb7a03f723a",
"md5": "c7bdebc713ec92254124da6c141f9072",
"sha256": "bb88f2931b5f1fd8ed1c39ebdeed322553d9e045ce9ba84095516ff6300f5f0b"
},
"downloads": -1,
"filename": "song_metadata_client-0.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c7bdebc713ec92254124da6c141f9072",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<4.0",
"size": 15150,
"upload_time": "2023-06-22T20:38:41",
"upload_time_iso_8601": "2023-06-22T20:38:41.850989Z",
"url": "https://files.pythonhosted.org/packages/0f/22/2330f5d6ee88a686090dff487bafa5456b4fe0afd053a45f5eb7a03f723a/song_metadata_client-0.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "607cbb34fbeb814bba5c7b074b7a7ec1a3ce8c6888d614b1364906f330ae8460",
"md5": "a1da9898df0de50b8418c290c2bc05fc",
"sha256": "5e5438d3c58f4165ee95b5dae6f28a473ba97c2323a1ad914087453f6b7ab424"
},
"downloads": -1,
"filename": "song_metadata_client-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "a1da9898df0de50b8418c290c2bc05fc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<4.0",
"size": 7857,
"upload_time": "2023-06-22T20:38:43",
"upload_time_iso_8601": "2023-06-22T20:38:43.455438Z",
"url": "https://files.pythonhosted.org/packages/60/7c/bb34fbeb814bba5c7b074b7a7ec1a3ce8c6888d614b1364906f330ae8460/song_metadata_client-0.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-06-22 20:38:43",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Billuc",
"github_project": "song-metadata-client",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "song-metadata-client"
}