Skip to content

from pyflix.media_db import TvShow

Documentation du package pyflix.utils

Le package pyflix.utils est destiné à l'affichage d'objets de type TvShow. Il contient 2 modules : cli.py et rich_cli.py. Les deux ont les mêmes deux fonctions. Le second est plus riche mais nécessite la présence de la bibliothèque rich. Le premier est une version pur texte utilisable sans dépendance.

Documentation du module rich_cli

Ce module est une copie de pylib.utils.cli mais utilisant la bibliothèque Rich pour un affichage en terminal plus esthétique.

display_show(show)

Affiche dans le terminal les informations d'une série. La série doit avoir un attribut name et un attribut episodes contenant des objets ayant eux-même un attribut title.

Parameters:

Name Type Description Default
show

Objet représentant une série et possédant un attribut nameet un attribut episodes.

required
Source code in src/pyflix/utils/rich_cli.py
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
def display_show(show) -> None:
    """
    Affiche dans le terminal les informations d'une série. La série doit avoir
    un attribut `name` et un attribut `episodes` contenant des objets ayant
    eux-même un attribut `title`.

    :param show: Objet représentant une série et possédant un attribut `name`et un
    attribut `episodes`.
    """
    t_show = Tree(show.name)
    t_season = None
    current_season_number = None
    for episode in show.episodes:
        if current_season_number != episode.season_number:
            current_season_number = episode.season_number
            t_season = Tree(f"Season {current_season_number}", style="blue")
            t_show.add(t_season)
        t_season.add(f'[{episode.number:02}] {episode.title}', style="white")

    console.print(t_show)

    try:
        print(f"Durée totale : {show.duration // 60}h{show.duration % 60:02}")
    except (AttributeError, TypeError):
        pass

display_shows(shows)

Affiche dans le terminal les informations d'un dictionnaire de séries.

La série doit avoir un attribut name et un attribut episodes contenant des objets ayant eux-même un attribut title.

Parameters:

Name Type Description Default
shows dict

Dictionnaire dont les valeurs sont des objets série.

required
Source code in src/pyflix/utils/rich_cli.py
12
13
14
15
16
17
18
19
20
21
22
23
def display_shows(shows: dict) -> None:
    """
    Affiche dans le terminal les informations d'un dictionnaire de séries.

    La série doit avoir un attribut `name` et un attribut `episodes` contenant
    des objets ayant eux-même un attribut `title`.

    :param shows: Dictionnaire dont les valeurs sont des objets série.
    """
    for show in shows.values():
        console.rule(show.name)
        display_show(show)

Documentation du module cli

Ceci est un module de fonctions utiles pour l'affichage d'informations dans le terminal.

display_show(show)

Affiche dans le terminal les informations d'une série. La série doit avoir un attribut name et un attribut episodes contenant des objets ayant eux-même un attribut title.

Parameters:

Name Type Description Default
show

Objet représentant une série et possédant un attribut nameet un attribut episodes.

required
Source code in src/pyflix/utils/cli.py
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
def display_show(show) -> None:
    """
    Affiche dans le terminal les informations d'une série. La série doit avoir
    un attribut `name` et un attribut `episodes` contenant des objets ayant
    eux-même un attribut `title`.

    :param show: Objet représentant une série et possédant un attribut `name`et un
    attribut `episodes`.
    """
    print(show.name)

    try:
        print(f"Durée totale : {show.duration // 60}h{show.duration % 60:02}")
    except (AttributeError, TypeError):
        pass

    current_season = None
    for episode in show.episodes:
        if episode.season_number != current_season:
            current_season = episode.season_number
            print(f"Season {current_season}")
        print(f" - [{episode.number:02}] {episode.title}")

display_shows(shows)

Affiche dans le terminal les informations d'un dictionnaire de séries.

La série doit avoir un attribut name et un attribut episodes contenant des objets ayant eux-même un attribut title.

Parameters:

Name Type Description Default
shows dict

Dictionnaire dont les valeurs sont des objets série.

required
Source code in src/pyflix/utils/cli.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
def display_shows(shows: dict) -> None:
    """
    Affiche dans le terminal les informations d'un dictionnaire de séries.

    La série doit avoir un attribut `name` et un attribut `episodes` contenant
    des objets ayant eux-même un attribut `title`.

    :param shows: Dictionnaire dont les valeurs sont des objets série.
    """
    for show in shows.values():
        print("\n-----")
        display_show(show)

Exemple d'usage

Cet exemple fonctionne de la même manière avec les deux modules.

import pyflix.utils.rich_cli as cli

my_show = TvShow("Show Name")
my_show.add_episode('Title 1', 1, 1)
my_show.add_episode('Title 2', 1, 2)

cli.display_show(my_show)

shows = {my_show.name:my_show}
cli.display_shows(shows)