M3u catchup fix (#794)

* **New Features**
  * Catch-up streams can now auto-detect whether to serve direct video or an HLS playlist.
  * Added archive-aware HLS session/identity handling and improved upstream user-agent propagation for manifests.
  * Enhanced M3U timeshift/archiving, including nested handling and native Flussonic archive support; Short EPG can advertise archive availability.

* **Bug Fixes**
  * Provider session headers now persist across retries and deferred-open scenarios.
  * Legacy HLS routing is now cache-aware; seek detection improvements.
  * Stalker errors now better redact sensitive URL details.
  * Fix: Preserve VOD client range requests

* **Tests**
  * Expanded coverage for probing, archive/timeshift resolution, header overlay rules, and related routing.
This commit is contained in:
euzu
2026-07-27 15:13:10 +02:00
committed by GitHub
parent bcc1badcfe
commit 4d8df8f534
73 changed files with 4346 additions and 890 deletions
@@ -1,6 +1,7 @@
use crate::api::model::{ActiveProviderManager, ProviderHandle};
use crate::api::model::{ProviderIdType, ResolveReason, ResolveReasonSet, UpdateTask};
use crate::library::{MediaMetadata, MetadataResolver, MetadataStorage};
use crate::iptv::xtream;
use crate::media_enrichment::policy::MissingFactEnrichmentPolicy;
use crate::media_enrichment::xtream::{
apply_fact_patch_to_video, distinct_non_empty_title_candidates, video_fact_patch_from_metadata,
@@ -22,7 +23,7 @@ use crate::repository::persist_input_vod_info;
use crate::repository::persist_input_vod_info_batch;
use crate::repository::{xtream_get_file_path, BPlusTreeQuery};
use crate::utils::ffmpeg::{is_supported_probe_url, FfmpegExecutor, ProbeFailureKind, ProbeUrlOutcome};
use crate::utils::{debug_if_enabled, trace_if_enabled, xtream};
use crate::utils::{debug_if_enabled, trace_if_enabled};
use log::{debug, error, info, log_enabled, trace, warn, Level};
use parking_lot::Mutex;
use serde_json::Value;