Citation:
Les expressions régulières pour le décodage des informations dans les noms de fichiers et de répertoire fonctionnent très bien avec "Andor.[2022- Disney+]".
cf : film_serie.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11
| const std::vector<std::wstring> Sur
{
L"Apple TV+",
L"Amazon Prime Video",
L"Crunchyroll",
L"Disney+",
L"DVD",
L"Netflix",
L"SⱯLTO",
L"VOD"
}; |
Pourquoi ?
Citation:
Pièce jointe 658596
Marches pas !
Citation:
Comme le montre le débugueur, c'est le contenu du fichier "./Andor.[2022- Disney+]\2022-09-21\1x06.2024-06-27.txt", et en particulier, sa 2 ligne qui pose problème:
Ok ! Merci !
Citation:
Il faut juste un peu modifier l'expression régulière pour qu'elle gère le "nouveau" format :
Pas compris !!!
Citation:
Mais vous devriez penser à étendre cette fonction pour gère les formats mentionnant des heures, en plus des minutes (voire les secondes et les frames).
Ah ! Bon ! Mince !
Citation:
Dans votre implémentation, vous modifiez le contenu de "nouveaux_titres" alors que le nom de la fonction ne l'indique pas : c'est un effet de bord.
Il faut au maximum éviter les effets de bord pour que votre code reste lisible et maintenable.
Pour renforcer la "sécurité", je change légèrement le type des paramètres pour que mal implémenter cette fonction soit plus compliqué. (rendre les paramètres "const").
Ok !
Citation:
Le nom du paramètre est vraiment pas terrible.
"ligne", ça serait bien plus clair.
Ok !
Citation:
A quoi sert le paramètre "m_titre" (en plus d'avoir ce putain de "m_" en préfixe ) ?
On dégage ce paramètre, SVP.
Ok !
Citation:
Il faudra aussi corriger de la même manière toutes les fonctions appelées par ces fonction "const" pour qu'elles deviennent elles aussi "const".
Ok !
Citation:
J'ai l'habitude de faire le code le plus générique possible tant que cela est "gratuit", en termes de complexité et de lisibilité de code.
Si ce n'est pas "gratuit", on peut tomber dans ce qu'on appelle souvent l'"over-engineering" : faire un code très complexe pour gérer des cas qui n'arriveront pas "dans la vraie vie".
Ok !
Citation:
"Que faire ?" : bin, utiliser le code que j'ai posté à la place du vôtre, non ???
Attention : m_sur !!!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Film::Film(std::filesystem::path racine)
{
this->racine = racine;
auto nomDossier = racine.filename().wstring();
assert(nomDossier.length() > 0 && L"Nom de dossier vide");
std::wregex filename_pattern{ L"(.+?)(?:\\.\\((?:(\\d{4})\\-(\\d{2})\\-(\\d{2})\\)))?(?:\\.(.+))?$" };
std::wsmatch match;
if (std::regex_match(nomDossier, match, filename_pattern))
{
std::wstring part_1 = match[1];
m_titres = extraire_Titres_Depuis_NomDeFichierOuDeRepertoire(part_1);
if (match[2].matched)
{
std::wstring annees_str = match[2].str();
std::wstring mois_str = match[3].str();
std::wstring jours_str = match[4].str();
m_date.tm_year = stoi(annees_str) - 1900; //beurk!!
m_date.tm_mon = stoi(mois_str) - 1; //beurk!!
m_date.tm_mday = stoi(jours_str);
}
m_sur = (match[5].matched) ? match[5].str() : L"";
m_sous_genre = (match[6].matched) ? match[6].str() : L"";
}
else
{
assert(false == true && "Le nom du répertoire n'est pas un nom valide.");
}
} |
Avant : cf film_serie.cpp
Code:
1 2 3 4
| const std::vector<std::wstring> Sur
{
...
}; |
Citation:
Heu, avec quoi comme série, ça marche pas, SVP ???
Avec :
"Star Wars- The Clone wars.[2008-2020].Animation"
"Seven Deadly Sins- Four Knights of the Apocalypse.[2023].Manga"
"Andor.[2022- Disney+]"
Ca fonctionne.
Pardon ?
Citation:
Quel est le problème ?
A part que vos méthodes "Episode:rintFirstSequenceVisionnage" et "PrintSequenceVisionnage", ce qui explique pourquoi seul les informations sur la saison sont affichées.
Pas compris !
Citation:
Pourquoi les informations sur la saison sont foireuses :
J'ai oublié !!!
Citation:
Pouvez-vous m'expliquer la logique de l'extrait de code précédent, qui fait partie de la fonction "Saison::initialiser_Fichier" ???
Et "Saison::initialiser_Fichier" a encore un nom foireux car cela ne correspond en rien à ce que la fonction fait réellement.
Avec ce code, votre saison "Hors Saison" a un champ "m_numero" égale à 4 et votre saison "1" a un champ "m_numero" égale à 15.
C'est quoi ce raisonnement ?
Ben...
Citation:
Même connerie que dans "Film::initialiser_Titre", dégagez le paramètre "m_titre"
"Serie::initialiser_Titre" et "Film::initialiser_Titre" devraient être pratiquement identiques. Pensez à fusionner ce code.
Demain ou plus tard !
Citation:
Vous devez comprendre à quoi servent les fichiers d'en-tête (.h).
On va prendre la ligne suivante :
"extern const std::wstring lire_fichierTxt(std::wstring const& nomFichier);"
Vous m'avez collé cette ligne dans :
film.cpp
serie.cpp
film_serie.cpp
Alors que vous n'avez qu'à la mettre UNE fois (sans l'"extern") dans "film_serie.h".
Je suis fatigué !!!
Bon nuit :aie::aie::aie: