Files
tuliprox/backend/src/processing/processor/mod.rs
T

114 lines
4.3 KiB
Rust
Raw Normal View History

mod playlist;
2025-02-05 20:01:49 +01:00
mod xtream;
2025-05-23 00:27:35 +02:00
// mod affix;
2025-02-05 20:01:49 +01:00
mod xtream_vod;
mod xtream_series;
mod epg;
2025-05-04 10:59:08 +02:00
mod sort;
mod trakt;
2025-12-16 16:23:15 +01:00
mod library;
mod stream_probe;
pub use self::playlist::*;
pub use self::epg::*;
pub use self::xtream::*;
pub use self::xtream_vod::*;
pub use self::xtream_series::*;
pub use self::stream_probe::*;
2026-02-14 17:52:35 +01:00
use shared::create_bitset;
2026-02-14 17:52:35 +01:00
create_bitset!(u8, ResolveOptionsFlags, Resolve, TmdbMissing, Probe, Background);
pub struct ResolveOptions {
2026-02-14 17:52:35 +01:00
flags: ResolveOptionsFlagsSet,
pub resolve_delay: u16,
}
2026-02-14 17:52:35 +01:00
impl ResolveOptions {
#[inline]
pub fn has_flag(&self, flag: ResolveOptionsFlags) -> bool {
self.flags.contains(flag)
}
#[inline]
pub fn unset_flag(&mut self, flag: ResolveOptionsFlags) {
self.flags.unset(flag);
}
}
impl Default for ResolveOptions {
fn default() -> Self {
Self {
flags: ResolveOptionsFlagsSet::from_variants(&[ResolveOptionsFlags::Background]),
2026-02-14 17:52:35 +01:00
resolve_delay: default_resolve_delay_secs(),
}
}
}
2025-02-05 20:01:49 +01:00
2025-12-17 09:03:07 +01:00
//
// fn get_resolve_<cluster>_options(target: &ConfigTarget, fpl: &FetchedPlaylist) -> bool
2025-12-17 09:03:07 +01:00
//
2025-02-05 20:01:49 +01:00
#[macro_export]
macro_rules! create_resolve_options_function_for_xtream_target {
($cluster:ident) => {
paste::paste! {
fn [<get_resolve_ $cluster _options>](target: &ConfigTarget, fpl: &FetchedPlaylist) -> $crate::processing::processor::ResolveOptions {
match target.get_xtream_output() {
2026-02-14 17:52:35 +01:00
Some(_) => {
let input_options = fpl.input.options.as_ref();
let input_is_xtream = fpl.input.input_type.is_xtream();
let (
resolve_tmdb_missing,
input_resolve_enabled,
input_probe_enabled,
input_resolve_delay,
resolve_background
) = if let Some(options) = input_options {
(
options.has_flag($crate::model::ConfigInputFlags::ResolveTmdb),
options.has_flag($crate::model::ConfigInputFlags::[<Resolve $cluster:camel>]),
options.has_flag($crate::model::ConfigInputFlags::[<Probe $cluster:camel>]),
options.resolve_delay,
options.has_flag($crate::model::ConfigInputFlags::ResolveBackground)
)
} else {
(
false,
false,
false,
shared::utils::default_resolve_delay_secs(),
shared::utils::default_resolve_background(),
)
};
let resolve_enabled = input_resolve_enabled;
let probe_enabled = input_probe_enabled;
let resolve_delay = input_resolve_delay;
let mut flags = $crate::processing::processor::ResolveOptionsFlagsSet::new();
2026-02-14 17:52:35 +01:00
if resolve_enabled && input_is_xtream {
flags.set($crate::processing::processor::ResolveOptionsFlags::Resolve);
}
if resolve_tmdb_missing {
2026-02-14 17:52:35 +01:00
flags.set($crate::processing::processor::ResolveOptionsFlags::TmdbMissing);
}
2026-02-14 17:52:35 +01:00
if input_is_xtream && probe_enabled {
flags.set($crate::processing::processor::ResolveOptionsFlags::Probe);
}
2026-02-14 17:52:35 +01:00
if resolve_background {
flags.set($crate::processing::processor::ResolveOptionsFlags::Background);
}
$crate::processing::processor::ResolveOptions {
flags,
2026-02-14 17:52:35 +01:00
resolve_delay,
}
},
None => $crate::processing::processor::ResolveOptions::default(),
}
2025-02-05 20:01:49 +01:00
}
}
};
}
use create_resolve_options_function_for_xtream_target;
2026-02-14 17:52:35 +01:00
use shared::utils::default_resolve_delay_secs;