Pass through channel name, icon changes and allow EIT to create missing channels (however these need to be overidden)
This commit is contained in:
parent
36a312b1e0
commit
20097dd255
2 changed files with 32 additions and 19 deletions
34
src/epg.c
34
src/epg.c
|
@ -1162,7 +1162,7 @@ int epg_channel_set_name ( epg_channel_t *channel, const char *name )
|
|||
if ( !channel->name || strcmp(channel->name, name) ) {
|
||||
if (channel->name) free(channel->name);
|
||||
channel->name = strdup(name);
|
||||
// NOTE: does not remap
|
||||
// TODO: need to allow overriding of EIT created channels
|
||||
if ( !channel->channel ) {
|
||||
LIST_FOREACH(ch, &channel_unmapped, ch_eulink) {
|
||||
if ( _epg_channel_cmp(channel, ch) ) {
|
||||
|
@ -1171,11 +1171,31 @@ int epg_channel_set_name ( epg_channel_t *channel, const char *name )
|
|||
}
|
||||
}
|
||||
}
|
||||
// pass through
|
||||
if ( channel->channel ) {
|
||||
save |= channel_rename(channel->channel, name);
|
||||
}
|
||||
save |= 1;
|
||||
}
|
||||
return save;
|
||||
}
|
||||
|
||||
int epg_channel_set_icon ( epg_channel_t *channel, const char *icon )
|
||||
{
|
||||
int save = 0;
|
||||
if ( !channel | !icon ) return 0;
|
||||
if ( !channel->icon || strcmp(channel->icon, icon) ) {
|
||||
if ( channel->icon ) free(channel->icon);
|
||||
channel->icon = strdup(icon);
|
||||
// pass through
|
||||
if ( channel->channel ) {
|
||||
channel_set_icon(channel->channel, icon);
|
||||
}
|
||||
save = 1;
|
||||
}
|
||||
return save;
|
||||
}
|
||||
|
||||
int epg_channel_set_channel ( epg_channel_t *ec, channel_t *ch )
|
||||
{
|
||||
int save = 0;
|
||||
|
@ -1204,18 +1224,6 @@ int epg_channel_set_channel ( epg_channel_t *ec, channel_t *ch )
|
|||
return save;
|
||||
}
|
||||
|
||||
int epg_channel_set_icon ( epg_channel_t *channel, const char *icon )
|
||||
{
|
||||
int save = 0;
|
||||
if ( !channel | !icon ) return 0;
|
||||
if ( !channel->icon || strcmp(channel->icon, icon) ) {
|
||||
if ( channel->icon ) free(channel->icon);
|
||||
channel->icon = strdup(icon);
|
||||
save = 1;
|
||||
}
|
||||
return save;
|
||||
}
|
||||
|
||||
epg_broadcast_t *epg_channel_get_broadcast
|
||||
( epg_channel_t *channel, time_t start, time_t stop, int create, int *save )
|
||||
{
|
||||
|
|
|
@ -32,9 +32,9 @@ static const char* _eit_name ( void )
|
|||
return "eit";
|
||||
}
|
||||
|
||||
static void _eit_episode_uri ( char *uri, const char *title, const char *summary )
|
||||
static void _eit_episode_uri
|
||||
( char *uri, const char *title, const char *summary )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// called from dvb_tables.c
|
||||
|
@ -43,6 +43,7 @@ void eit_callback ( channel_t *ch, int id, time_t start, time_t stop,
|
|||
const char *extitem, const char *extdesc,
|
||||
const char *exttext ) {
|
||||
int save = 0;
|
||||
epg_channel_t *ec;
|
||||
epg_broadcast_t *ebc;
|
||||
epg_episode_t *ee;
|
||||
const char *summary = NULL;
|
||||
|
@ -53,10 +54,13 @@ void eit_callback ( channel_t *ch, int id, time_t start, time_t stop,
|
|||
//if (epggrab_eit_disabled) return;
|
||||
|
||||
/* Channel */
|
||||
if (!ch->ch_epg_channel) {
|
||||
// TODO: create??
|
||||
return;
|
||||
ec = ch->ch_epg_channel;
|
||||
if (!ec) {
|
||||
ec = epg_channel_find_by_uri(ch->ch_name, 1, &save);
|
||||
if (ec)
|
||||
epg_channel_set_channel(ec, ch);
|
||||
}
|
||||
if (!ec) return;
|
||||
|
||||
/* Find broadcast */
|
||||
ebc = epg_channel_get_broadcast(ch->ch_epg_channel, start, stop, 1, &save);
|
||||
|
@ -67,7 +71,8 @@ void eit_callback ( channel_t *ch, int id, time_t start, time_t stop,
|
|||
|
||||
/* Create/Replace episode */
|
||||
if ( !ebc->episode ||
|
||||
!epg_episode_fuzzy_match(ebc->episode, uri, title, summary, description) ) {
|
||||
!epg_episode_fuzzy_match(ebc->episode, uri, title,
|
||||
summary, description) ) {
|
||||
|
||||
/* Create episode */
|
||||
ee = epg_episode_find_by_uri(uri, 1, &save);
|
||||
|
|
Loading…
Add table
Reference in a new issue