if (ee->uri && strncasecmp(ee->uri, "tvh://", 6))
htsmsg_add_str(m, "episodeUri", ee->uri);
}
- if (eb->serieslink) {
- htsmsg_add_u32(m, "serieslinkId", eb->serieslink->id);
- if (eb->serieslink->uri)
- htsmsg_add_str(m, "serieslinkUri", eb->serieslink->uri);
- }
+ if (eb->serieslink_uri)
+ htsmsg_add_str(m, "serieslinkUri", eb->serieslink_uri);
/* Channel Info */
api_epg_add_channel(m, ch, *blank);
struct dvr_entry_list dae_spawns;
epg_season_t *dae_season;
- epg_serieslink_t *dae_serieslink;
+ const char *dae_serieslink_uri;
epg_episode_num_t dae_epnum;
int dae_minduration;
void dvr_autorec_check_event(epg_broadcast_t *e);
void dvr_autorec_check_season(epg_season_t *s);
-void dvr_autorec_check_serieslink(epg_serieslink_t *s);
void autorec_destroy_by_config(dvr_config_t *cfg, int delconf);
dae->dae_season == NULL &&
dae->dae_minduration <= 0 &&
(dae->dae_maxduration <= 0 || dae->dae_maxduration > 24 * 3600) &&
- dae->dae_serieslink == NULL)
+ dae->dae_serieslink_uri == NULL)
return 0; // Avoid super wildcard match
// Note: we always test season first, though it will only be set
// if configured
- if(dae->dae_serieslink) {
- if (!e->serieslink || dae->dae_serieslink != e->serieslink) return 0;
+ if(dae->dae_serieslink_uri) {
+ if (!e->serieslink_uri ||
+ strcmp(dae->dae_serieslink_uri ?: "", e->serieslink_uri)) return 0;
} else {
if(dae->dae_season)
if (!e->episode->season || dae->dae_season != e->episode->season) return 0;
return 0;
/* Do not check title if the event is from the serieslink group */
- if(dae->dae_serieslink == NULL &&
+ if((dae->dae_serieslink_uri == NULL || dae->dae_serieslink_uri[0] == '\0') &&
dae->dae_title != NULL && dae->dae_title[0] != '\0') {
lang_str_ele_t *ls;
if (!dae->dae_fulltext) {
free(title);
htsmsg_add_str(conf, "config_name", dvr_config_name ?: "");
htsmsg_add_str(conf, "channel", chname);
- if (event->serieslink)
- htsmsg_add_str(conf, "serieslink", event->serieslink->uri);
+ if (event->serieslink_uri)
+ htsmsg_add_str(conf, "serieslink", event->serieslink_uri);
htsmsg_add_str(conf, "owner", owner ?: "");
htsmsg_add_str(conf, "creator", creator ?: "");
htsmsg_add_str(conf, "comment", comment ?: "");
if(dae->dae_season)
dae->dae_season->ops->putref(dae->dae_season);
- if(dae->dae_serieslink)
- dae->dae_serieslink->ops->putref(dae->dae_serieslink);
free(dae);
}
return m;
}
-
-static int
-dvr_autorec_entry_class_series_link_set(void *o, const void *v)
-{
- dvr_autorec_entry_t *dae = (dvr_autorec_entry_t *)o;
- int save;
- epg_serieslink_t *sl;
-
- v = tvh_str_default(v, NULL);
- sl = v ? epg_serieslink_find_by_uri(v, NULL, 1, &save, NULL) : NULL;
- if (sl && dae->dae_serieslink != sl) {
- if (dae->dae_serieslink)
- dae->dae_serieslink->ops->putref((epg_object_t*)dae->dae_season);
- sl->ops->getref((epg_object_t*)sl);
- dae->dae_serieslink = sl;
- return 1;
- } else if (sl == NULL && dae->dae_serieslink) {
- dae->dae_season->ops->putref((epg_object_t*)dae->dae_season);
- dae->dae_season = NULL;
- return 1;
- }
- return 0;
-}
-
-static const void *
-dvr_autorec_entry_class_series_link_get(void *o)
-{
- dvr_autorec_entry_t *dae = (dvr_autorec_entry_t *)o;
- prop_ptr = dae->dae_serieslink ? dae->dae_serieslink->uri : NULL;
- if (prop_ptr == NULL)
- prop_ptr = "";
- return &prop_ptr;
-}
-
static htsmsg_t *
dvr_autorec_entry_class_content_type_list(void *o, const char *lang)
{
.id = "serieslink",
.name = N_("Series link"),
.desc = N_("Series link ID."),
- .set = dvr_autorec_entry_class_series_link_set,
- .get = dvr_autorec_entry_class_series_link_get,
+ .off = offsetof(dvr_autorec_entry_t, dae_serieslink_uri),
.opts = PO_RDONLY | PO_ADVANCED,
},
{
// this will already have been picked up by the check_event call
}
-void dvr_autorec_check_serieslink(epg_serieslink_t *s)
-{
-// TODO: need to implement this
-}
-
/**
*
*/
/* URI lists */
epg_object_tree_t epg_seasons;
epg_object_tree_t epg_episodes;
-epg_object_tree_t epg_serieslinks;
/* Other special case lists */
epg_object_list_t epg_object_unref;
return epg_episode_serialize((epg_episode_t*)eo);
case EPG_BROADCAST:
return epg_broadcast_serialize((epg_broadcast_t*)eo);
- case EPG_SERIESLINK:
- return epg_serieslink_serialize((epg_serieslink_t*)eo);
default:
return NULL;
}
return (epg_object_t*)epg_episode_deserialize(msg, create, save);
case EPG_BROADCAST:
return (epg_object_t*)epg_broadcast_deserialize(msg, create, save);
- case EPG_SERIESLINK:
- return (epg_object_t*)epg_serieslink_deserialize(msg, create, save);
}
return NULL;
}
return lang_str_get(e->description, lang);
}
-/* **************************************************************************
- * Series link
- * *************************************************************************/
-
-static void _epg_serieslink_destroy ( void *eo )
-{
- epg_serieslink_t *es = (epg_serieslink_t*)eo;
- if (LIST_FIRST(&es->broadcasts)) {
- tvhlog(LOG_CRIT, LS_EPG, "attempt to destory series link with broadcasts");
- assert(0);
- }
- _epg_object_destroy(eo, &epg_serieslinks);
- free(es);
-}
-
-static void _epg_serieslink_updated ( void *eo )
-{
- dvr_autorec_check_serieslink((epg_serieslink_t*)eo);
-}
-
-static epg_object_ops_t _epg_serieslink_ops = {
- .getref = _epg_object_getref,
- .putref = _epg_object_putref,
- .destroy = _epg_serieslink_destroy,
- .update = _epg_serieslink_updated,
-};
-
-static epg_object_t **_epg_serieslink_skel ( void )
-{
- static epg_object_t *skel = NULL;
- if (!skel) {
- skel = calloc(1, sizeof(epg_serieslink_t));
- skel->type = EPG_SERIESLINK;
- skel->ops = &_epg_serieslink_ops;
- }
- return &skel;
-}
-
-epg_serieslink_t* epg_serieslink_find_by_uri
- ( const char *uri, epggrab_module_t *src, int create,
- int *save, uint32_t *changed )
-{
- return (epg_serieslink_t*)
- _epg_object_find_by_uri(uri, src, create, save, changed,
- &epg_serieslinks,
- _epg_serieslink_skel());
-}
-
-epg_serieslink_t *epg_serieslink_find_by_id ( uint32_t id )
-{
- return (epg_serieslink_t*)epg_object_find_by_id(id, EPG_SERIESLINK);
-}
-
-int epg_serieslink_change_finish
- ( epg_serieslink_t *esl, uint32_t changes, int merge )
-{
- return 0;
-}
-
-static void _epg_serieslink_add_broadcast
- ( epg_serieslink_t *esl, epg_broadcast_t *ebc )
-{
- _epg_object_getref(esl);
- _epg_object_set_updated(esl);
- LIST_INSERT_HEAD(&esl->broadcasts, ebc, sl_link);
-}
-
-static void _epg_serieslink_rem_broadcast
- ( epg_serieslink_t *esl, epg_broadcast_t *ebc )
-{
- LIST_REMOVE(ebc, sl_link);
- _epg_object_set_updated(esl);
- _epg_object_putref(esl);
-}
-
-htsmsg_t *epg_serieslink_serialize ( epg_serieslink_t *esl )
-{
- htsmsg_t *m;
- if (!esl || !esl->uri) return NULL;
- if (!(m = _epg_object_serialize((epg_object_t*)esl))) return NULL;
- return m;
-}
-
-epg_serieslink_t *epg_serieslink_deserialize
- ( htsmsg_t *m, int create, int *save )
-{
- epg_object_t **skel = _epg_serieslink_skel();
- epg_serieslink_t *esl;
- uint32_t changes = 0;
-
- if (!_epg_object_deserialize(m, *skel)) return NULL;
- if (!(esl = epg_serieslink_find_by_uri((*skel)->uri, (*skel)->grabber,
- create, save, &changes)))
- return NULL;
-
- *save |= epg_serieslink_change_finish(esl, changes, 0);
-
- return esl;
-}
-
/* **************************************************************************
* Channel
* *************************************************************************/
notify_delayed(id, "epg", "delete");
}
if (ebc->episode) _epg_episode_rem_broadcast(ebc->episode, ebc);
- if (ebc->serieslink) _epg_serieslink_rem_broadcast(ebc->serieslink, ebc);
if (ebc->summary) lang_str_destroy(ebc->summary);
if (ebc->description) lang_str_destroy(ebc->description);
if (ebc->credits) htsmsg_destroy(ebc->credits);
if (ebc->category) string_list_destroy(ebc->category);
if (ebc->keyword) string_list_destroy(ebc->keyword);
if (ebc->keyword_cached) lang_str_destroy(ebc->keyword_cached);
+ free(ebc->serieslink_uri);
_epg_object_destroy(eo, NULL);
assert(LIST_EMPTY(&ebc->dvr_entries));
free(ebc);
if (!(changes & EPG_CHANGED_EPISODE))
save |= epg_broadcast_set_episode(broadcast, NULL, NULL);
if (!(changes & EPG_CHANGED_SERIESLINK))
- save |= epg_broadcast_set_serieslink(broadcast, NULL, NULL);
+ save |= epg_broadcast_set_serieslink_uri(broadcast, NULL, NULL);
if (!(changes & EPG_CHANGED_DVB_EID))
save |= epg_broadcast_set_dvb_eid(broadcast, 0, NULL);
if (!(changes & EPG_CHANGED_IS_WIDESCREEN))
*save |= epg_broadcast_set_category(ebc, src->category, &changes);
*save |= epg_broadcast_set_keyword(ebc, src->keyword, &changes);
*save |= epg_broadcast_set_description(ebc, src->description, &changes);
- *save |= epg_broadcast_set_serieslink(ebc, src->serieslink, &changes);
+ *save |= epg_broadcast_set_serieslink_uri(ebc, src->serieslink_uri, &changes);
*save |= epg_broadcast_set_episode(ebc, src->episode, &changes);
_epg_object_set_grabber(ebc, src->grabber);
*save |= epg_broadcast_change_finish(ebc, changes, 0);
return save;
}
-int epg_broadcast_set_serieslink
- ( epg_broadcast_t *ebc, epg_serieslink_t *esl, uint32_t *changed )
+int epg_broadcast_set_serieslink_uri
+ ( epg_broadcast_t *ebc, const char *uri, uint32_t *changed )
{
int save = 0;
if (!ebc) return 0;
if (changed) *changed |= EPG_CHANGED_SERIESLINK;
- if (ebc->serieslink != esl) {
- if (ebc->serieslink) _epg_serieslink_rem_broadcast(ebc->serieslink, ebc);
- ebc->serieslink = esl;
- if (esl) _epg_serieslink_add_broadcast(esl, ebc);
+ if (strcmp(ebc->serieslink_uri ?: "", uri ?: "")) {
+ free(ebc->serieslink_uri);
+ ebc->serieslink_uri = strdup(uri);
save = 1;
}
return save;
if (broadcast->keyword)
string_list_serialize(broadcast->keyword, m, "keyword");
/* No need to serialize keyword_cached since it is rebuilt from keyword */
-
- if (broadcast->serieslink)
- htsmsg_add_str(m, "serieslink", broadcast->serieslink->uri);
+ if (broadcast->serieslink_uri)
+ htsmsg_add_str(m, "serieslink", broadcast->serieslink_uri);
return m;
}
channel_t *ch = NULL;
epg_broadcast_t *ebc, **skel = _epg_broadcast_skel();
epg_episode_t *ee;
- epg_serieslink_t *esl;
lang_str_t *ls;
htsmsg_t *hm;
string_list_t *sl;
const char *str;
- uint32_t eid, u32, changes = 0, changes2 = 0;
+ uint32_t eid, u32, changes = 0;
int64_t start, stop;
if (htsmsg_get_s64(m, "start", &start)) return NULL;
/* Series link */
if ((str = htsmsg_get_str(m, "serieslink")))
- if ((esl = epg_serieslink_find_by_uri(str, ebc->grabber, 1, save, &changes2))) {
- *save |= epg_broadcast_set_serieslink(ebc, esl, &changes);
- *save |= epg_serieslink_change_finish(esl, changes2, 0);
- }
+ *save |= epg_broadcast_set_serieslink_uri(ebc, str, &changes);
/* Set the episode */
*save |= epg_broadcast_set_episode(ebc, ee, &changes);
free(*skel); *skel = NULL;
skel = _epg_episode_skel();
free(*skel); *skel = NULL;
- skel = _epg_serieslink_skel();
- free(*skel); *skel = NULL;
broad = _epg_broadcast_skel();
free(*broad); *broad = NULL;
}
typedef struct epg_season epg_season_t;
typedef struct epg_episode epg_episode_t;
typedef struct epg_broadcast epg_broadcast_t;
-typedef struct epg_serieslink epg_serieslink_t;
extern int epg_in_load;
htsmsg_t *epg_episode_serialize ( epg_episode_t *b );
epg_episode_t *epg_episode_deserialize ( htsmsg_t *m, int create, int *save );
-/* ************************************************************************
- * Series Link - broadcast level linkage
- * ***********************************************************************/
-
-/* Object */
-struct epg_serieslink
-{
- epg_object_t;
-
- epg_broadcast_list_t broadcasts; ///< Episode list
-};
-
-/* Lookup */
-epg_serieslink_t *epg_serieslink_find_by_uri
- ( const char *uri, struct epggrab_module *src, int create, int *save, uint32_t *changes );
-epg_serieslink_t *epg_serieslink_find_by_id
- ( uint32_t id );
-
-/* Post-modify */
-int epg_serieslink_change_finish( epg_serieslink_t *s, uint32_t changed, int merge )
- __attribute__((warn_unused_result));
-
-/* Serialization */
-htsmsg_t *epg_serieslink_serialize ( epg_serieslink_t *s );
-epg_serieslink_t *epg_serieslink_deserialize
- ( htsmsg_t *m, int create, int *save );
-
/* ************************************************************************
* Broadcast - specific airing (channel & time) of an episode
* ***********************************************************************/
LIST_ENTRY(epg_broadcast) ep_link; ///< Episode link
epg_episode_t *episode; ///< Episode shown
LIST_ENTRY(epg_broadcast) sl_link; ///< SeriesLink link
- epg_serieslink_t *serieslink; ///< SeriesLink
+ char *serieslink_uri; ///< SeriesLink URI
struct channel *channel; ///< Channel being broadcast on
/* DVR */
int epg_broadcast_set_keyword
( epg_broadcast_t *b, const string_list_t *msg, uint32_t *changed )
__attribute__((warn_unused_result));
-int epg_broadcast_set_serieslink
- ( epg_broadcast_t *b, epg_serieslink_t *sl, uint32_t *changed )
+int epg_broadcast_set_serieslink_uri
+ ( epg_broadcast_t *b, const char *uri, uint32_t *changed )
__attribute__((warn_unused_result));
/* Accessors */
extern epg_object_tree_t epg_seasons;
extern epg_object_tree_t epg_episodes;
-extern epg_object_tree_t epg_serieslinks;
/* **************************************************************************
* Load
/* Series link */
} else if ( !strcmp(*sect, "serieslinks") ) {
- if (epg_serieslink_deserialize(m, 1, &save)) stats->seasons.total++;
+ /* skip */
/* Broadcasts */
} else if ( !strcmp(*sect, "broadcasts") ) {
.my_update = epg_memoryinfo_episodes_update
};
-static void epg_memoryinfo_serieslinks_update(memoryinfo_t *my)
-{
- epg_object_t *eo;
- epg_serieslink_t *es;
- int64_t size = 0, count = 0;
-
- RB_FOREACH(eo, &epg_serieslinks, uri_link) {
- es = (epg_serieslink_t *)eo;
- size += sizeof(*es);
- size += tvh_strlen(es->uri);
- count++;
- }
- memoryinfo_update(my, size, count);
-}
-
-static memoryinfo_t epg_memoryinfo_serieslinks = {
- .my_name = "EPG Series Links",
- .my_update = epg_memoryinfo_serieslinks_update
-};
-
static void epg_memoryinfo_broadcasts_update(memoryinfo_t *my)
{
channel_t *ch;
memoryinfo_register(&epg_memoryinfo_seasons);
memoryinfo_register(&epg_memoryinfo_episodes);
- memoryinfo_register(&epg_memoryinfo_serieslinks);
memoryinfo_register(&epg_memoryinfo_broadcasts);
/* Find the right file (and version) */
epg_skel_done();
memoryinfo_unregister(&epg_memoryinfo_seasons);
memoryinfo_unregister(&epg_memoryinfo_episodes);
- memoryinfo_unregister(&epg_memoryinfo_serieslinks);
memoryinfo_unregister(&epg_memoryinfo_broadcasts);
pthread_mutex_unlock(&global_lock);
}
if (_epg_write(sb, epg_episode_serialize((epg_episode_t*)eo))) goto error;
stats.episodes.total++;
}
- if ( _epg_write_sect(sb, "serieslinks") ) goto error;
- RB_FOREACH(eo, &epg_serieslinks, uri_link) {
- if (_epg_write(sb, epg_serieslink_serialize((epg_serieslink_t*)eo))) goto error;
- stats.seasons.total++;
- }
if ( _epg_write_sect(sb, "broadcasts") ) goto error;
CHANNEL_FOREACH(ch) {
if (ch->ch_epg_parent) continue;
uint8_t running;
epg_broadcast_t *ebc, _ebc;
epg_episode_t *ee = NULL, _ee;
- epg_serieslink_t *es;
epg_running_t run;
lang_str_t *title_copy = NULL;
- uint32_t changes2 = 0, changes3 = 0, changes4 = 0;
+ uint32_t changes2 = 0, changes3 = 0;
char tm1[32], tm2[32];
int short_target = ((eit_module_t *)mod)->short_target;
if (!ev->title)
goto running;
memset(&_ebc, 0, sizeof(_ebc));
- if (*ev->suri)
- if ((es = epg_serieslink_find_by_uri(ev->suri, mod, 0, 0, NULL)))
- _ebc.serieslink = es;
-
if (*ev->uri && (ee = epg_episode_find_by_uri(ev->uri, mod, 0, 0, NULL))) {
_ee = *ee;
} else {
_ebc.dvb_eid = eid;
_ebc.start = start;
_ebc.stop = stop;
+ _ebc.serieslink_uri = ev->suri;
_ee.title = title_copy = lang_str_copy(ev->title);
ebc = epg_match_now_next(ch, &_ebc);
* Series link
*/
- if (*ev->suri) {
- if ((es = epg_serieslink_find_by_uri(ev->suri, mod, 1, save, &changes3))) {
- *save |= epg_broadcast_set_serieslink(ebc, es, &changes2);
- *save |= epg_serieslink_change_finish(es, changes3, 0);
- }
- }
+ if (*ev->suri)
+ *save |= epg_broadcast_set_serieslink_uri(ebc, ev->suri, &changes2);
/*
* Episode
/* Find episode */
if (*ev->uri) {
- ee = epg_episode_find_by_uri(ev->uri, mod, 1, save, &changes4);
+ ee = epg_episode_find_by_uri(ev->uri, mod, 1, save, &changes3);
} else {
- ee = epg_episode_find_by_broadcast(ebc, mod, 1, save, &changes4);
+ ee = epg_episode_find_by_broadcast(ebc, mod, 1, save, &changes3);
}
/* Update Episode */
*save |= epg_broadcast_set_episode(ebc, ee, &changes2);
if (ev->is_new > 0)
*save |= epg_broadcast_set_is_new(ebc, ev->is_new - 1, &changes2);
- *save |= epg_episode_set_is_bw(ee, ev->bw, &changes4);
+ *save |= epg_episode_set_is_bw(ee, ev->bw, &changes3);
if (ev->title)
- *save |= epg_episode_set_title(ee, ev->title, &changes4);
+ *save |= epg_episode_set_title(ee, ev->title, &changes3);
if (ev->genre)
- *save |= epg_episode_set_genre(ee, ev->genre, &changes4);
+ *save |= epg_episode_set_genre(ee, ev->genre, &changes3);
if (ev->parental)
- *save |= epg_episode_set_age_rating(ee, ev->parental, &changes4);
+ *save |= epg_episode_set_age_rating(ee, ev->parental, &changes3);
if (ev->subtitle)
- *save |= epg_episode_set_subtitle(ee, ev->subtitle, &changes4);
+ *save |= epg_episode_set_subtitle(ee, ev->subtitle, &changes3);
else if ((short_target == 0 || short_target == 2) && ev->summary)
- *save |= epg_episode_set_subtitle(ee, ev->summary, &changes4);
+ *save |= epg_episode_set_subtitle(ee, ev->summary, &changes3);
#if TODO_ADD_EXTRA
if (ev->extra)
- *save |= epg_episode_set_extra(ee, extra, &changes4);
+ *save |= epg_episode_set_extra(ee, extra, &changes3);
#endif
/* save any found episode number */
if (ev->en.s_num || ev->en.e_num || ev->en.p_num)
- *save |= epg_episode_set_epnum(ee, &ev->en, &changes4);
+ *save |= epg_episode_set_epnum(ee, &ev->en, &changes3);
if (ev->first_aired > 0)
- *save |= epg_episode_set_first_aired(ee, ev->first_aired, &changes4);
+ *save |= epg_episode_set_first_aired(ee, ev->first_aired, &changes3);
if (ev->copyright_year > 0)
- *save |= epg_episode_set_copyright_year(ee, ev->copyright_year, &changes4);
- *save |= epg_episode_change_finish(ee, changes4, 0);
+ *save |= epg_episode_set_copyright_year(ee, ev->copyright_year, &changes3);
+ *save |= epg_episode_change_finish(ee, changes3, 0);
}
*save |= epg_broadcast_change_finish(ebc, changes2, 0);
epggrab_module_t *src = (epggrab_module_t*)mod;
epg_broadcast_t *ebc;
epg_episode_t *ee;
- epg_serieslink_t *es;
opentv_event_t ev;
char buffer[2048], *s;
lang_str_t *ls;
char suri[257], ubuf[UUID_HEX_SIZE];
snprintf(suri, 256, "opentv://channel-%s/series-%d",
channel_get_uuid(ch, ubuf), ev.serieslink);
- if ((es = epg_serieslink_find_by_uri(suri, src, 1, &save, &changes2))) {
- save |= epg_broadcast_set_serieslink(ebc, es, &changes);
- save |= epg_serieslink_change_finish(es, changes2, merge);
- }
+ save |= epg_broadcast_set_serieslink_uri(ebc, suri, &changes);
}
/*
const int use_category_not_genre = ((epggrab_module_int_t *)mod)->xmltv_use_category_not_genre;
int save = 0, save2 = 0, save3 = 0;
epg_episode_t *ee = NULL;
- epg_serieslink_t *es = NULL;
epg_broadcast_t *ebc;
epg_genre_list_t *egl;
epg_episode_num_t epnum;
* Series Link
*/
if (suri) {
- if ((es = epg_serieslink_find_by_uri(suri, mod, 1, &save2, &changes2))) {
- save |= epg_broadcast_set_serieslink(ebc, es, &changes);
- save |= epg_serieslink_change_finish(es, changes2, 0);
- }
+ save |= epg_broadcast_set_serieslink_uri(ebc, suri, &changes);
free(suri);
- if (es) stats->seasons.total++;
+ stats->seasons.total++;
if (save2 && (changes2 & EPG_CHANGED_CREATE)) stats->seasons.created++;
}
htsmsg_add_s64(conf, "start_extra", !retval ? (s64 < 0 ? 0 : s64) : 0); // 0 = dvr config
if (!(retval = htsmsg_get_s64(in, "stopExtra", &s64)) || add)
htsmsg_add_s64(conf, "stop_extra", !retval ? (s64 < 0 ? 0 : s64) : 0); // 0 = dvr config
- if (!(retval = htsmsg_get_u32(in, "serieslinkId", &u32)) || add)
- htsmsg_add_u32(conf, "serieslinkId", !retval ? u32 : 0);
- if((str = htsmsg_get_str(in, "serieslinkUri")) || add)
- htsmsg_add_str(conf, "serieslink", str ?: ""); // for compat reasons, htsp name is not same as internal name
+ if ((str = htsmsg_get_str(in, "serieslinkUri")) || add)
+ htsmsg_add_str(conf, "serieslink", str ?: "");
if (add) { // for add, stay compatible with older "approxTime
if(htsmsg_get_s32(in, "approxTime", &approx_time))
htsmsg_add_str2(out, "creator", dae->dae_creator);
if(dae->dae_channel)
htsmsg_add_u32(out, "channel", channel_get_id(dae->dae_channel));
-
- if (dae->dae_serieslink) {
- htsmsg_add_u32(out, "serieslinkId", dae->dae_serieslink->id);
- if (dae->dae_serieslink->uri)
- htsmsg_add_str(out, "serieslinkUri", dae->dae_serieslink->uri);
- }
+ if (dae->dae_serieslink_uri)
+ htsmsg_add_str(out, "serieslinkUri", dae->dae_serieslink_uri);
htsmsg_add_str(out, "method", method);
return out;
if (update) {
int ignore = 1;
if (e->updated > update) ignore = 0;
- else if (e->serieslink && e->serieslink->updated > update) ignore = 0;
else if (ee) {
if (ee->updated > update) ignore = 0;
else if (ee->season && ee->season->updated > update) ignore = 0;
htsmsg_add_msg(out, "keyword", string_list_to_htsmsg(e->keyword));
}
- if (e->serieslink) {
- htsmsg_add_u32(out, "serieslinkId", e->serieslink->id);
- if (e->serieslink->uri)
- htsmsg_add_str(out, "serieslinkUri", e->serieslink->uri);
- }
+ if (e->serieslink_uri)
+ htsmsg_add_str(out, "serieslinkUri", e->serieslink_uri);
if (ee) {
htsmsg_add_u32(out, "episodeId", ee->id);