📡 mediascan — API locale : documentation des endpoints

← retour à l'application · base /api (same-origin, JSON UTF-8 ; /api/ask répond en flux ndjson). Les boutons « essayer » ouvrent un exemple réel dans un nouvel onglet — les POST se documentent avec leur corps JSON.

🗂 Corpus & recherche

GET/api/bootstrapessayer ↗

État global du corpus : volumes (vidéos, mots, durée), types de nœuds, familles, chaînes suivies, dernier run, moteur de recherche.

Paramètres : aucun.

GET/api/searchessayer ↗

RAG hybride BM25 (FTS5) + dense e5, fusion RRF — scores affichés (bm25_rank, dense, rrf), repli BM25 pur si l'index dense manque.

Paramètres : q (requis, requête libre) · chaine, famille, date (filtres, défaut aucun) · locuteur (id de nœud invité:/journaliste:) · page (défaut 1, réponse paginée avec total/nb_pages).

GET/api/timelineessayer ↗

Frise par chaîne : chaque vidéo avec publie_le (ISO UTC), heure de Paris et statut d'analyse (faite|partielle|absente).

Paramètres : chaine, famille, date (filtres, défaut aucun).

GET/api/transcriptessayer ↗

Retranscription complète d'une vidéo : segments, diarisation (tours multi-locuteurs), chapitres et résumé global, nb sophismes.

Paramètres : v (requis, identifiant YouTube 11 caractères).

GET/api/videoessayer ↗

Fiche d'une vidéo : source (titre, chaîne, URL), métadonnées de collecte, citation de référence.

Paramètres : v (requis).

GET/api/exportessayer ↗

Export Markdown d'une retranscription enrichie — provenance complète, détections vérifiées, timestamps cliquables (réponse text/markdown).

Paramètres : v (requis).

GET/api/motsclesessayer ↗

Mots-clés extraits d'une vidéo ; sans v : inventaire global (nombre de vidéos + exemples).

Paramètres : v (optionnel).

GET/api/cloudessayer ↗

Les 120 premiers mots du nuage pondéré IDF (le « vocabulaire signature » du corpus).

Paramètres : aucun.

GET/api/directessayer ↗

Dernières arrivées + fraîcheur (vidéos du jour, dernier run) — consommé par l'onglet Direct en polling 60 s.

Paramètres : aucun.

GET/api/atriateressayer ↗

Vidéos à traiter : diarisation / résumé / analyse manquantes et analyses partielles (< 60 % de la durée couverte).

Paramètres : aucun.

GET/api/collecte/statusessayer ↗

Dernier run du manifest de collecte + exclusions comptées par raison.

Paramètres : aucun.

GET/api/pipeline_statusessayer ↗

Statut du pipeline d'ajout manuel : étapes (collecte, indexation, graphe, diarisation, résumé, analyse) en running/done/error.

Paramètres : aucun.

🕸 Graphe & référentiels

GET/api/graphessayer ↗

Nœuds et liens du graphe de connaissances (médias, vidéos, personnalités, partis…, arêtes datées et sourcées).

Paramètres : mode (défaut carte) · type (filtre par type de nœud) · chaine · depuis (fenêtre en heures : seules les vidéos récentes + nœuds structuraux).

GET/api/nodeessayer ↗

Fiche d'un nœud (type, couleurs, sources curatées) + jusqu'à 60 liens entrants/sortants.

Paramètres : id (requis, ex. video:…, media:bfmtv, parti:…).

GET/api/locuteursessayer ↗

Invités et journalistes du graphe avec leurs vidéos (chaîne, date, titre), triés par nb_videos ↓ — un locuteur sans vidéo garde son entrée (0).

Paramètres : q (sous-chaîne du nom, sans accents/casse) · type (invité|journaliste).

GET/api/spectreessayer ↗

Partis politiques : positions (économique/sociétal), couverture en mentions, personnalités rattachées — référentiel curaté + disclaimer honnête.

Paramètres : aucun.

GET/api/actionnariatessayer ↗

