Premier commit
This commit is contained in:
commit
3062472c97
5 changed files with 816 additions and 0 deletions
297
piexel.py
Normal file
297
piexel.py
Normal file
|
@ -0,0 +1,297 @@
|
|||
import requests
|
||||
|
||||
class PiexelErrors(Exception):
|
||||
pass
|
||||
|
||||
class InvalidToken(PiexelErrors):
|
||||
pass
|
||||
|
||||
class ParameterError(PiexelErrors):
|
||||
pass
|
||||
|
||||
class Piexel:
|
||||
def __init__(self, domain, app='', token='', endpoint='/api/'):
|
||||
self.app = app
|
||||
self.token = token
|
||||
self.domain = domain
|
||||
self.endpoint = endpoint
|
||||
self.debug_print = False
|
||||
|
||||
def _get_response(self, controller, fields, request_type='get'):
|
||||
"""
|
||||
Build response
|
||||
:param controller: controller à utiliser
|
||||
:param fields: champ à passer
|
||||
"""
|
||||
fields['app'] = self.app
|
||||
fields['token'] = self.token
|
||||
url = self.domain + self.endpoint + controller
|
||||
if request_type == 'get':
|
||||
response = requests.get(url, fields)
|
||||
elif request_type == 'post':
|
||||
response = requests.post(url, fields)
|
||||
elif request_type == 'put':
|
||||
response = requests.put(url, fields)
|
||||
elif request_type == 'delete':
|
||||
response = requests.delete(url, data=fields)
|
||||
if self.debug_print:
|
||||
print('resp:',response.text)
|
||||
response.encoding = 'utf-8'
|
||||
code = response.status_code
|
||||
data = response.json()
|
||||
if code == 403: # FORBIDDEN
|
||||
raise InvalidToken(data['message'])
|
||||
elif code == 400:
|
||||
raise ParameterError(data['message'])
|
||||
return data
|
||||
|
||||
def _get_request(self, allowed, mandatory=[], **params):
|
||||
"""
|
||||
Créé la requète
|
||||
"""
|
||||
fields = {}
|
||||
for key, val in params.items():
|
||||
if key in allowed:
|
||||
fields[key] = val
|
||||
for m in mandatory:
|
||||
if m not in fields.keys():
|
||||
raise ParameterError('The parameter ' + m + ' is required.')
|
||||
return fields
|
||||
|
||||
def get_films(self, **params):
|
||||
"""
|
||||
Récupère les films
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'title', 'title_vo', 'imdb_id', 'limit', 'first', 'first', 'files'], [], **params)
|
||||
return self._get_response('films', fields)
|
||||
|
||||
def get_series(self, **params):
|
||||
"""
|
||||
Récupère les séries
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'title', 'imdb_id', 'limit', 'first', 'first', 'episodes'], [], **params)
|
||||
return self._get_response('series', fields)
|
||||
|
||||
def get_episodes(self, **params):
|
||||
"""
|
||||
Récupère les épisodes
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'serie_id', 'title', 'imdb_id', 'limit', 'first', 'first', 'episodes'], [], **params)
|
||||
return self._get_response('episodes', fields)
|
||||
|
||||
def get_files(self, **params):
|
||||
"""
|
||||
Récupère les fichiers
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'path', 'name', 'limit', 'first', 'filable'], [], **params)
|
||||
return self._get_response('files', fields)
|
||||
|
||||
def get_actors(self, **params):
|
||||
"""
|
||||
Récupère les acteurs
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'name', 'imdb_id', 'tmdb_id', 'limit', 'first', 'films', 'series'], [], **params)
|
||||
return self._get_response('files', fields)
|
||||
|
||||
def get_files(self, **params):
|
||||
"""
|
||||
Récupère les fichiers
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'path', 'name', 'limit', 'first', 'filable', 'like'], [], **params)
|
||||
return self._get_response('files', fields)
|
||||
|
||||
def get_subtitles(self, **params):
|
||||
"""
|
||||
Récupère les sous-titres
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'path', 'name', 'limit', 'first', 'subtitlable'], [], **params)
|
||||
return self._get_response('subtitles', fields)
|
||||
|
||||
def get_broken(self, **params):
|
||||
"""
|
||||
Récupère les liens morts
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'type'], [], **params)
|
||||
return self._get_response('broken', fields)
|
||||
|
||||
def post_film(self, **params):
|
||||
"""
|
||||
Ajoute un film
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['title', 'year'], ['title'], **params)
|
||||
return self._get_response('films', fields, 'post')
|
||||
|
||||
def post_file(self, **params):
|
||||
"""
|
||||
Ajoute un fichier
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['path', 'name', 'type', 'type_id', 'quality', 'lang', 'subtitles'], ['path', 'name', 'type', 'type_id'], **params)
|
||||
return self._get_response('files', fields, 'post')
|
||||
|
||||
def post_subtitle(self, **params):
|
||||
"""
|
||||
Ajoute un sous-titre
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['path', 'name', 'type', 'type_id', 'quality', 'lang'], ['path', 'name', 'type', 'type_id'], **params)
|
||||
return self._get_response('subtitles', fields, 'post')
|
||||
|
||||
def post_serie(self, **params):
|
||||
"""
|
||||
Ajoute une série
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['title'], ['title'], **params)
|
||||
return self._get_response('series', fields, 'post')
|
||||
|
||||
def post_episode(self, **params):
|
||||
"""
|
||||
Ajoute un épisode d'une série
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['season', 'episode', 'serie_id'], ['season', 'episode', 'serie_id'], **params)
|
||||
return self._get_response('episodes', fields, 'post')
|
||||
|
||||
def post_actor(self, **params):
|
||||
"""
|
||||
Ajoute un acteur
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['name'], ['name'], **params)
|
||||
return self._get_response('episodes', fields, 'post')
|
||||
|
||||
def post_broken(self, **params):
|
||||
"""
|
||||
Ajoute un lien mort
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'type'], ['id', 'type'], **params)
|
||||
return self._get_response('broken', fields, 'post')
|
||||
|
||||
def put_film(self, **params):
|
||||
"""
|
||||
Edite un film
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'title', 'title_vo', 'tmdb_id', 'summary', 'cover_img', 'rating', 'runtime', 'release_date', 'autoFill'], ['id'], **params)
|
||||
return self._get_response('films', fields, 'put')
|
||||
|
||||
def put_file(self, **params):
|
||||
"""
|
||||
Edite un fichier
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'path', 'name', 'filable_type', 'filable_id', 'quality', 'lang', 'subtitles'], ['id'], **params)
|
||||
return self._get_response('files', fields, 'put')
|
||||
|
||||
def put_subtitle(self, **params):
|
||||
"""
|
||||
Edite un sous-titre
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'path', 'name', 'subtitlable_type', 'subtitlable_id', 'quality', 'lang'], ['id'], **params)
|
||||
return self._get_response('subtitles', fields, 'put')
|
||||
|
||||
def put_serie(self, **params):
|
||||
"""
|
||||
Edite une série
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'title', 'status', 'imdb_id', 'tmdb_id', 'summary', 'cover_img', 'rating', 'release_date', 'autoFill'], ['id'], **params)
|
||||
return self._get_response('series', fields, 'put')
|
||||
|
||||
def put_episode(self, **params):
|
||||
"""
|
||||
Edite un épisode d'une série
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'title', 'serid_id', 'tmdb_id', 'summary', 'cover_img', 'season', 'episode', 'rating', 'release_date'], ['id'], **params)
|
||||
return self._get_response('episodes', fields, 'put')
|
||||
|
||||
def put_actor(self, **params):
|
||||
"""
|
||||
Edite un acteur
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'name', 'imdb_id', 'tmdb_id', 'cover_img'], ['id'], **params)
|
||||
return self._get_response('actors', fields, 'put')
|
||||
|
||||
def put_broken(self, **params):
|
||||
"""
|
||||
Edite un lien mort
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id', 'treated'], ['id', 'treated'], **params)
|
||||
return self._get_response('broken', fields, 'put')
|
||||
|
||||
def delete_film(self, **params):
|
||||
"""
|
||||
Supprime un film
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id'], ['id'], **params)
|
||||
return self._get_response('films', fields, 'delete')
|
||||
|
||||
def delete_file(self, **params):
|
||||
"""
|
||||
Supprime un fichier
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id'], ['id'], **params)
|
||||
return self._get_response('files', fields, 'delete')
|
||||
|
||||
def delete_subtitle(self, **params):
|
||||
"""
|
||||
Supprime un sous-titre
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id'], ['id'], **params)
|
||||
return self._get_response('subtitles', fields, 'delete')
|
||||
|
||||
def delete_serie(self, **params):
|
||||
"""
|
||||
Supprime une série
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id'], ['id'], **params)
|
||||
return self._get_response('series', fields, 'delete')
|
||||
|
||||
def delete_episode(self, **params):
|
||||
"""
|
||||
Supprime un épisode d'une série
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id'], ['id'], **params)
|
||||
return self._get_response('episodes', fields, 'delete')
|
||||
|
||||
def delete_actor(self, **params):
|
||||
"""
|
||||
Supprime un acteur
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id'], ['id'], **params)
|
||||
return self._get_response('actors', fields, 'delete')
|
||||
|
||||
def delete_broken(self, **params):
|
||||
"""
|
||||
Supprime un lien mort
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['id'], ['id'], **params)
|
||||
return self._get_response('broken', fields, 'delete')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
piexel = Piexel('http://piexel.rez', 'app', 'token')
|
||||
film = piexel.get_films(title='test')
|
||||
print(film)
|
Loading…
Add table
Add a link
Reference in a new issue