mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-22 06:28:04 +02:00
Enregistrements : auto-enregistrement des matchs NBA en direct sur beIN Sports FR
Le calendrier NBA (API ESPN, 21 jours) annonce les matchs à l'avance ; l'EPG des beIN Sports françaises confirme la chaîne ~48 h avant. Seule la diffusion qui démarre avec le coup d'envoi est retenue : les rediffusions sont ignorées, sans dépendre des titres. Le CDN nba.com refuse les requêtes serveur (403), d'où ESPN. - Serveur : tables auto_rules / nba_games (migration v3 : source_rule_id), réconciliation toutes les 30 min, marges, filtre d'équipes, conflits de créneaux, rétention, API /api/auto-rules (oui/non par match). - Détection des beIN FR (hors MENA, TR, ES…), meilleure qualité par chaîne. - XMLTV : sous-titre, catégories, drapeaux live/new/premiere/ previously-shown, horizon EPG_HORIZON_HOURS. - Plex/Jellyfin : vignette et affiche avec logos des équipes, .nfo, pochette intégrée au MKV, nom de fichier lisible. - UI : onglet « Auto NBA » et pastille sur les enregistrements. - Docker : fonts-dejavu-core (texte des vignettes) et tzdata. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
530bf82b04
commit
f291b66087
20 files changed
+4486
-32
No files matched your search
@@ -1,7 +1,9 @@
|
||||
//! Point d'entrée HTTP : middlewares puis cascade API → proxy Xtream →
|
||||
//! streaming → fichiers statiques, à l'identique de l'ancien serveur.
|
||||
|
||||
use crate::api::{account, admin, logo, player_log, recordings, static_files, xtream_api};
|
||||
use crate::api::{
|
||||
account, admin, auto_rules, logo, player_log, recordings, static_files, xtream_api,
|
||||
};
|
||||
use crate::dart_time::now_local_iso;
|
||||
use crate::http::{self, Req, Resp, client_ip, extract_token, is_miss, mounted, socket_ip};
|
||||
use crate::state::SharedState;
|
||||
@@ -322,6 +324,10 @@ async fn api_router(state: &SharedState, req: &Req) -> Resp {
|
||||
_ => http::not_found(),
|
||||
};
|
||||
}
|
||||
if let Some(rest) = mounted(path, "api/auto-rules") {
|
||||
let req = authed!(state, req);
|
||||
return auto_rules::auto_rules(state, &req, rest).await;
|
||||
}
|
||||
if let Some(rest) = mounted(path, "api/season-passes") {
|
||||
let req = authed!(state, req);
|
||||
return recordings::season_passes(state, &req, rest);
|
||||
|
||||
Reference in new issue
Block a user