Qui possède les médias : arêtes « possède » datées et sourcées + comptage factuel « mentionne son actionnaire » (vidéos du média avec arête NER vers l'actionnaire).

Paramètres : aucun.

🔬 Analyse & assistant

GET/api/analysisessayer ↗

Analyse LLM d'une vidéo : sophismes, affirmations, chiffres — citations vérifiées dans le transcript ; renvoie l'existante sans regénérer.

Paramètres : v (requis) · generate=1 (force la régénération, défaut : l'analyse existante).

GET/api/askessayer ↗

Assistant IA cité (RAG sur le corpus, modèle local) : flux ndjson — une ligne {sources} puis des lignes {delta} du texte de réponse.

Paramètres : q (requis, question en langage naturel).

GET/api/echoesessayer ↗

Échos croisés : par média, vidéos / extraits qui matchent la requête + sophismes ; et chiffres recoupés rapportés par ≥ 2 médias.

Paramètres : q (optionnel — sans q : tout le corpus).

📰 Événements & écarts

GET/api/evenementsessayer ↗

Faits CONVERGENTS (rapportés par ≥ 2 chaînes distinctes) puis événements MONOMÉDIA, triés par sophismes liés — comptage sur les arêtes, zéro LLM.

Paramètres : aucun.

GET/api/evenementessayer ↗

Dossier d'un événement : chronologie des médias, chiffres rapportés (+ méthode), RÉVISIONS du chiffre dans l'ordre chronologique, sophismes et sondages liés.

Paramètres : id (requis, fait:…).

GET/api/framingessayer ↗

Comparateur lexical par média SUR un événement : occurrences du lexique « chargé » (data/lexique_charge.json, éditable) avec citation source exacte et t0 — déterministe, avertissement de prudence inclus.

Paramètres : id (requis, fait:…).

GET/api/framing_tempsessayer ↗

Framing dans le temps : densité de mots chargés ‰ par semaine de publication (et par catégorie) pour une chaîne suivie.

Paramètres : chaine (requis, id de chaîne) · semaines (défaut 8).

GET/api/omissionsessayer ↗

Omissions par événement : les médias qui en parlent vs les médias qui suivent le thème mais restent muets.

Paramètres : theme (theme_dominant, sans accents/casse) · genre (evenement|fait) — sans filtre : fichier intégral.

GET/api/diversiteessayer ↗

Diversité des sources par thème : nb chaînes / ratio_couverture, vidéos du thème, monocanal signalé, top 3 vidéos les plus vues.

Paramètres : aucun.

🔥 Populaires & médias

GET/api/topessayer ↗

Vidéos les plus vues du corpus (vues/likes mesurés) avec sophismes par vidéo ; sans vues mesurées : exclues et comptées honnêtement.

Paramètres : theme (politique|geopolitique|societe|economie|tous, défaut politique) · jours (7|30|0, défaut 0 = tout) · zone (fr|monde|tous, défaut tous) · limite (défaut 20, max 100).

GET/api/mediasessayer ↗

Console des médias : suivis (enrichis du corpus — nb vidéos, 3 derniers épisodes, sophismes cumulés) vs seulement référencés (propriétaire sourcé).

Paramètres : zone (fr|monde) · famille · suivi (1|0) — défaut : tout.

GET/api/stats_mediasessayer ↗

Comportement des médias : par chaîne, vidéos analysées/total, sophismes vérifiés, sophismes par heure, densité de mots chargés ‰, 3 top catégories, répartition des thèmes (data/stats_medias.json, rechargé sur mtime).

Paramètres : aucun.

🔎 Veille & alertes

GET/api/briefingessayer ↗

Briefing quotidien (07:05) : chiffres clés, top sophismes de la période, convergences nouvelles, occurrences des mots veillés — texte intégral dans briefing_txt.

Paramètres : aucun.

GET/api/veilleessayer ↗

Liste des mots veillés (persistée côté serveur, lue par le briefing du matin).

Paramètres : aucun. Réponse : {mots: […]}.

POST/api/veille

Remplace la liste des mots veillés (30 maximum) — le briefing de 07:05 signalera les occurrences.

Corps JSON : {"mots": ["réforme", "Kramatorsk"]} — réponse : {"mots": […], "statut": "…"}.

⚙️ Actions (POST)

POST/api/ajouter_video

Ajoute une vidéo YouTube au corpus et déclenche le pipeline (collecte → indexation → graphe → options LLM) ; suivi via /api/pipeline_status.

Corps JSON : {"yt": "URL ou id 11 car.", "diar": true, "resume": true, "analyse": true}.

POST/api/traiter

Rattrapage : traite une vidéo (ou toutes les retardataires) — diarisation, résumé, approfondissement d'analyse.

Corps JSON : {"vid": "…", "diar": true, "resume": true, "approfondir": true} — sans vid : tout le corpus en retard.

POST/api/analysis

Génère (ou renvoie) l'analyse LLM d'une vidéo — même moteur que GET /api/analysis.

Corps JSON : {"v": "…"}.

POST/api/export_dossier

Dossier d'enquête Markdown à partir des items épinglés (panneau Références) — provenance complète, réponse text/markdown.

Corps JSON : {"items": [{type, vid, t0, citation, chaine}, …]}.

Documentation statique générée depuis les ROUTES de server/server.py · aucune dépendance externe · mediascan — lecture critique de l'actualité.