Metadata-Version: 2.1
Name: Anisearch
Version: 1.1.0
Summary: Anisearch is the lib for accessing anime or manga from anilist.co on the Python Platform.
Home-page: https://github.com/MeGaNeKoS/Anisearch
Author: めがねこ
Author-email: evictory91@gmail.com
License: MIT
Keywords: Anime Manga Anilist
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Description-Content-Type: text/markdown
License-File: LICENSE

# Anisearch
Anilist API module for python. you only need to copy the Anilist folder to your own script.

### Executing program

* How to run the program
* Import module

```python
from Anisearch import Anilist

instance = Anilist()
```

From there you can get information from Anilist using their new GraphQL API.
To get data on a known ID.
```python
instance.get.anime(13601) # Return data on PSYCHO-PASS 
instance.get.manga(64127) # Return data on Mahouka Koukou no Rettousei
instance.get.staff(113803) # Return data on Kantoku
instance.get.studio(7) # Return data on J.C. Staff
```

Searching is also making a return.
```python
instance.search.anime("Sword") # Anime search results for Sword.
instance.search.manga("Sword") # Manga search results for Sword.
instance.search.character("Tsutsukakushi") # Character search results for Tsutsukakushi.
instance.search.staff("Kantoku") # Staff search results for Kantoku.
instance.search.studio("J.C. Staff") # Studio search result for J.C. Staff.
```
A note about the searching and getting:
```python
search(term, page = 1, perpage = 10)
get(item_id)
```
Pagination is done automatically in the API. By default, you'll get 10 results per page. 
If you want more, just change the per page value. pageInfo is always the first result in the returned data.
Pages start at 1 and if you want another page, just replace page with the next number. 
query_string is to set what info you want to display.

### Customization
You can set your own settings as follows
```python
import logging
from Anisearch import Anilist
# for init instance
SETTINGS = {
    'header': {
        'Content-Type': 'application/json',
        'User-Agent': 'Anisearch (github.com/MeGaNeKoS/Anisearch)',
        'Accept': 'application/json'},
    'api_url': 'https://graphql.anilist.co'
}
request_param = {}  # this is for the requests lib parameters.
instance = Anilist(log_level=logging.INFO, settings = SETTINGS, request_param = request_param)

# for instance get/search parameters
retry = 10
instance.get.anime(13601, num_retries=retry)  # default 10
```

### Todo
* Add more error handling when the API returns an error.
    - currently is limited to 429 too many requests. You can help me by providing a log when other errors occur.

Change Log
==========
1.0.2 (28/10/2022)
- Object/Memory optimization
- Supress any error by returning error message
- Better retry mechanism
- Change the default query to match the anilist website


1.0.1 (23/06/2022)
- Add rate limit(too many request) handler

1.0.0 (31/08/2021)
------------------
- First Release
