Package: anipy
# Anipy[![Build Status](https://travis-ci.org/twissell-/anipy.svg?branch=master)](https://travis-ci.org/twissell-/anipy)[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d811779af6ee4c14a03137894930bb04)](https://www.codacy.com/app/dmaggioesne/anipy?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=twissell-/anipy&amp;utm_campaign=Badge_Grade)[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/d811779af6ee4c14a03137894930bb04)](https://www.codacy.com/app/dmaggioesne/anipy?utm_source=github.com&utm_medium=referral&utm_content=twissell-/anipy&utm_campaign=Badge_Coverage)[![Python Version](https://img.shields.io/badge/python-3.5-blue.svg)]()[![Project License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/twissell-/anipy/master/LICENSE)Anipy is a python library that wraps and organize the [Anilist] rest api into modules, classes and functions so it can be used quick, easy, and right out of the box. You can take a look at the api [official docs]. **Anilist is a [Josh Star]'s project**## Table of contents* [Installation](#installation)* [Usage](#usage)* [Authentication](#authentication)* [Resources](#resources)* [Roadmap](#roadmap)## InstallationFor now the only available versions are alphas. You can Instaled the las by:```bash$ git clone https://github.com/twissell-/anipy.git$ cd anipy$ python setup.py # Be sure using Python 3```## UsageI've tried to keep the developer interface as simple as possible.### AuthenticationBefore you can access any Anilist resource you have to get authenticated. Once you have [created a client] you must configure ```auth.AuthenticationProvider``` class with your credentials.Now you can get authenticated with any of the available [grant types]. Aditionaly, Anipy have a ```GrantType.refreshToken``` in case you have saved a refresh token from a previous authentication. *Note that only code and pin authentication gives you a refresh token.*```pythonfrom anipy import AuthenticationProviderfrom anipy import Authenticationfrom anipy import GrantTypeAuthenticationProvider.config('your-client-id', 'your-client-secret', 'your-redirect-uri')auth = Authentication.fromCredentials()# orauth = Authentication.fromCode('code')# orauth = Authentication.fromPin('pin')# Now you can save the refresh tokenrefresh_token = auth.refreshTokenauth = Authentication.fromRefreshToken(refresh_token)```Authentication expires after one hour and will refresh automatically, nevertheless you can do it manually at any time, ie.:```pythonif auth.isExpired:auth.refresh()```### ResourcesResources are one of the most important parts of the library. They are in charge of go an get the data from the Anilist API. Each domain class have a resource, you can compare them to *Data Access Objects*. All resouces are **Singletons**.In order to keep things simple you can access the resource from class it serves```python# Current logged useruser = User.resource().principal()# A user for his Id or Display Nameuser = User.resource().byId(3225)user = User.resource().byDisplayName('demo')```Some resources are injected in other classes also in order to keep things simple (ie. ```AnimeListResource```). So if you want to get de watching list of a user you can do:```python# The long wayresource = AnimeListResource()watching_list = resource.byUserId(user.id)# Or the short waywatching_list = user.watching```## RoadmapHere is a sumary of the project state.### Next Release: 0.1- [x] **Authentication**- [x] Authorization Code- [x] Authorization Pin- [x] Client Credentials- [x] **User**- [x] Basics- [ ] **User Lists**- [ ] Animelist- [x] Update watched episodes- [x] Update rewatched- [x] Update notes- [x] Update list status- [ ] Update score (simple)- [ ] Create a entry- [ ] Remove entry- [ ] Mangalist- [ ] List Scores types- [ ] **Anime**- [ ] Basics- [ ] Airing- [ ] Search- [ ] **Manga**- [ ] Basics- [ ] Search### Out of ScopeThing that I'm going to do soon.- Advance rating score- Custom lists[Anilist]: http://Anilist.co[official docs]: https://anilist-api.readthedocs.io[Josh Star]: https://github.com/joshstar[created a client]: https://anilist-api.readthedocs.io/en/latest/introduction.html#creating-a-client[grant types]:https://anilist-api.readthedocs.io/en/latest/authentication.html#which-grant-type-to-use