Skip to content

Commit c2f26a6

Browse files
committed
fixes for network and epg parameters
1 parent 32297b9 commit c2f26a6

File tree

2 files changed

+54
-40
lines changed

2 files changed

+54
-40
lines changed

addon.xml

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
22
<addon id="script.module.tvh2kodi"
33
name="Tvheadend Setup for Kodi"
4-
version="1.1"
4+
version="1.2"
55
provider-name="edit4ever">
66
<requires>
77
<import addon="xbmc.python" version="2.6.0"/>
@@ -14,7 +14,13 @@
1414
</extension>
1515
<extension point="xbmc.addon.metadata">
1616
<summary>Kodi interface for Tvheadend setup (Tvh2Kodi)</summary>
17-
<description>Tvh2Kodi gives access to the basic Tvheadend settings directly from the Kodi interface. This can be used in place of the Tvheadend web interface to get your Tvheadend backend server configured and running. It is also provides an easy way to scan for new services and channels and to configure your channel EPG sources.</description>
17+
<description>Tvh2Kodi gives access to the basic Tvheadend settings directly from the Kodi interface. This can be used in place of the Tvheadend web interface to get your Tvheadend backend server configured and running. It is also provides an easy way to scan for new services and channels and to configure your channel EPG sources.
18+
19+
v1.2
20+
- fix error in network parameters load
21+
- fix wrong epg parameter selection
22+
23+
</description>
1824
<disclaimer>Copyright (C) 2017 edit4ever - edit4ever@gmail.com</disclaimer>
1925
<platform>all</platform>
2026
<license>GNU GENERAL PUBLIC LICENSE. Version 3, June 2007</license>
@@ -26,11 +32,11 @@
2632
<screenshot>resources/screenshot-03.jpg</screenshot>
2733
</assets>
2834
<news>
29-
v1.1
30-
- add triggers for OTA and internal grabbers
31-
32-
v1.0
33-
- Initial Release
35+
v1.1
36+
- add triggers for OTA and internal grabbers
37+
38+
v1.0
39+
- Initial Release
3440
</news>
3541
</extension>
3642
</addon>

