Skip to content

Documentation du package pyflix.loaders

Le package pyflix.loaders contient un module file_helpers qui permet de charger les informations d'épisodes à partir d'un fichier csv ou de noms de fichiers vidéo.

Détails de la fonction load_from_csv

La fonction load_from_csv charge les données à partir d'un fichier csv. Le séparateur doit être le point-virgule (;) et le fichier doit avoir l'en-tête :

"tvshow" "season" "ep_number" "ep_title" "duration" "year"

Détails de la fonction load_from_filenames

la fonction load_from_filenames extrait les informations à partir du nom du fichier vidéo. Celui-ci doit avoir la structure : nom_serie-sXXeYY-titre_episode.ext.

  • nom_serie est une chaine contenant le nom de la série, les _ seront remplacés par des espaces.
  • XX est un entier représentant le numéro de la saison sur 2 digits. La saison 1 sera 01.
  • YY est un entier représentant le numéro de l'épisode sur 2 digits. L'épisode 1 sera 01.
  • titre_episode est une chaine contenant le titre de l'épisode, les _ seront remplacés par des espaces.

load_from_csv(file_path)

Générateur qui fournit les informations média série à partir d'un fichier csv

Parameters:

Name Type Description Default
file_path Path | str

Chemin vers un fichier csv correctement formaté

required
Source code in src/pyflix/loaders/file_helpers.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def load_from_csv(file_path:Path|str):
    """
    Générateur qui fournit les informations média série à partir d'un fichier csv

    :param file_path: Chemin vers un fichier csv correctement formaté
    """
    with open(file_path, encoding="utf-8") as csv_file:
        header = tuple(csv_file.readline().strip().split(";"))
        if header != ("tvshow", "season", "ep_number", "ep_title", "duration", "year"):
            raise ValueError("Unexpected CSV structure")

        for episode in csv_file:
            show, season, number, title, duration, year = episode.strip().split(";")
            yield show, title, season, number, duration, year

load_from_filenames(dir_path)

Générateur qui fournit les informations média série à partir du nom des fichiers du répertoire.

Cette fonction se base sur les regex pour extraire les informations à partir d'un nom de fichier. Voir la documentation pour les détails sur la regax.

Parameters:

Name Type Description Default
dir_path Path | str

Chemin vers un répertoire de fichiers média correctement formatés

required
Source code in src/pyflix/loaders/file_helpers.py
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def load_from_filenames(dir_path:Path|str):
    """
    Générateur qui fournit les informations média série à partir du nom des fichiers du répertoire.

    Cette fonction se base sur les regex pour extraire les informations à partir d'un nom de
    fichier. Voir la documentation pour les détails sur la regax.

    :param dir_path: Chemin vers un répertoire de fichiers média correctement formatés
    """
    pattern = "-s(?P<season>[0-9]{2})e(?P<episode>[0-9]{2})-"
    p = Path(dir_path)
    for media_file in p.iterdir():
        episode_name = media_file.stem
        result = re.search(pattern, episode_name)

        if result:
            yield (episode_name[:result.start()].replace("_", " "),
                   episode_name[result.end():].replace("_", " "),
                   result.group("season"),
                   result.group("episode"),
                   )

load_from_sources(sources)

Générateur qui fournit les informations média série à partir d'une liste de sources.

Parameters:

Name Type Description Default
sources list[Path | str]

Liste chemins soit vers des fichiers csv soit vers des répertoires.

required
Source code in src/pyflix/loaders/file_helpers.py
44
45
46
47
48
49
50
51
52
53
54
55
56
def load_from_sources(sources:list[Path|str]):
    """
    Générateur qui fournit les informations média série à partir d'une liste de sources.

    :param sources: Liste chemins soit vers des fichiers csv soit vers des répertoires.
    """
    for source in sources:
        source = Path(source)

        if source.is_file():
            yield from load_from_csv(source)
        elif source.is_dir():
            yield from load_from_filenames(source)