Metadata-Version: 2.1
Name: agenius
Version: 4.0.2
Summary: A LyricsGenius fork with async ready features.
Home-page: https://github.com/dopebnan/AGenius.py
Author: dopebnan
Author-email: 82271322+dopebnan@users.noreply.github.com
License: LGPLv3+
Project-URL: Bug Tracker, https://github.com/dopebnan/AGenius.py/issues
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.7
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE.md
License-File: COPYING
License-File: COPYING.LESSER
License-File: COPYING.ORIGINAL.txt
Requires-Dist: beautifulsoup4 >=4.6.0
Requires-Dist: aiohttp <4,>=3.6.0

<div align="center">

# AGenius.py

[![Latest Release](https://img.shields.io/pypi/v/agenius?color=brightgreen&label=%20)](https://github.com/dopebnan/AGenius.py/releases "Releases")
![Python Version](https://img.shields.io/pypi/pyversions/agenius)
[![License: LGPLv3](https://img.shields.io/pypi/l/agenius)](LICENSE.md "License")
[![PyPI](https://img.shields.io/badge/-PyPI-blue)](https://pypi.org/project/agenius/ "PyPI")
[![Last Commit](https://img.shields.io/github/last-commit/dopebnan/AGenius.py)](https://github.com/dopebnan/AGenius.py/commits/master "Commits")
</div>

`AGenius.py` is a [LyricsGenius](https://github.com/johnwmillr/LyricsGenius) fork, making it easy to use, and async ready.

## Key Features
* Pythonic `async`/`await`.
* Removed every possible instance of the `Public API` to make it **safer**.

## Setup
You'll need a free [Genius](https://genius.com) account to get access to 
the [Genius API](https://genius.com/api-clients). This provides an `access_token` that is required.

## Installation
**Python 3.9 or higher**
You can use pip:
```shell
# Linux
python3 -m pip install agenius

# Windows
py -3 -m pip install agenius
```

## Examples
Importing the package and initiating the main class:
```python
import agenius
genius = agenius.Genius(token)
```
`PUBLIC_API` has been removed in this version. You have to pass an access token to the `Genius()` class.

To search for a specific song, you can either search by the `title` or `song_id`:
```python
# by title
song = await genius.search_song("Never Gonna Give You Up", "Rick Astley")

# by song_id
song = await genius.search_song(song_id=84851)
```

You can also look up artists and their songs via `artist_id`'s:
```python
# look up an artist
artist = await genius.artist(artist_id=artist_id)

# look up their songs
song_list = await genius.artist_songs(artist_id=artist_id, per_page=10, sort="title")
```

Configurable parameters in the `Genius()` class:
```python
genius.verbose = False  # Turns status messages off
genius.excluded_terms = ["(Remix)", "(Live)"]  # Exclude songs with these words in their title
```

## More Examples
### Get a song's lyrics

```python
import agenius

genius = agenius.Genius(token)

song = await genius.search_song("Never Gonna Give You Up")
lyrics = song.lyrics
```
### Get a list of an artist's songs, and get the lyrics of every one of them

```python
import agenius
genius = agenius.Genius(token)

async def get_lyrics(artist_id):
    song_list = await genius.artist_songs(artist_id, per_page=50, sort="title")

    lyrics = {}
    async for song in song_list:
        lyrics[song["title"]] = song.lyrics
    return lyrics
```

## License Notice
This program is free software: you can redistribute it and/or modify it under the terms of the 
GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, 
or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. 
If not, see <https://www.gnu.org/licenses/>.
