Lister les vidéos¶
Objectif : lire les vidéos déjà enregistrées par le module et les renvoyer en JSON.
Ce que vous allez apprendre : le VideoRepository et sa méthode
list_recent, qui renvoie les dernières vidéos de la table videos (ordre du
plus récent). Et un réflexe Forge : rester pédagogique quand la table
n'existe pas encore, au lieu de planter.
Palier 2 du niveau débutant de la progression vidéo, après Bonjour Forge Vidéo.
Ce que ce starter montre¶
- la lecture des dernières vidéos via
VideoRepository.list_recent; - une réponse JSON
{ "videos": [...] }; - une réponse
503explicite quand la tablevideosn'est pas encore disponible (aucunvideo:initlancé), au lieu d'une erreur brute.
Aucun ffmpeg, aucune écriture.
Classes Forge utilisées¶
| Classe / fonction | Rôle dans ce starter | Référence |
|---|---|---|
forge_mvc_video.storage.repository.VideoRepository |
Lire les vidéos enregistrées. | Parcours vidéo |
VideoRepository.list_recent |
Dernières vidéos (ordre décroissant). | Parcours vidéo |
Response.json |
Renvoyer les vidéos (ou l'erreur) en JSON. | Response |
Tester¶
Ouvrez https://localhost:8000/video-list. Sans table créée, la route répond
503 avec un message qui invite à lancer forge video:init. Une fois des vidéos
enregistrées (niveau intermédiaire), elle renvoie la liste.
Le contrôleur¶
# mvc/controllers/video_list_controller.py
from forge_mvc_video.storage.repository import VideoRepository
_STORAGE_NOT_READY = {
"error": "video_storage_not_ready",
"message": "La table videos n'est pas encore disponible. "
"Applique la migration Forge Vidéo (forge video:init)…",
}
class VideoListController(BaseController):
@staticmethod
def index(request: Request) -> Response:
try:
videos = VideoRepository().list_recent(limit=20)
except Exception:
return Response.json(_STORAGE_NOT_READY, status=503)
return Response.json({"videos": videos})
Comprendre ce code¶
VideoRepository()utilise par défaut l'accès base de Forge (core.database.db) — aucun branchement manuel.list_recent(limit=20)renvoie les 20 dernières vidéos sous forme de dictionnaires, directement sérialisables en JSON.- Le
try/exceptne masque pas un bug : il traduit l'absence de table en réponse503pédagogique. Un starter de découverte ne doit jamais planter parce que l'infrastructure n'est pas encore montée.
À retenir¶
VideoRepository.list_recentlit les dernières vidéos enregistrées.- Le repository s'appuie sur l'accès base standard de Forge.
- Un starter de découverte reste pédagogique quand la table manque (
503).
Après ce starter¶
Vous savez lister les vidéos. La suite : afficher le détail d'une vidéo.