Commentaires
This commit is contained in:
parent
45f97936f0
commit
036a432b48
5 changed files with 63 additions and 75 deletions
|
@ -1,10 +1,10 @@
|
|||
|
||||
[api]
|
||||
# Valeur app à transmettre à l'API
|
||||
# Identifiant de connexion à transmettre à l'API
|
||||
app = ''
|
||||
# Token à transmettre à l'API
|
||||
# Token de connexion à transmettre à l'API
|
||||
token = ''
|
||||
# Formats à reconnaitre
|
||||
# Extensions à reconnaître comme extensions vidéos valides
|
||||
extensions = 'avi','mkv','mp4','m2ts','rmvb'
|
||||
# Serveur où appeler l'API
|
||||
server = 'http://piexel.rez'
|
||||
|
|
18
file.py
18
file.py
|
@ -16,19 +16,28 @@ class File:
|
|||
self.fileable_type = {None: None, 'App\\Film':'film', 'App\\Episode':'episode'}[api_fileable_type]
|
||||
|
||||
def get_ext(self):
|
||||
"""
|
||||
Donne l'extension du fichier
|
||||
"""
|
||||
_, ext = posixpath.splitext(self.name)
|
||||
return ext
|
||||
|
||||
def without_ext(self):
|
||||
"""
|
||||
Donne le nom du fichier sans extension
|
||||
"""
|
||||
n, ext = posixpath.splitext(self.name)
|
||||
return n
|
||||
|
||||
def extract_title(self, tok):
|
||||
# extrait un titre de film depuis la variable #TITLE#
|
||||
"""
|
||||
extrait un titre de film depuis la variable #TITLE#
|
||||
"""
|
||||
# récupère le titre
|
||||
if 'TITLE' in self.info:
|
||||
fname = self.info['TITLE']
|
||||
else:
|
||||
fname, ext = posixpath.splitext(self.name)
|
||||
fname = self.without_ext()
|
||||
# 1) séparateurs
|
||||
fname = fname.replace('.', ' ')
|
||||
fname = fname.replace('_', ' ')
|
||||
|
@ -70,8 +79,9 @@ class File:
|
|||
self.fileable_type = 'film'
|
||||
|
||||
def filename_same(self, other):
|
||||
# Compare les noms de fichiers de self et de other
|
||||
# En supprimant les espaces, la date, et les marques de qualitée
|
||||
"""
|
||||
Vérifie si les deux noms de fichiers sont les mêmes
|
||||
"""
|
||||
return self.name == other.name
|
||||
|
||||
def __eq__(self, other):
|
||||
|
|
30
main.py
30
main.py
|
@ -45,8 +45,10 @@ def ftpwalk(directory, ftp):
|
|||
|
||||
def visit_folder(domain, api, rules, tok):
|
||||
"""
|
||||
Visite un dossier sur un serveur,
|
||||
et ajoute les fichiers trouvés à l'API
|
||||
Visite un dossier sur un serveur, spécifié par <domain>,
|
||||
et ajoute les fichiers qui vérifient les règles <rules>,
|
||||
à l'API par l'interface <api>, tout en filtrant les tokens
|
||||
trouvés dans le nom des fichiers avec l'interface <tok>
|
||||
"""
|
||||
# Connection au serveur
|
||||
print('connect to:', domain['server'])
|
||||
|
@ -100,6 +102,10 @@ def visit_folder(domain, api, rules, tok):
|
|||
print('visit finished ',domain['server']+domain['path'])
|
||||
|
||||
def handle_films(Lfilm_loc, Lfilm_api, domain, api, rules, tok):
|
||||
"""
|
||||
Utilise les listes des fichiers locaux Lfilm_loc et des fichiers de l'API Lfilm_api
|
||||
pour mettre à jour la liste des films de l'api sur le domaine <domain>
|
||||
"""
|
||||
Lloc = Lfilm_loc
|
||||
Lapi = Lfilm_api
|
||||
|
||||
|
@ -277,6 +283,10 @@ def handle_films(Lfilm_loc, Lfilm_api, domain, api, rules, tok):
|
|||
# TODO: traiter les films non postés (Lcannot_post)
|
||||
|
||||
def handle_episodes(Lepisode_loc, Lepisode_api, domain, api, rules, tok):
|
||||
"""
|
||||
Utilise les listes des fichiers locaux Lepisode_loc et des fichiers de l'API Lepisode_api
|
||||
pour mettre à jour la liste des episodes et des series de l'api sur le domaine <domain>
|
||||
"""
|
||||
Lloc = Lepisode_loc
|
||||
Lapi = Lepisode_api
|
||||
|
||||
|
@ -383,20 +393,30 @@ def handle_episodes(Lepisode_loc, Lepisode_api, domain, api, rules, tok):
|
|||
|
||||
|
||||
def post_markers(api, file_, fileid):
|
||||
"""
|
||||
Poste sur l'api par l'interface <api> tout les marqueurs
|
||||
du fichier <file_>, indexé à l'ID <fileid>
|
||||
"""
|
||||
for lang in file_.markers['lang']:
|
||||
api.post_file_language(fileid, lang)
|
||||
time.sleep(0.5)
|
||||
time.sleep(1)
|
||||
for qual in file_.markers['quality']:
|
||||
api.post_file_qualities(fileid, qual)
|
||||
time.sleep(0.5)
|
||||
time.sleep(1)
|
||||
for sub in file_.markers['subtitle']:
|
||||
api.post_file_subtitle(fileid, sub)
|
||||
time.sleep(0.5)
|
||||
time.sleep(1)
|
||||
|
||||
def main():
|
||||
"""
|
||||
Fonction principale du programme, réalise toute les opérations
|
||||
de chargement des configurations, d'initialisation des interfaces,
|
||||
et parcours tout les dossiers cherchables.
|
||||
"""
|
||||
conf = config.Config()
|
||||
api = piexel.Piexel(conf.server, conf.app, conf.token)
|
||||
tokens = tokenizer.Tokenizer(conf, api)
|
||||
|
||||
folders = api.get_folders()
|
||||
rules = api.get_paths()
|
||||
|
||||
|
|
65
piexel.py
65
piexel.py
|
@ -89,7 +89,7 @@ class Piexel:
|
|||
|
||||
def get_tokens(self, **params):
|
||||
"""
|
||||
Récupère les fichiers
|
||||
Récupère les tokens
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request([], [], **params)
|
||||
|
@ -97,7 +97,7 @@ class Piexel:
|
|||
|
||||
def get_folders(self, **params):
|
||||
"""
|
||||
Récupère les fichiers
|
||||
Récupère les dossiers de recherche
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request([], [], **params)
|
||||
|
@ -105,7 +105,7 @@ class Piexel:
|
|||
|
||||
def get_paths(self, **params):
|
||||
"""
|
||||
Récupère les fichiers
|
||||
Récupère les règles d'indexage
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request([], [], **params)
|
||||
|
@ -161,7 +161,7 @@ class Piexel:
|
|||
|
||||
def post_file_subtitle(self, file, **params):
|
||||
"""
|
||||
Ajoute une langue à un fichier
|
||||
Ajoute une langue de sous-titre à un fichier
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['value'], ['value'], **params)
|
||||
|
@ -169,7 +169,7 @@ class Piexel:
|
|||
|
||||
def post_file_qualities(self, file, **params):
|
||||
"""
|
||||
Ajoute une langue à un fichier
|
||||
Ajoute une qualitée à un fichier
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request(['value'], ['value'], **params)
|
||||
|
@ -199,22 +199,6 @@ class Piexel:
|
|||
fields = self._get_request(['season', 'episode', 'serie_id'], ['season', 'episode', 'serie_id'], **params)
|
||||
return self._get_response('episode', 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, id, **params):
|
||||
"""
|
||||
Edite un fichier
|
||||
|
@ -223,48 +207,11 @@ class Piexel:
|
|||
fields = self._get_request(['path', 'name', 'filable_type', 'filable_id', 'quality', 'lang', 'subtitles'], [], **params)
|
||||
return self._get_response('file/'+str(id), 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_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_file(self, id, **params):
|
||||
"""
|
||||
Edite un lien mort
|
||||
Supprime un fichier
|
||||
:param params: paramètres à passer
|
||||
"""
|
||||
fields = self._get_request([], [], **params)
|
||||
return self._get_response('file/'+str(id), fields, 'delete')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
piexel = Piexel('http://piexel.rez', 'app', 'token')
|
||||
film = piexel.get_films(title='test')
|
||||
print(film)
|
||||
|
|
19
tokenizer.py
19
tokenizer.py
|
@ -5,18 +5,29 @@ import re
|
|||
class Tokenizer:
|
||||
def __init__(self, conf, api):
|
||||
self.conf = conf
|
||||
self.api = api
|
||||
self.reload_tokens()
|
||||
self.reload_tokens(api)
|
||||
|
||||
def reload_tokens(self):
|
||||
self.tk = self.api.get_tokens()
|
||||
def reload_tokens(self, api):
|
||||
"""
|
||||
Charge les tokens depuis l'API,
|
||||
et initialise la liste des étapes
|
||||
"""
|
||||
self.tk = api.get_tokens()
|
||||
self.steps = list(set(t['step'] for t in self.tk))
|
||||
self.steps.sort()
|
||||
|
||||
def get_tokens_step(self, step):
|
||||
"""
|
||||
Retourne tout les tokens de l'étape <step>
|
||||
"""
|
||||
return [t for t in self.tk if t['step'] == step]
|
||||
|
||||
def tokenize(self, filename):
|
||||
"""
|
||||
Analyse <filename> pour trouver tous ses marqueurs.
|
||||
Les marqueurs sont enlevés, et rangés dans des listes.
|
||||
retourne le nom privé des marqueurs, ainsi que le dictionnaire des marqueurs
|
||||
"""
|
||||
found = {'lang':[], 'quality':[], 'subtitle':[]}
|
||||
for step in self.steps:
|
||||
for tok in self.get_tokens_step(step):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue