mirror of
https://github.com/euzu/tuliprox.git
synced 2026-10-04 15:02:16 +02:00
Feature/for each genre review (#541)
* New Features Added for_each DSL construct for iterating over playlist item fields, with split() function support. Added "genre" as a queryable and editable playlist item field. Bug Fixes Improved short EPG request handling with automatic default limits. Fixed EPG timestamp formatting to use UTC consistently.
This commit is contained in:
@@ -9,8 +9,8 @@ use tokio::sync::{Mutex, OwnedRwLockWriteGuard, RwLock};
|
||||
use tokio::task::JoinSet;
|
||||
|
||||
use crate::api::model::{EventManager, EventMessage, PlaylistStorageState, UpdateGuard};
|
||||
use crate::messaging::{send_message};
|
||||
use crate::model::messaging::{MessageContent};
|
||||
use crate::messaging::send_message;
|
||||
use crate::model::messaging::MessageContent;
|
||||
use crate::model::Epg;
|
||||
|
||||
|
||||
@@ -35,16 +35,17 @@ use crate::utils::{debug_if_enabled, trace_if_enabled};
|
||||
use futures::StreamExt;
|
||||
use indexmap::IndexMap;
|
||||
use log::{debug, error, info, log_enabled, warn, Level};
|
||||
use shared::concat_string;
|
||||
use shared::error::{get_errors_notify_message, notify_err, TuliproxError};
|
||||
use shared::foundation::filter::{get_field_value, set_field_value, Filter, ValueAccessor, ValueProvider};
|
||||
use shared::foundation::{get_field_value, set_field_value, ValueAccessor, ValueProvider};
|
||||
use shared::foundation::Filter;
|
||||
use shared::model::xtream_const::XTREAM_CLUSTER;
|
||||
use shared::model::UUIDType;
|
||||
use shared::model::{CounterModifier, FieldGetAccessor, FieldSetAccessor, InputType, ItemField,
|
||||
PlaylistGroup, PlaylistItem, PlaylistItemType, PlaylistUpdateState,
|
||||
ProcessingOrder, XtreamCluster};
|
||||
use shared::utils::{create_alias_uuid, default_as_default, interner_gc, Internable};
|
||||
use std::time::Instant;
|
||||
use shared::concat_string;
|
||||
use shared::model::UUIDType;
|
||||
|
||||
fn is_valid(pli: &PlaylistItem, filter: &Filter, match_as_ascii: bool) -> bool {
|
||||
let provider = ValueProvider { pli, match_as_ascii };
|
||||
@@ -866,7 +867,7 @@ pub async fn exec_processing(client: &reqwest::Client, app_config: Arc<AppConfig
|
||||
event_manager: Option<Arc<EventManager>>, playlist_state: Option<Arc<PlaylistStorageState>>,
|
||||
update_guard: Option<UpdateGuard>,
|
||||
disabled_headers: Option<ReverseProxyDisabledHeaderConfig>) {
|
||||
let _guard = if let Some(guard) = update_guard {
|
||||
let _guard = if let Some(guard) = update_guard {
|
||||
if let Some(permit) = guard.try_playlist() {
|
||||
Some(permit)
|
||||
} else {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::model::{ConfigSortRule, ConfigTarget};
|
||||
use shared::foundation::filter::ValueProvider;
|
||||
use shared::foundation::ValueProvider;
|
||||
use shared::model::{PlaylistGroup, SortOrder, SortTarget};
|
||||
use std::cmp::Ordering;
|
||||
use std::sync::Arc;
|
||||
@@ -240,7 +240,7 @@ fn sort_channels_in_groups(
|
||||
mod tests {
|
||||
use crate::model::ConfigSortRule;
|
||||
use crate::processing::processor::sort::playlist_comparator;
|
||||
use shared::foundation::filter::Filter;
|
||||
use shared::foundation::Filter;
|
||||
use shared::model::{ItemField, PlaylistItem, PlaylistItemHeader, SortOrder, SortTarget};
|
||||
use std::cmp::Ordering;
|
||||
use std::sync::Arc;
|
||||
|
||||
Reference in New Issue
Block a user