default.py

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,10 @@ def dvr_param_edit(dvr_uuid_sel, dvr_info_list, dvr_keep_key, dvr_keep_val, dvr_
182182
param_update = '"profile":' + str(dvr_profile)
183183
if sel_param == 6:
184184
dvr_file_param_load(dvr_uuid_sel)
185-
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + dvr_uuid_sel + '"}'
186-
param_save = requests.get(param_url)
187-
dvr_param_load(dvr_uuid_sel)
185+
if param_update != "":
186+
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + dvr_uuid_sel + '"}'
187+
param_save = requests.get(param_url)
188+
dvr_param_load(dvr_uuid_sel)
188189

189190
def dvr_file_param_load(dvr_uuid_sel):
190191
dvr_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/load?uuid=' + dvr_uuid_sel
@@ -270,9 +271,10 @@ def dvr_file_param_edit(dvr_uuid_sel, dvr_file_info_list, dvr_day_dir, dvr_chann
270271
if sel_enabled >= 0:
271272
dvr_windows_title = truefalse[sel_enabled]
272273
param_update = '"windows-compatible-filenames":' + dvr_windows_title
273-
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + dvr_uuid_sel + '"}'
274-
param_save = requests.get(param_url)
275-
dvr_file_param_load(dvr_uuid_sel)
274+
if param_update != "":
275+
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + dvr_uuid_sel + '"}'
276+
param_save = requests.get(param_url)
277+
dvr_file_param_load(dvr_uuid_sel)
276278

277279
def mux_param_load_atsct(mux_uuid_sel):
278280
mux_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/load?uuid=' + mux_uuid_sel
@@ -335,7 +337,7 @@ def mux_param_edit_atsct(mux_uuid_sel, mux_info_list, mux_scanstate, mux_scansta
335337
delete_mux_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/delete?uuid=["' + mux_uuid_sel +'"]'
336338
delete_mux = requests.get(delete_mux_url)
337339
muxes()
338-
if sel_param < 7:
340+
if param_update != "":
339341
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + mux_uuid_sel + '"}'
340342
param_save = requests.get(param_url)
341343
mux_param_load_atsct(mux_uuid_sel)
@@ -405,7 +407,7 @@ def mux_param_edit_atscc(mux_uuid_sel, mux_info_list, mux_scanstate, mux_scansta
405407
delete_mux_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/delete?uuid=["' + mux_uuid_sel +'"]'
406408
delete_mux = requests.get(delete_mux_url)
407409
muxes()
408-
if sel_param < 8:
410+
if param_update != "":
409411
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + mux_uuid_sel + '"}'
410412
param_save = requests.get(param_url)
411413
mux_param_load_atscc(mux_uuid_sel)
@@ -523,7 +525,7 @@ def mux_param_edit_dvbt(mux_uuid_sel, mux_info_list, mux_plp_id, mux_fec_lo, mux
523525
delete_mux_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/delete?uuid=["' + mux_uuid_sel +'"]'
524526
delete_mux = requests.get(delete_mux_url)
525527
muxes()
526-
if sel_param < 14:
528+
if param_update != "":
527529
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + mux_uuid_sel + '"}'
528530
param_save = requests.get(param_url)
529531
mux_param_load_dvbt(mux_uuid_sel)
@@ -640,56 +642,58 @@ def ch_param_edit(ch_uuid_sel, ch_info_list, ch_enabled, ch_autoname, ch_name, c
640642
delete_ch_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/delete?uuid=["' + ch_uuid_sel +'"]'
641643
delete_ch = requests.get(delete_ch_url)
642644
channels()
643-
if sel_param < 6:
645+
if param_update != "":
644646
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + ch_uuid_sel + '"}'
645647
param_save = requests.get(param_url)
646648
ch_param_load(ch_uuid_sel)
647649

648650

649651
def epg_param(sel_epg, epg_rename, epg_renumber, epg_reicon, epg_dbsave, epg_intcron, epg_otainit, epg_otacron, epg_otatime):
650-
if sel_epg == 1:
652+
param_update = ""
653+
if sel_epg == 3:
651654
sel_epg_rename = dialog.select('Update channel name with EPG provider name', list=enabledisable)
652655
if sel_epg_rename >= 0:
653656
epg_rename = truefalse[sel_epg_rename]
654657
param_update = '"channel_rename":' + epg_rename
655-
if sel_epg == 2:
658+
if sel_epg == 4:
656659
sel_epg_renumber = dialog.select('Update channel number with EPG provider number', list=enabledisable)
657660
if sel_epg_renumber >= 0:
658661
epg_renumber = truefalse[sel_epg_renumber]
659662
param_update = '"channel_renumber":' + epg_renumber
660-
if sel_epg == 3:
663+
if sel_epg == 5:
661664
sel_epg_reicon = dialog.select('Update channel icon with EPG provider icon', list=enabledisable)
662665
if sel_epg_reicon >= 0:
663666
epg_reicon = truefalse[sel_epg_reicon]
664667
param_update = '"channel_reicon":' + epg_reicon
665-
if sel_epg == 4:
668+
if sel_epg == 6:
666669
sel_epg_dbsave = dialog.input('Save EPG data to disk every X hours (set 0 to disable)', defaultt=str(epg_dbsave),type=xbmcgui.INPUT_NUMERIC)
667670
if sel_epg_dbsave == "":
668671
sel_epg_dbsave = epg_dbsave
669672
param_update = '"epgdb_periodicsave":' + str(sel_epg_dbsave)
670-
if sel_epg == 5:
673+
if sel_epg == 7:
671674
sel_epg_intcron = dialog.input('Edit the cron multiline for internal grabbers', defaultt=epg_intcron,type=xbmcgui.INPUT_ALPHANUM)
672675
if sel_epg_intcron == "":
673676
sel_epg_intcron = epg_intcron
674677
param_update = '"cron":"' + sel_epg_intcron + '"'
675-
if sel_epg == 6:
678+
if sel_epg == 8:
676679
sel_epg_otainit = dialog.select('Enable or disable initial EPG grab at startup', list=enabledisable)
677680
if sel_epg_otainit >= 0:
678681
epg_otainit = truefalse[sel_epg_otainit]
679682
param_update = '"ota_initial":' + epg_otainit
680-
if sel_epg == 7:
683+
if sel_epg == 9:
681684
sel_epg_otacron = dialog.input('Edit the cron multiline for over-the-air grabbers', defaultt=epg_otacron,type=xbmcgui.INPUT_ALPHANUM)
682685
if sel_epg_otacron == "":
683686
sel_epg_otacron = epg_otacron
684687
param_update = '"cron":"' + sel_epg_otacron + '"'
685-
if sel_epg == 8:
688+
if sel_epg == 10:
686689
sel_epg_otatime = dialog.input('OTA EPG scan timeout in seconds (30-7200)', defaultt=str(epg_otatime),type=xbmcgui.INPUT_NUMERIC)
687690
if sel_epg_otatime == "":
688691
sel_epg_otatime = epg_otatime
689692
param_update = '"ota_timeout":' + str(sel_epg_otatime)
690-
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/epggrab/config/save?node={' + param_update + '}'
691-
param_save = requests.get(param_url)
692-
epg()
693+
if param_update != "":
694+
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/epggrab/config/save?node={' + param_update + '}'
695+
param_save = requests.get(param_url)
696+
epg()
693697

694698
def epgmod_list_load():
695699
epg_modlist_url = 'http://' + tvh_url + ':' + tvh_port + '/api/epggrab/module/list'
@@ -771,9 +775,10 @@ def epgmod_param_edit(epgmod_uuid_sel, epgmod_info_list, epgmod_enabled, epgmod_
771775
if sel_param == 3:
772776
sel_epgmod_args = dialog.input('Additional arguments to pass to the grabber', defaultt=epgmod_args,type=xbmcgui.INPUT_ALPHANUM)
773777
param_update = '"args":"' + sel_epgmod_args + '"'
774-
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + epgmod_uuid_sel + '"}'
775-
param_save = requests.get(param_url)
776-
epgmod_param_load(epgmod_uuid_sel)
778+
if param_update != "":
779+
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + epgmod_uuid_sel + '"}'
780+
param_save = requests.get(param_url)
781+
epgmod_param_load(epgmod_uuid_sel)
777782

778783
def adapt_param_load(adapter_uuid_sel):
779784
adapt_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/load?uuid=' + adapter_uuid_sel
@@ -856,9 +861,10 @@ def adapt_param_edit(adapter_uuid_sel, adapt_info_list, adapt_enabled, adapt_nam
856861
if sel_adapt_idle >= 0:
857862
adapt_idle = truefalse[sel_adapt_idle]
858863
param_update = '"idlescan":' + adapt_idle
859-
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + adapter_uuid_sel + '"}'
860-
param_save = requests.get(param_url)
861-
adapt_param_load(adapter_uuid_sel)
864+
if param_update != "":
865+
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + adapter_uuid_sel + '"}'
866+
param_save = requests.get(param_url)
867+
adapt_param_load(adapter_uuid_sel)
862868

863869
def network_new():
864870
net_type_name = ["ATSC-T","ATSC-C","DVB-S","DVB-C","DVB-T","ISDB-S","ISDB-C","ISDB-T","IPTV Automatic"]
@@ -890,7 +896,8 @@ def net_param_load(net_uuid_sel):
890896
net_load = requests.get(net_url).json()
891897
net_name = find_param(net_load, 'networkname')
892898
net_bouquet = find_param(net_load, 'bouquet')
893-
net_type = net_load['entries'][0]['params'][17]['enum']['params']['type']
899+
net_type = net_load['entries'][0]['class']
900+
net_type = re.sub("dvb_network_","",net_type)
894901
net_num_mux = find_param(net_load, 'num_mux')
895902
net_num_svc = find_param(net_load, 'num_svc')
896903
net_num_ch = find_param(net_load, 'num_chn')
@@ -935,11 +942,8 @@ def net_param_edit(net_uuid_sel, net_info_list, net_name, net_bouquet, net_type,
935942
for scan_v in dvb_list['entries']:
936943
scan_val.append(scan_v['val'])
937944
sel_scan = dialog.select('Select a pre-defined mux list for the ' + net_name + " network", list=scan_val)
938-
scan_val_sel = scan_val[sel_scan]
945+
scan_val_sel = scan_key[sel_scan]
939946
param_update = '"scanfile":"' + scan_val_sel + '"'
940-
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + net_uuid_sel + '"}'
941-
param_save = requests.get(param_url)
942-
net_param_load(net_uuid_sel)
943947
if sel_param == 3 and net_num_mux != 0 and net_num_svc != 0:
944948
if dialog.yesno(str(net_num_svc) + " services found!", "Would you like to scan muxes for new services?"):
945949
start_scan(net_uuid_sel)
@@ -965,7 +969,9 @@ def net_param_edit(net_uuid_sel, net_info_list, net_name, net_bouquet, net_type,
965969
delete_net_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/delete?uuid=["' + net_uuid_sel +'"]'
966970
delete_net = requests.get(delete_net_url)
967971
networks()
968-
if sel_param < 5:
972+
if param_update != "":
973+
param_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/save?node={' + param_update + ',"uuid":"' + net_uuid_sel + '"}'
974+
param_save = requests.get(param_url)
969975
net_param_load(net_uuid_sel)
970976

971977
def start_scan(net_uuid_sel):
@@ -1208,6 +1214,8 @@ def networks():
12081214
for net_u in networks['entries']:
12091215
net_uuid.append(net_u['uuid'])
12101216
sel_network = dialog.select('Select a network to configure', list=net_name)
1217+
if sel_network < 0:
1218+
return
12111219
if sel_network == 0:
12121220
net_uuid_sel = network_new()
12131221
net_param_load(net_uuid_sel)

0 commit comments

Comments
 (0)