Merge branch 'master' into fix/catchup

This commit is contained in:
euzu
2025-06-09 10:48:38 +02:00
4 changed files with 23 additions and 8 deletions
+4 -2
View File
@@ -1,4 +1,4 @@
use crate::model::{Epg, TVGuide, XmlTag, EPG_ATTRIB_CHANNEL, EPG_ATTRIB_ID, EPG_TAG_CHANNEL, EPG_TAG_DISPLAY_NAME, EPG_TAG_ICON, EPG_TAG_PROGRAMME, EPG_TAG_TV};
use crate::model::{Epg, TVGuide, XmlTag, XmlTagIcon, EPG_ATTRIB_CHANNEL, EPG_ATTRIB_ID, EPG_TAG_CHANNEL, EPG_TAG_DISPLAY_NAME, EPG_TAG_ICON, EPG_TAG_PROGRAMME, EPG_TAG_TV};
use crate::model::{EpgNamePrefix, EpgSmartMatchConfig, PersistedEpgSource};
use crate::processing::processor::epg::EpgIdCache;
use crate::utils::compressed_file_reader::CompressedFileReader;
@@ -90,6 +90,7 @@ pub fn normalize_channel_name(name: &str, normalize_config: &EpgSmartMatchConfig
}
}
impl TVGuide {
pub fn merge(mut epgs: Vec<Epg>) -> Option<Epg> {
if let Some(first_epg) = epgs.get_mut(0) {
@@ -122,7 +123,8 @@ impl TVGuide {
EPG_TAG_ICON => {
if let Some(src) = child.get_attribute_value("src") {
if !src.is_empty() {
tag.icon = Some(src.to_string());
tag.icon = XmlTagIcon::Src(src.to_string());
child.icon = XmlTagIcon::Exists;
}
}
}
+3 -3
View File
@@ -1,4 +1,4 @@
use crate::model::{Epg, TVGuide, XmlTag, EPG_ATTRIB_ID};
use crate::model::{Epg, TVGuide, XmlTag, XmlTagIcon, EPG_ATTRIB_ID};
use crate::model::{EpgConfig, EpgSmartMatchConfig};
use crate::model::{FetchedPlaylist, PlaylistItem, XtreamCluster};
use crate::processing::parser::xmltv::normalize_channel_name;
@@ -141,7 +141,7 @@ fn assign_channel_epg(new_epg: &mut Vec<Epg>, fp: &mut FetchedPlaylist, id_cache
for epg_source in epg_sources {
// icon tags
let icon_tags: HashMap<&String, &XmlTag> = epg_source.children.iter()
.filter(|tag| tag.icon.is_some() && tag.get_attribute_value(EPG_ATTRIB_ID).is_some())
.filter(|tag| tag.icon != XmlTagIcon::Undefined && tag.get_attribute_value(EPG_ATTRIB_ID).is_some())
.map(|t| (t.get_attribute_value(EPG_ATTRIB_ID).unwrap(), t)).collect();
let assign_values = |chan: &mut PlaylistItem| {
@@ -165,7 +165,7 @@ fn assign_channel_epg(new_epg: &mut Vec<Epg>, fp: &mut FetchedPlaylist, id_cache
if !icon_assigned.contains(epg_channel_id) &&
(epg_source.logo_override || chan.header.logo.is_empty() || chan.header.logo_small.is_empty()) {
if let Some(icon_tag) = icon_tags.get(chan.header.epg_channel_id.as_ref().unwrap()) {
if let Some(icon) = icon_tag.icon.as_ref() {
if let XmlTagIcon::Src(icon) = &icon_tag.icon {
icon_assigned.insert(epg_channel_id.to_string());
if epg_source.logo_override || chan.header.logo.is_empty() {
trace!("Matched channel {} to epg icon {icon}", chan.header.name);