Bonjour
Je suis actuellement en train de réaliser un petit projet Python perso que je souhaiterais adapter pour pouvoir l'utiliser en ligne de commande. Je suis jusque là toujours resté à un stade de programme non packagé ou alors celui-ci comportait une interface graphique. j'aimerais donc faire en sorte que mon programme soit utilisable en ligne de commande histoire de monter en compétence, mais j'ai du mal à voir comment m'y prendre.
Pour vous donner le contexte, le programme a pour but de télécharger des scans de manga.
On lui donne nom du manga, un numéro de chapitre et il va tout chercher comme un grand.
Pour ça je procède de la manière suivante (il y a des étapes préalables mais je centre sur ma problématique):
- On donne un nom de manga
- On donne un numéro de chapitre
- Le programme va chercher l'URL de chaque page du chapitre
- Le programme télécharge les pages une par une
Pour faire simple, mon projet consiste à instancier une seule fois un gros objet "manga" dont on va exécuter la méthode "download([numéro_chapitre])".
Lors de l'instanciation de cet objet, le programme va récupérer les informations globales du manga (résumé, liste des chapitres, leur titre, ... ), chose qui n'a besoin d'être faite qu'une fois et qui prend un peu de temps (c'est une requête API).
Ensuite j'appelle la méthode "download([numéro_chapitre])" qui va dans un premier temps lister l'URL de chaque page si ça n'a pas déjà été fait une première fois, les stocker dans l'objet "manga" pour ne pas avoir à le refaire si on souhaite re-télécharger le même chapitre durant une même exécution.
Dans l'idéal je souhaiterais faire en sorte d'exécuter mon programme de la manière suivante:
>> manga_downloader --mangaid="shingeki-no-kyojin" --chapterid="89"
Problème n°1
Cela signifie que si je souhaite maintenant télécharger un autre chapitre du même manga:
>> manga_downloader --mangaid="shingeki-no-kyojin" --chapterid="88"
Il va (je crois) recréer l'objet, refaire une requête qui a déjà été faite juste avant et cela va prendre du temps pour rien.
Problème n°2
Encore pire, si je re-télécharge (par erreur ou non), le même chapitre du même manga:
>> manga_downloader --mangaid="shingeki-no-kyojin" --chapterid="88"
Il va recréer l'objet, donc refaire la requête et rechercher les URLs de chaque page alors qu'il vient de le faire
En debug mon programme fonctionne parfaitement, il n'y a pas ce problème. Avec une interface graphique le problème ne se poserait pas non plus vu que l'objet ne serait pas détruit tant que le programme s'exécute.
Je ne sais pas si j'ai bien réussi à cibler ma problématique, quelqu'un aurait-il un avis/conseil ?