2025-02-05 20:01:49 +01:00
|
|
|
pub mod playlist;
|
|
|
|
|
mod xtream;
|
|
|
|
|
mod affix;
|
|
|
|
|
mod xtream_vod;
|
|
|
|
|
mod xtream_series;
|
2025-04-23 20:21:36 +02:00
|
|
|
pub mod epg;
|
2025-02-05 20:01:49 +01:00
|
|
|
|
|
|
|
|
#[macro_export]
|
|
|
|
|
macro_rules! handle_error {
|
|
|
|
|
($stmt:expr, $map_err:expr) => {
|
|
|
|
|
if let Err(err) = $stmt {
|
|
|
|
|
$map_err(err);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
use handle_error;
|
|
|
|
|
|
|
|
|
|
#[macro_export]
|
|
|
|
|
macro_rules! handle_error_and_return {
|
|
|
|
|
($stmt:expr, $map_err:expr) => {
|
|
|
|
|
if let Err(err) = $stmt {
|
|
|
|
|
$map_err(err);
|
|
|
|
|
return Default::default();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
use handle_error_and_return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[macro_export]
|
|
|
|
|
macro_rules! create_resolve_options_function_for_xtream_target {
|
|
|
|
|
($cluster:ident) => {
|
|
|
|
|
paste::paste! {
|
|
|
|
|
fn [<get_resolve_ $cluster _options>](target: &ConfigTarget, fpl: &FetchedPlaylist) -> (bool, u16) {
|
2025-03-10 13:28:22 +01:00
|
|
|
match target.get_xtream_output() {
|
|
|
|
|
Some(xtream_output) => (xtream_output.[<resolve_ $cluster>] && fpl.input.input_type == InputType::Xtream,
|
|
|
|
|
xtream_output.[<resolve_ $cluster _delay>]),
|
|
|
|
|
None => (false, 0)
|
|
|
|
|
}
|
2025-02-05 20:01:49 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
use create_resolve_options_function_for_xtream_target;
|
2025-03-10 13:28:22 +01:00
|
|
|
|