def load_channels(type): if type == 'ziggo': VIDEO_ADDON_PROFILE = ADDON_PROFILE.replace(ADDON_ID, 'plugin.video.ziggo') profile = load_file(VIDEO_ADDON_PROFILE + 'profile.json', ext=True, isJSON=True) try: if int(profile['v3']) == 1: return load_file(file='cache' + os.sep + type[0] + '.channels.v3.json', ext=False, isJSON=True) except: pass return load_file(file='cache' + os.sep + type[0] + '.channels.json', ext=False, isJSON=True)
def check_loggedin(addon): VIDEO_ADDON_PROFILE = ADDON_PROFILE.replace(ADDON_ID, addon) profile = load_file(VIDEO_ADDON_PROFILE + 'profile.json', ext=True, isJSON=True) if not profile: return False else: try: if len(unicode(profile['pswd'])) > 0 and int(profile['last_login_success']) == 1: return True else: return False except: return False
def check_loggedin(addon): VIDEO_ADDON_PROFILE = ADDON_PROFILE.replace(ADDON_ID, addon) profile = load_file(os.path.join(VIDEO_ADDON_PROFILE, 'profile.json'), ext=True, isJSON=True) if not profile: return False else: try: if check_key( profile, 'pswd') and len(str(profile['pswd'])) > 0 and check_key( profile, 'last_login_success') and int( profile['last_login_success']) == 1: return True else: return False except: return False
def change_channel(id, type_tv_radio, **kwargs): if not id or len(str(id)) == 0: return False id = str(id) type_tv_radio = str(type_tv_radio) if type_tv_radio == 'radio': prefs = load_radio_prefs(profile_id=1) mod_pref = prefs[id] if int(mod_pref['radio']) == 0: mod_pref['radio'] = 1 else: mod_pref['radio'] = 0 prefs[id] = mod_pref save_radio_prefs(profile_id=1, prefs=prefs) method = 'GUI.ActivateWindow' json_rpc( method, { "window": "videos", "parameters": [ 'plugin://' + str(ADDON_ID) + '/?_=channel_picker_menu&type_tv_radio=radio&save_all=0' ] }) else: profile_settings = load_profile(profile_id=1) prefs = load_prefs(profile_id=1) all_channels = load_channels(type='all') type_tv_radio = str(type_tv_radio) select_list = [] num = 0 for x in range(1, 6): if len(profile_settings['addon' + str(x)]) > 0: video_addon = profile_settings['addon' + str(x)] type_channels = load_channels( type=video_addon.replace('plugin.video.', '')) VIDEO_ADDON_PROFILE = ADDON_PROFILE.replace( ADDON_ID, video_addon) addon_prefs = load_file(VIDEO_ADDON_PROFILE + 'prefs.json', ext=True, isJSON=True) row2 = all_channels[id] type_id = str(row2[video_addon + '_id']) if len(type_id) > 0: row = type_channels[type_id] disabled = False if addon_prefs: try: if check_key(addon_prefs, str(row['id'])) and int( addon_prefs[str( row['id'])][type_tv_radio]) == 0: disabled = True except: pass if disabled == False: select_list.append( profile_settings['addon' + str(x)].replace( 'plugin.video.', '')) num += 1 select_list.append(_.DISABLED) selected = gui.select(_.SELECT_ADDON, select_list) mod_pref = prefs[id] if selected and selected >= 0: mod_pref[type_tv_radio + '_auto'] = 0 if selected == num: mod_pref[type_tv_radio] = 0 mod_pref[type_tv_radio + '_addonid'] = '' mod_pref[type_tv_radio + '_channelid'] = '' mod_pref[type_tv_radio + '_channelassetid'] = '' if type_tv_radio == 'live': mod_pref['channelname'] = '' mod_pref['channelicon'] = '' else: mod_pref[type_tv_radio] = 1 mod_pref[type_tv_radio + '_addonid'] = 'plugin.video.' + select_list[selected] mod_pref[type_tv_radio + '_channelid'] = '' mod_pref[type_tv_radio + '_channelassetid'] = '' if type_tv_radio == 'live': mod_pref['channelname'] = '' mod_pref['channelicon'] = '' type_channels = load_channels(type=select_list[selected]) row2 = all_channels[id] type_id = str(row2[mod_pref[type_tv_radio + '_addonid'] + '_id']) if len(type_id) > 0: row = type_channels[type_id] mod_pref[type_tv_radio + '_channelid'] = row['id'] mod_pref[type_tv_radio + '_channelassetid'] = row['assetid'] if type_tv_radio == 'live': mod_pref['channelname'] = row['name'] mod_pref['channelicon'] = row['icon'] prefs[id] = mod_pref save_prefs(profile_id=1, prefs=prefs) method = 'GUI.ActivateWindow' json_rpc( method, { "window": "videos", "parameters": [ 'plugin://' + str(ADDON_ID) + '/?_=channel_picker_menu&type_tv_radio=' + type_tv_radio + '&save_all=0' ] })
def save_all_prefs(type_tv_radio): if api_get_channels() == True: if type_tv_radio == 'radio': type_channels = load_channels(type='radio') prefs = load_radio_prefs(profile_id=1) found_ar = [] for currow in type_channels: row = type_channels[currow] all_id = str(row['id']) name = str(row['name']) if not prefs or not check_key(prefs, all_id): prefs[all_id] = {'radio': 1, 'name': name} found_ar.append(all_id) prefs2 = prefs.copy() for currow in prefs: if not currow in found_ar: del prefs2[currow] save_radio_prefs(profile_id=1, prefs=prefs2) else: profile_settings = load_profile(profile_id=1) all_channels = load_channels(type='all') prefs = load_prefs(profile_id=1) found_ar = [] addon_list = [] for x in range(1, 6): if len(profile_settings['addon' + str(x)]) > 0: addon_list.append(profile_settings['addon' + str(x)]) prefs2 = prefs.copy() for all_id in prefs2: pref = prefs2[all_id] if len(pref['live_addonid']) > 0: if not pref['live_addonid'] in addon_list: del prefs[all_id] continue if check_key( pref, 'replay_addonid') and len(pref['replay_addonid']) > 0: if not pref['replay_addonid'] in addon_list: del prefs[all_id]['replay'] del prefs[all_id]['replay_addonid'] del prefs[all_id]['replay_auto'] del prefs[all_id]['replay_channelid'] del prefs[all_id]['replay_channelassetid'] for x in range(1, 6): if len(profile_settings['addon' + str(x)]) > 0: video_addon = profile_settings['addon' + str(x)] type_channels = load_channels( type=video_addon.replace('plugin.video.', '')) VIDEO_ADDON_PROFILE = ADDON_PROFILE.replace( ADDON_ID, video_addon) addon_prefs = load_file(VIDEO_ADDON_PROFILE + 'prefs.json', ext=True, isJSON=True) for currow in type_channels: row = type_channels[currow] all_id = None for currow2 in all_channels: row2 = all_channels[currow2] if str(row2[video_addon + '_id']) == str( row['id']): all_id = str(currow2) if not all_id: continue if type_tv_radio == 'replay' and not check_key( prefs, all_id): continue disabled = False if addon_prefs: try: if int(addon_prefs[str( row['id'])][type_tv_radio]) == 0: disabled = True except: pass if disabled == True: if type_tv_radio == 'live': if all_id and check_key( prefs, all_id) and prefs[all_id][ 'live_addonid'] == video_addon: del prefs[all_id] else: try: if all_id and check_key( prefs, all_id ) and prefs[all_id][ 'replay_addonid'] == video_addon: del prefs[all_id]['replay'] del prefs[all_id]['replay_addonid'] del prefs[all_id]['replay_auto'] del prefs[all_id]['replay_channelid'] del prefs[all_id][ 'replay_channelassetid'] except: pass continue if type_tv_radio == 'live': if not prefs or not check_key(prefs, all_id): prefs[all_id] = { 'live': 1, 'live_addonid': video_addon, 'live_auto': 1, 'name': row['name'], 'live_channelid': row['id'], 'live_channelassetid': row['assetid'], 'channelname': row['name'], 'channelicon': row['icon'] } elif int( prefs[all_id]['live_auto'] ) == 1 and all_id and not all_id in found_ar: prefs[all_id]['live'] = 1 prefs[all_id]['live_addonid'] = video_addon prefs[all_id]['live_auto'] = 1 prefs[all_id]['live_channelid'] = row['id'] prefs[all_id]['live_channelassetid'] = row[ 'assetid'] else: try: if (not prefs or not check_key(prefs, all_id) ) or (int(prefs[all_id]['replay_auto']) == 1 and all_id and not all_id in found_ar): prefs[all_id]['replay'] = 1 prefs[all_id][ 'replay_addonid'] = video_addon prefs[all_id]['replay_auto'] = 1 prefs[all_id]['replay_channelid'] = row[ 'id'] prefs[all_id][ 'replay_channelassetid'] = row[ 'assetid'] except: prefs[all_id]['replay'] = 1 prefs[all_id]['replay_addonid'] = video_addon prefs[all_id]['replay_auto'] = 1 prefs[all_id]['replay_channelid'] = row['id'] prefs[all_id]['replay_channelassetid'] = row[ 'assetid'] found_ar.append(all_id) prefs2 = prefs.copy() if type_tv_radio == 'live': for currow in prefs: if not currow in found_ar: del prefs2[currow] save_prefs(profile_id=1, prefs=prefs2)
def api_get_epg_by_addon(addon): type = addon[0] directory = os.path.dirname(ADDON_PROFILE + 'tmp' + os.sep + 'epg.zip') if not os.path.exists(directory): os.makedirs(directory) directory = os.path.dirname(ADDON_PROFILE + "cache" + os.sep + unicode(addon) + os.sep + 'epg.zip') if not os.path.exists(directory): os.makedirs(directory) epg_url = '{dut_epg_url}/{type}.epg.zip'.format(dut_epg_url=CONST_DUT_EPG_BASE, type=type) if addon == 'ziggo': VIDEO_ADDON_PROFILE = ADDON_PROFILE.replace(ADDON_ID, 'plugin.video.ziggo') profile = load_file(VIDEO_ADDON_PROFILE + 'profile.json', ext=True, isJSON=True) try: if int(profile['v3']) == 1: epg_url = '{dut_epg_url}/{type}.epg.v3.zip'.format(dut_epg_url=CONST_DUT_EPG_BASE, type=type) except: pass tmp = ADDON_PROFILE + 'tmp' + os.sep + '{type}.epg.zip'.format(type=type) if not is_file_older_than_x_days(file=tmp, days=0.5): return False else: resp = requests.get(epg_url, stream=True) if resp.status_code != 200: return False with open(tmp, 'wb') as f: for chunk in resp.iter_content(chunk_size=SESSION_CHUNKSIZE): f.write(chunk) if os.path.isfile(tmp): from zipfile import ZipFile try: with ZipFile(tmp, 'r') as zipObj: zipObj.extractall(ADDON_PROFILE + "cache" + os.sep + unicode(addon) + os.sep) except: try: fixBadZipfile(tmp) with ZipFile(tmp, 'r') as zipObj: zipObj.extractall(ADDON_PROFILE + "cache" + os.sep + unicode(addon) + os.sep) except: try: from resources.lib.base.l1.zipfile import ZipFile as ZipFile2 with ZipFile2(tmp, 'r') as zipObj: zipObj.extractall(ADDON_PROFILE + "cache" + os.sep + unicode(addon) + os.sep) except: return False else: return False return True
def change_replay_channel(id, **kwargs): if not id or len(unicode(id)) == 0: return False profile_settings = load_profile(profile_id=1) prefs = load_prefs(profile_id=1) all_channels = load_channels(type='all') id = unicode(id) select_list = [] num = 0 for x in range(1, 6): if len(profile_settings['addon' + unicode(x)]) > 0: type = profile_settings['addon' + unicode(x)] type_channels = load_channels( type=type.replace('plugin.video.', '')) VIDEO_ADDON_PROFILE = ADDON_PROFILE.replace(ADDON_ID, type) addon_prefs = load_file(VIDEO_ADDON_PROFILE + 'prefs.json', ext=True, isJSON=True) addon_profile = load_file(VIDEO_ADDON_PROFILE + 'profile.json', ext=True, isJSON=True) ziggov3 = 0 try: if int(addon_profile['v3']) == 1: ziggov3 = 1 except: pass row2 = all_channels[id] if ziggov3 == 1: try: type_id = unicode(row2[type + '_idv3']) except: type_id = '' else: type_id = unicode(row2[type + '_id']) if len(type_id) > 0: row = type_channels[type_id] disabled = False if addon_prefs: try: if check_key(addon_prefs, unicode(row['id'])) and int( addon_prefs[unicode( row['id'])]['replay']) == 0: disabled = True except: pass if disabled == False: select_list.append( profile_settings['addon' + unicode(x)].replace( 'plugin.video.', '')) num += 1 select_list.append(_.DISABLED) selected = gui.select(_.SELECT_ADDON, select_list) mod_pref = prefs[id] if selected >= 0: mod_pref['replay_auto'] = 0 if selected == num: mod_pref['replay'] = 0 mod_pref['replay_addonid'] = '' mod_pref['replay_channelid'] = '' mod_pref['replay_channelassetid'] = '' else: mod_pref['replay'] = 1 mod_pref[ 'replay_addonid'] = 'plugin.video.' + select_list[selected] mod_pref['replay_channelid'] = '' mod_pref['replay_channelassetid'] = '' type_channels = load_channels(type=select_list[selected]) row2 = all_channels[id] if ziggov3 == 1: try: type_id = unicode(row2[mod_pref['replay_addonid'] + '_idv3']) except: type_id = '' else: type_id = unicode(row2[mod_pref['replay_addonid'] + '_id']) if len(type_id) > 0: row = type_channels[type_id] mod_pref['replay_channelid'] = row['id'] mod_pref['replay_channelassetid'] = row['assetid'] prefs[id] = mod_pref save_prefs(profile_id=1, prefs=prefs) xbmc.executeJSONRPC( '{"jsonrpc":"2.0","id":1,"method":"GUI.ActivateWindow","params":{"window":"videos","parameters":["plugin://' + unicode(ADDON_ID) + '/?_=replay_channel_picker_menu&num=6&save_all=0"]}}')
def save_all_replay_prefs(): if api_get_channels() == True: profile_settings = load_profile(profile_id=1) all_channels = load_channels(type='all') prefs = load_prefs(profile_id=1) found_ar = [] for x in range(1, 6): if len(profile_settings['addon' + unicode(x)]) > 0: type = profile_settings['addon' + unicode(x)] type_channels = load_channels( type=type.replace('plugin.video.', '')) VIDEO_ADDON_PROFILE = ADDON_PROFILE.replace(ADDON_ID, type) addon_prefs = load_file(VIDEO_ADDON_PROFILE + 'prefs.json', ext=True, isJSON=True) addon_profile = load_file(VIDEO_ADDON_PROFILE + 'profile.json', ext=True, isJSON=True) ziggov3 = 0 try: if int(addon_profile['v3']) == 1: ziggov3 = 1 except: pass for currow in type_channels: row = type_channels[currow] all_id = None for currow2 in all_channels: row2 = all_channels[currow2] if (ziggov3 == 0 and unicode(row2[type + '_id']) == unicode(row['id'])) or ( ziggov3 == 1 and check_key(row2, type + '_idv3') and unicode(row2[type + '_idv3']) == unicode(row['id'])): all_id = unicode(currow2) if not all_id or not check_key(prefs, all_id): continue disabled = False if addon_prefs: try: if int(addon_prefs[unicode( row['id'])]['replay']) == 0: disabled = True except: pass if disabled == True: try: if all_id and check_key( prefs, all_id ) and prefs[all_id]['replay_addonid'] == type: del prefs[all_id]['replay'] del prefs[all_id]['replay_addonid'] del prefs[all_id]['replay_auto'] del prefs[all_id]['replay_channelid'] del prefs[all_id]['replay_channelassetid'] except: pass continue try: if (not prefs or not check_key(prefs, all_id)) or ( int(prefs[all_id]['replay_auto']) == 1 and all_id and not all_id in found_ar): prefs[all_id]['replay'] = 1 prefs[all_id]['replay_addonid'] = type prefs[all_id]['replay_auto'] = 1 prefs[all_id]['replay_channelid'] = row['id'] prefs[all_id]['replay_channelassetid'] = row[ 'assetid'] except: prefs[all_id]['replay'] = 1 prefs[all_id]['replay_addonid'] = type prefs[all_id]['replay_auto'] = 1 prefs[all_id]['replay_channelid'] = row['id'] prefs[all_id]['replay_channelassetid'] = row['assetid'] found_ar.append(all_id) prefs2 = prefs.copy() for currow in prefs: if not currow in found_ar: del prefs2[currow] save_prefs(profile_id=1, prefs=prefs2)