From 036a432b485bf0b59dbd049c89644c26959c577e Mon Sep 17 00:00:00 2001 From: redstorm45 Date: Mon, 11 Dec 2017 09:04:37 +0100 Subject: [PATCH] Commentaires --- default.conf | 6 ++--- file.py | 18 +++++++++++---- main.py | 30 ++++++++++++++++++++---- piexel.py | 65 +++++----------------------------------------------- tokenizer.py | 19 +++++++++++---- 5 files changed, 63 insertions(+), 75 deletions(-) diff --git a/default.conf b/default.conf index 1ef22ae..0e46b81 100644 --- a/default.conf +++ b/default.conf @@ -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' diff --git a/file.py b/file.py index 43ff7b4..1f88594 100644 --- a/file.py +++ b/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): diff --git a/main.py b/main.py index 17ac8dc..872f4a6 100644 --- a/main.py +++ b/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 , + et ajoute les fichiers qui vérifient les règles , + à l'API par l'interface , tout en filtrant les tokens + trouvés dans le nom des fichiers avec l'interface """ # 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 + """ 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 + """ 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 tout les marqueurs + du fichier , indexé à l'ID + """ 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() diff --git a/piexel.py b/piexel.py index 416c415..f908b5f 100644 --- a/piexel.py +++ b/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) diff --git a/tokenizer.py b/tokenizer.py index 2870779..0fcb748 100644 --- a/tokenizer.py +++ b/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 + """ return [t for t in self.tk if t['step'] == step] def tokenize(self, filename): + """ + Analyse 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):