}
if (bq->bq_ext_url) {
- free(bq->bq_src);
- snprintf(buf, sizeof(buf), "exturl://%s", idnode_uuid_as_sstr(&bq->bq_id));
- bq->bq_src = strdup(buf);
- bq->bq_download = bqd = calloc(1, sizeof(*bqd));
- bqd->bq = bq;
- download_init(&bqd->download, "bouquet");
- bqd->download.process = bouquet_download_process;
- bqd->download.stop = bouquet_download_stop;
- bouquet_change_comment(bq, bq->bq_ext_url, 0);
+ if (bq->bq_src && strncmp(bq->bq_src, "exturl://", 9) != 0) {
+ free(bq->bq_ext_url);
+ bq->bq_ext_url = NULL;
+ } else {
+ free(bq->bq_src);
+ snprintf(buf, sizeof(buf), "exturl://%s", idnode_uuid_as_sstr(&bq->bq_id));
+ bq->bq_src = strdup(buf);
+ bq->bq_download = bqd = calloc(1, sizeof(*bqd));
+ bqd->bq = bq;
+ download_init(&bqd->download, "bouquet");
+ bqd->download.process = bouquet_download_process;
+ bqd->download.stop = bouquet_download_stop;
+ bouquet_change_comment(bq, bq->bq_ext_url, 0);
+ }
}
bq2 = RB_INSERT_SORTED(&bouquets, bq, bq_link, _bq_cmp);
.name = N_("Re-fetch period (mins)"),
.off = offsetof(bouquet_t, bq_ext_url_period),
.opts = PO_ADVANCED | PO_HIDDEN,
+ .notify = bouquet_class_ext_url_notify,
.def.i = 60
},
{
char *argv[11], *p, *tagname = NULL, *name;
long lv, stype, sid, tsid, onid, hash;
uint32_t seen = 0;
- int n;
+ int n, ver = 2;
while (*data) {
if (strncmp(data, "#NAME ", 6) == 0) {
bq->bq_name = strdup(p);
} if (strncmp(data, "#SERVICE ", 9) == 0) {
data += 9, p = data;
+service:
while (*data && *data != '\r' && *data != '\n') data++;
if (*data) { *data = '\0'; data++; }
n = http_tokenize(p, argv, ARRAY_SIZE(argv), ':');
tagname = name;
}
}
+ } else if (strncmp(data, "#SERVICE: ", 10) == 0) {
+ ver = 1, data += 10, p = data;
+ goto service;
} else {
while (*data && *data != '\r' && *data != '\n') data++;
}
while (*data && (*data == '\r' || *data == '\n')) data++;
}
bouquet_completed(bq, seen);
- tvhinfo("bouquet", "parsed Enigma2 bouquet %s (%d services)", bq->bq_name, seen);
+ tvhinfo("bouquet", "parsed Enigma%d bouquet %s (%d services)", ver, bq->bq_name, seen);
return 0;
}
*/
tvheadend.bouquet = function(panel, index)
{
- var list = 'enabled,rescan,name,maptoch,mapnolcn,lcn_off,mapnoname,mapradio,' +
- 'chtag,source,services_count,services_seen,comment';
- var alist = 'enabled,ext_url,name,maptoch,mapnolcn,lcn_off,mapnoname,mapradio,' +
- 'chtag,comment';
+ var list0 = 'name,maptoch,mapnolcn,lcn_off,mapnoname,mapradio,' +
+ 'chtag,source,services_count,services_seen,comment';
+ var list = 'enabled,rescan,' + list0;
+ var elist = 'enabled,rescan,ext_url,' + list0;
+ var alist = 'enabled,ext_url,' + list0;
tvheadend.idnode_grid(panel, {
url: 'api/bouquet',
create: { }
},
del: true,
- edit: { params: { list: list } },
+ edit: { params: { list: elist } },
sort: {
field: 'name',
direction: 'ASC'