@@ -2314,6 +2314,118 @@ def netiptv_param_edit(net_uuid_sel, net_info_list, net_name, net_bouquet, net_t
2314
2314
param_save = requests .get (param_url )
2315
2315
net_param_load (net_uuid_sel )
2316
2316
2317
+ def services_param_load ():
2318
+ services_url = 'http://' + tvh_url + ':' + tvh_port + '/api/service/mapper/load'
2319
+ services_load = requests .get (services_url ).json ()
2320
+ services_opt_name = ['MAP ALL SERVICES TO CHANNELS' , 'MAP SELECTED SERVICES TO CHANNELS' ]
2321
+ services_opt_id = ['' ,'' ]
2322
+ services_opt_label = ['' ,'' ]
2323
+ services_node = {}
2324
+ for param in services_load ['entries' ][0 ]['params' ]:
2325
+ serv_id = param ['id' ]
2326
+ if serv_id != 'services' :
2327
+ services_opt_id .append (serv_id )
2328
+ serv_label = param ['caption' ]
2329
+ services_opt_label .append (serv_label )
2330
+ serv_value_orig = param ['value' ]
2331
+ if serv_value_orig == True :
2332
+ serv_value = 'Enabled'
2333
+ else :
2334
+ serv_value = 'Disabled'
2335
+ serv_list_add = serv_label + ': ' + serv_value
2336
+ services_opt_name .append (serv_list_add )
2337
+ services_node [serv_id ] = serv_value_orig
2338
+ services_param_edit (services_opt_name , services_opt_id , services_opt_label , services_node )
2339
+
2340
+ def services_param_edit (services_opt_name , services_opt_id , services_opt_label , services_node ):
2341
+ sel_param = dialog .select ('Edit Options or Select to Map Services' , list = services_opt_name )
2342
+ if sel_param == 0 :
2343
+ if dialog .yesno ("Map ALL Services to Channels" , "Are you sure you want to map all services to channels?" ):
2344
+ serv_url = 'http://' + tvh_url + ':' + tvh_port + '/api/mpegts/service/grid?limit=999999999&sort=multiplex'
2345
+ services = requests .get (serv_url ).json ()
2346
+ serv_total = services ['total' ]
2347
+ serv_uuid = []
2348
+ for serv_id in services ['entries' ]:
2349
+ if serv_id ['channel' ] == []:
2350
+ serv_uuid .append (serv_id ['uuid' ])
2351
+ serv_uuid_str = str (serv_uuid )
2352
+ serv_uuid_str = re .sub ("u\' " ,"\" " ,serv_uuid_str )
2353
+ serv_uuid_str = re .sub ("\' " ,"\" " ,serv_uuid_str )
2354
+ serv_node_str = json .dumps (services_node )
2355
+ serv_node_str = re .sub ('{' ,'' ,serv_node_str )
2356
+ map_url = 'http://' + tvh_url + ':' + tvh_port + '/api/service/mapper/save?node={"services":' + serv_uuid_str + ',' + serv_node_str
2357
+ map_ch = requests .get (map_url )
2358
+ status_url = 'http://' + tvh_url + ':' + tvh_port + '/api/service/mapper/status'
2359
+ time .sleep (3 )
2360
+ map_status = requests .get (status_url ).json ()
2361
+ map_total_num = map_status ['total' ]
2362
+ map_ok_num = map_status ['ok' ]
2363
+ map_fail_num = map_status ['fail' ]
2364
+ map_ignore_num = map_status ['ignore' ]
2365
+ map_complete = (map_ok_num + map_fail_num + map_ignore_num )
2366
+ map_total_perc = ((float (map_complete ) / float (serv_total )) * 100 )
2367
+ dialog .ok ("Channel mapping complete." , str (map_ok_num ) + " new channels added." , str (map_ignore_num ) + " services ignored." , str (map_fail_num ) + " services failed." )
2368
+ if sel_param == 1 :
2369
+ serv_url = 'http://' + tvh_url + ':' + tvh_port + '/api/mpegts/service/grid?limit=999999999&sort=multiplex'
2370
+ services = requests .get (serv_url ).json ()
2371
+ serv_total = services ['total' ]
2372
+ services_uuid = []
2373
+ services_list = []
2374
+ services_chan = []
2375
+ services_sel = []
2376
+ for serv in services ['entries' ]:
2377
+ try :
2378
+ serv_name = serv ['svcname' ]
2379
+ except :
2380
+ serv_name = 'NO SERVICE NAME'
2381
+ serv_uuid = serv ['uuid' ]
2382
+ serv_multiplex = serv ['multiplex' ]
2383
+ serv_network = serv ['network' ]
2384
+ serv_channel = serv ['channel' ]
2385
+ services_uuid .append (serv_uuid )
2386
+ if serv_channel != []:
2387
+ services_chan .append (serv_uuid )
2388
+ serv_list = serv_network + ' / ' + serv_multiplex + ' / ' + serv_name + ' ** MAPPED **'
2389
+ else :
2390
+ serv_list = serv_network + ' / ' + serv_multiplex + ' / ' + serv_name
2391
+ services_list .append (serv_list )
2392
+ serv_preselect = [i for i , item in enumerate (services_uuid ) if item not in set (services_chan )]
2393
+ sel_service = dialog .multiselect ('Select which services to map to channels' , options = services_list , preselect = serv_preselect )
2394
+ if sel_service == [] or sel_service == None :
2395
+ services_param_load ()
2396
+ else :
2397
+ for sel in sel_service :
2398
+ services_sel .append (services_uuid [sel ])
2399
+ services_node ['services' ] = services_sel
2400
+ serv_node_str = json .dumps (services_node )
2401
+ serv_update_url = 'http://' + tvh_url + ':' + tvh_port + '/api/service/mapper/save?node=' + serv_node_str
2402
+ serv_update_load = requests .get (serv_update_url )
2403
+ status_url = 'http://' + tvh_url + ':' + tvh_port + '/api/service/mapper/status'
2404
+ time .sleep (3 )
2405
+ map_status = requests .get (status_url ).json ()
2406
+ map_total_num = map_status ['total' ]
2407
+ map_ok_num = map_status ['ok' ]
2408
+ map_fail_num = map_status ['fail' ]
2409
+ map_ignore_num = map_status ['ignore' ]
2410
+ map_complete = (map_ok_num + map_fail_num + map_ignore_num )
2411
+ map_total_perc = ((float (map_complete ) / float (serv_total )) * 100 )
2412
+ dialog .ok ("Channel mapping complete." , str (map_ok_num ) + " new channels added." , str (map_ignore_num ) + " services ignored." , str (map_fail_num ) + " services failed." )
2413
+ if sel_param > 1 :
2414
+ serv_param_name = services_opt_label [sel_param ]
2415
+ serv_param_id = services_opt_id [sel_param ]
2416
+ serv_param_desc = serv_param_name + ': Select to Enable/Disable'
2417
+ sel_param_edit = dialog .select (serv_param_desc , list = enabledisable )
2418
+ if sel_param_edit >= 0 :
2419
+ if sel_param_edit == 0 :
2420
+ services_node [serv_param_id ] = True
2421
+ if sel_param_edit == 1 :
2422
+ services_node [serv_param_id ] = False
2423
+ services_node ['services' ] = ''
2424
+ serv_node_str = json .dumps (services_node )
2425
+ serv_update_url = 'http://' + tvh_url + ':' + tvh_port + '/api/service/mapper/save?node=' + serv_node_str
2426
+ serv_update_load = requests .get (serv_update_url )
2427
+ services_param_load ()
2428
+
2317
2429
def start_scan (net_uuid_sel ):
2318
2430
adapters_url = 'http://' + tvh_url + ':' + tvh_port + '/api/hardware/tree?uuid=root'
2319
2431
adapters_get = requests .get (adapters_url ).json ()
@@ -2593,29 +2705,7 @@ def mux_scan():
2593
2705
2594
2706
@plugin .route ('/services' )
2595
2707
def services ():
2596
- if dialog .yesno ("Map Services to Channels" , "Would you like to try to map all services to channels?" ):
2597
- serv_url = 'http://' + tvh_url + ':' + tvh_port + '/api/mpegts/service/grid?limit=999999999&sort=multiplex'
2598
- services = requests .get (serv_url ).json ()
2599
- serv_total = services ['total' ]
2600
- serv_uuid = []
2601
- for serv_id in services ['entries' ]:
2602
- if serv_id ['channel' ] == []:
2603
- serv_uuid .append (serv_id ['uuid' ])
2604
- serv_uuid_str = str (serv_uuid )
2605
- serv_uuid_str = re .sub ("u\' " ,"\" " ,serv_uuid_str )
2606
- serv_uuid_str = re .sub ("\' " ,"\" " ,serv_uuid_str )
2607
- map_url = 'http://' + tvh_url + ':' + tvh_port + '/api/service/mapper/save?node={"services":' + serv_uuid_str + ',"encrypted":false,"merge_same_name":false,"check_availability":false,"type_tags":true,"provider_tags":false,"network_tags":false}'
2608
- map_ch = requests .get (map_url )
2609
- status_url = 'http://' + tvh_url + ':' + tvh_port + '/api/service/mapper/status'
2610
- time .sleep (3 )
2611
- map_status = requests .get (status_url ).json ()
2612
- map_total_num = map_status ['total' ]
2613
- map_ok_num = map_status ['ok' ]
2614
- map_fail_num = map_status ['fail' ]
2615
- map_ignore_num = map_status ['ignore' ]
2616
- map_complete = (map_ok_num + map_fail_num + map_ignore_num )
2617
- map_total_perc = ((float (map_complete ) / float (serv_total )) * 100 )
2618
- dialog .ok ("Channel mapping complete." , str (map_ok_num ) + " new channels added." , str (map_ignore_num ) + " services ignored." , str (map_fail_num ) + " services failed." )
2708
+ services_param_load ()
2619
2709
2620
2710
@plugin .route ('/channels' )
2621
2711
def channels ():
0 commit comments