def imdb_build_keyword_results(db_type, query): def _builder(): for count, item in enumerate(results, 1): cm = [] cm_append = cm.append keyword = item[0] listings = item[1] url_params = {'mode': mode, 'action': 'imdb_keywords_list_contents', 'list_id': keyword.lower(), 'iconImage': 'imdb.png'} url_json = json.dumps(url_params) add_list_params = {'mode': 'navigator.adjust_main_lists', 'method': 'add_external', 'list_name': '%s (IMDb)' % keyword, 'menu_item': url_json} add_folder_params = {'mode': 'navigator.adjust_shortcut_folder_lists', 'method': 'add_external', 'name': '%s (IMDb)' % keyword, 'menu_item': url_json} url = build_url(url_params) listitem = make_listitem() listitem.setLabel('%02d | [B]%s[/B] [I]%s[/I]' % (count, keyword.upper(), listings)) listitem.setArt({'icon': default_imdb_icon, 'poster': default_imdb_icon, 'thumb': default_imdb_icon, 'fanart': fanart, 'banner': default_imdb_icon}) cm_append((ls(32730),'RunPlugin(%s)' % build_url(add_list_params))) cm_append((ls(32731),'RunPlugin(%s)' % build_url(add_folder_params))) listitem.addContextMenuItems(cm) yield (url, listitem, True) __handle__ = int(argv[1]) results = imdb_keyword_search(query) add_to_search_history(query, 'imdb_keyword_%s_queries' % db_type) if not results: return mode = 'build_%s_list' % db_type kodi_utils.add_items(__handle__, list(_builder())) kodi_utils.set_content(__handle__, 'files') kodi_utils.end_directory(__handle__) kodi_utils.set_view_mode('view.main')
def browse_ad_cloud(folder): def _builder(): for count, item in enumerate(links, 1): try: cm = [] url_link = item['link'] name = clean_file_name(item['filename']).upper() size = item['size'] display_size = float(int(size)) / 1073741824 display = '%02d | [B]%s[/B] | %.2f GB | [I]%s [/I]' % ( count, file_str, display_size, name) url_params = { 'mode': 'alldebrid.resolve_ad', 'url': url_link, 'play': 'true' } url = build_url(url_params) down_file_params = { 'mode': 'downloader', 'name': name, 'url': url_link, 'action': 'cloud.alldebrid', 'image': default_ad_icon } cm.append( (down_str, 'RunPlugin(%s)' % build_url(down_file_params))) listitem = make_listitem() listitem.setLabel(display) listitem.addContextMenuItems(cm) listitem.setArt({ 'icon': default_ad_icon, 'poster': default_ad_icon, 'thumb': default_ad_icon, 'fanart': fanart, 'banner': default_ad_icon }) listitem.setInfo('video', {}) yield (url, listitem, False) except: pass __handle__ = int(argv[1]) file_str, down_str = ls(32743).upper(), ls(32747) extensions = supported_video_extensions() links = json.loads(folder) links = [ i for i in links if i['filename'].lower().endswith(tuple(extensions)) ] kodi_utils.add_items(__handle__, list(_builder())) kodi_utils.set_content(__handle__, 'files') kodi_utils.end_directory(__handle__) kodi_utils.set_view_mode('view.premium')
def furk_tfile_video(params): def _builder(): for count, item in enumerate(t_files, 1): try: cm = [] url_params = { 'mode': 'media_play', 'url': item['url_dl'], 'media_type': 'video' } url = build_url(url_params) name = clean_file_name(item['name']).upper() height = int(item['height']) if 1200 < height > 2100: display_res = '4K' elif 1000 < height < 1200: display_res = '1080P' elif 680 < height < 1000: display_res = '720P' else: display_res = 'SD' display_name = '%02d | [B]%s[/B] | [B]%.2f GB[/B] | %smbps | [I]%s[/I]' % \ (count, display_res, float(item['size'])/1073741824, str(round(float(item['bitrate'])/1000, 2)), name) listitem = make_listitem() listitem.setLabel(display_name) down_file_params = { 'mode': 'downloader', 'name': item['name'], 'url': item['url_dl'], 'action': 'cloud.furk_direct', 'image': default_furk_icon } cm.append( (ls(32747), 'RunPlugin(%s)' % build_url(down_file_params))) listitem.addContextMenuItems(cm) listitem.setArt({ 'icon': default_furk_icon, 'poster': default_furk_icon, 'thumb': default_furk_icon, 'fanart': fanart, 'banner': default_furk_icon }) yield (url, listitem, False) except: pass __handle__ = int(argv[1]) t_files = [ i for i in Furk.t_files(params.get('item_id')) if 'video' in i['ct'] and 'bitrate' in i ] kodi_utils.add_items(__handle__, list(_builder())) kodi_utils.set_content(__handle__, 'files') kodi_utils.end_directory(__handle__) kodi_utils.set_view_mode('view.premium')
def furk_tfile_audio(params): __handle__ = int(argv[1]) kodi_utils.clear_property('furk_t_files_json') excludes = ('', 'cover', 'covers', 'scan', 'scans', 'playlists') t_files = Furk.t_files(params.get('item_id')) item_path_list = list( set([ clean_file_name(i['path']) for i in t_files if clean_file_name(i['path']).lower() not in excludes ])) item_path_list.sort() line = '%s[CR]%s[CR]%s' if not item_path_list: if kodi_utils.confirm_dialog(text=32763, ok_label=32652, cancel_label=32764, top_space=True): return browse_audio_album(t_files, params.get('name')) from modules.player import FenPlayer FenPlayer().playAudioAlbum(t_files) return browse_audio_album(t_files, __handle__) def _builder(): for x in item_path_list: try: url_params = { 'mode': 'furk.browse_audio_album', 'item_path': x, 'handle': __handle__ } url = build_url(url_params) listitem = make_listitem() listitem.setLabel(x.upper()) listitem.setArt({ 'icon': default_furk_icon, 'poster': default_furk_icon, 'thumb': default_furk_icon, 'fanart': fanart, 'banner': default_furk_icon }) yield (url, listitem, True) except: pass t_files_json = json.dumps(t_files) kodi_utils.set_property('furk_t_files_json', str(t_files_json)) kodi_utils.add_items(__handle__, list(_builder())) kodi_utils.set_content(__handle__, 'files') kodi_utils.end_directory(__handle__) kodi_utils.set_view_mode('view.premium')
def imdb_build_user_lists(db_type): def _builder(): for item in user_lists: cm = [] cm_append = cm.append url_params = {'mode': mode, 'action': 'imdb_user_list_contents', 'list_id': item['list_id']} imdb_selection_url = {'mode': 'navigator.adjust_main_lists', 'method': 'add_imdb_external', 'name': item['title'], 'imdb_params': json.dumps(url_params)} imdb_folder_selection_url = {'mode': 'navigator.adjust_shortcut_folder_lists', 'method': 'add_imdb_external', 'name': item['title'], 'imdb_params': json.dumps(url_params)} url = build_url(url_params) listitem = make_listitem() listitem.setLabel(item['title']) listitem.setArt({'icon': default_imdb_icon, 'poster': default_imdb_icon, 'thumb': default_imdb_icon, 'fanart': fanart, 'banner': default_imdb_icon}) cm_append((ls(32730),'RunPlugin(%s)' % build_url(imdb_selection_url))) cm_append((ls(32731),'RunPlugin(%s)' % build_url(imdb_folder_selection_url))) listitem.addContextMenuItems(cm) yield (url, listitem, True) __handle__ = int(argv[1]) user_lists = imdb_user_lists(db_type) mode = 'build_%s_list' % db_type kodi_utils.add_items(__handle__, list(_builder())) kodi_utils.set_content(__handle__, 'files') kodi_utils.end_directory(__handle__) kodi_utils.set_view_mode('view.main')
def furk_file_browser(files, params, display_mode, __handle__): def _builder(): for count, item in enumerate(files, 1): try: uncached = True if not 'url_dl' in item else False if uncached: active_downloads = get_active_downloads() mode = 'furk.add_uncached_file' if item['info_hash'] in active_downloads: info = '%02d | [COLOR=green][B]%s[/B][/COLOR] |' % ( count, active_str) else: info = '%02d | [COLOR=red][B]%s[/B][/COLOR] |' % ( count, uncached_str) else: mode = orig_mode name = clean_file_name(item['name']).upper() item_id = item['id'] if not uncached else item['info_hash'] url_dl = item['url_dl'] if not uncached else item['info_hash'] size = item['size'] if not uncached: is_protected = item.get('is_protected') display_size = str(round(float(size) / 1048576000, 1)) info_unprotected = '[B] %s GB | %s %s | [/B]' % ( display_size, item[files_num], files_str) info_protected = '[COLOR=green]%s[/COLOR]' % info_unprotected info_search = '%02d | [B]%s GB[/B] | [B]%s %s[/B] |' % ( count, display_size, item[files_num], files_str) info = info_search if display_mode == 'search' else info_protected if is_protected == '1' else info_unprotected if is_protected == '0' else None display = '%s [I] %s [/I]' % (info, name) url_params = {'mode': mode, 'name': name, 'item_id': item_id} url = build_url(url_params) cm = [] cm_append = cm.append if not uncached: con_download_archive = { 'mode': 'downloader', 'name': item.get('name'), 'url': url_dl, 'action': 'archive', 'image': default_furk_icon } con_remove_files = { 'mode': 'furk.remove_from_files', 'item_id': item_id } con_protect_files = { 'mode': 'furk.myfiles_protect_unprotect', 'action': 'protect', 'name': name, 'item_id': item_id } con_unprotect_files = { 'mode': 'furk.myfiles_protect_unprotect', 'action': 'unprotect', 'name': name, 'item_id': item_id } con_add_to_files = { 'mode': 'furk.add_to_files', 'item_id': item_id } if display_mode == 'search': cm_append( (add_str, 'RunPlugin(%s)' % build_url(con_add_to_files))) cm_append( (down_str, 'RunPlugin(%s)' % build_url(con_download_archive))) cm_append((remove_str, 'RunPlugin(%s)' % build_url(con_remove_files))) if is_protected == '0': cm_append( (prot_str, 'RunPlugin(%s)' % build_url(con_protect_files))) if is_protected == '1': cm_append( (unprot_str, 'RunPlugin(%s)' % build_url(con_unprotect_files))) listitem = make_listitem() listitem.setLabel(display) listitem.addContextMenuItems(cm) listitem.setArt({ 'icon': default_furk_icon, 'poster': default_furk_icon, 'thumb': default_furk_icon, 'fanart': fanart, 'banner': default_furk_icon }) yield (url, listitem, True) except: pass is_video = params.get('list_type') == 'file_get_video' or params.get( 'db_type') == 'video' files_num = 'files_num_video' if is_video else 'files_num_audio' orig_mode = 'furk.furk_tfile_video' if is_video else 'furk.furk_tfile_audio' active_str, uncached_str, files_str, down_str, add_str = ls(32489).upper( ), ls(32765).upper(), ls(32493).upper(), ls(32747), ls(32769) remove_str, prot_str, unprot_str = ls(32766), ls(32767), ls(32768) kodi_utils.add_items(__handle__, list(_builder()))
def ad_torrent_cloud(folder_id=None): def _builder(): for count, item in enumerate(cloud_dict, 1): try: cm = [] cm_append = cm.append folder_name = item['filename'] normalized_folder_name = normalize(folder_name) string = 'FEN_AD_%s' % normalized_folder_name link_folders_add = { 'mode': 'link_folders', 'service': 'AD', 'folder_name': normalized_folder_name, 'action': 'add' } link_folders_remove = { 'mode': 'link_folders', 'service': 'AD', 'folder_name': normalized_folder_name, 'action': 'remove' } current_link = main_cache.get(string) if current_link: ending = '[COLOR=limegreen][B][I]\n %s[/I][/B][/COLOR]' % ( linkedto_str % current_link) else: ending = '' display = '%02d | [B]%s[/B] | [I]%s [/I]%s' % ( count, folder_str, clean_file_name(normalized_folder_name).upper(), ending) url_params = { 'mode': 'alldebrid.browse_ad_cloud', 'folder': json.dumps(item['links']) } url = build_url(url_params) cm_append((addlink_str, 'RunPlugin(%s)' % build_url(link_folders_add))) cm_append((clearlink_str, 'RunPlugin(%s)' % build_url(link_folders_remove))) listitem = make_listitem() listitem.setLabel(display) listitem.addContextMenuItems(cm) listitem.setArt({ 'icon': default_ad_icon, 'poster': default_ad_icon, 'thumb': default_ad_icon, 'fanart': fanart, 'banner': default_ad_icon }) yield (url, listitem, True) except: pass __handle__ = int(argv[1]) folder_str, archive_str, linkedto_str, addlink_str, clearlink_str = ls( 32742).upper(), ls(32982), ls(32744), ls(32745), ls(32746) cloud_dict = AllDebrid.user_cloud()['magnets'] cloud_dict = [i for i in cloud_dict if i['statusCode'] == 4] kodi_utils.add_items(__handle__, list(_builder())) kodi_utils.set_content(__handle__, 'files') kodi_utils.end_directory(__handle__) kodi_utils.set_view_mode('view.premium')
def pm_torrent_cloud(folder_id=None, folder_name=None): def _builder(): for count, item in enumerate(cloud_files, 1): try: cm = [] cm_append = cm.append file_type = item['type'] name = clean_file_name(item['name']).upper() rename_params = { 'mode': 'premiumize.rename', 'file_type': file_type, 'id': item['id'], 'name': item['name'] } delete_params = {'mode': 'premiumize.delete', 'id': item['id']} if file_type == 'folder': is_folder = True download_string = archive_str delete_params['file_type'] = 'folder' string = folder_str display = '%02d | [B]%s[/B] | [I]%s [/I]' % ( count, folder_str, name) url_params = { 'mode': 'premiumize.pm_torrent_cloud', 'id': item['id'], 'folder_name': normalize(item['name']) } else: is_folder = False download_string = down_str delete_params['file_type'] = 'item' string = file_str url_link = item['link'] if url_link.startswith('/'): url_link = 'https' + url_link size = item['size'] display_size = float(int(size)) / 1073741824 display = '%02d | [B]%s[/B] | %.2f GB | [I]%s [/I]' % ( count, file_str, display_size, name) url_params = { 'mode': 'media_play', 'url': url_link, 'media_type': 'video' } down_file_params = { 'mode': 'downloader', 'name': item['name'], 'url': url_link, 'action': 'cloud.premiumize', 'image': default_pm_icon } cm_append((download_string, 'RunPlugin(%s)' % build_url(down_file_params))) cm_append((rename_str % file_type.capitalize(), 'RunPlugin(%s)' % build_url(rename_params))) cm_append(('[B]%s %s[/B]' % (delete_str, string.capitalize()), 'RunPlugin(%s)' % build_url(delete_params))) url = build_url(url_params) listitem = make_listitem() listitem.setLabel(display) listitem.addContextMenuItems(cm) listitem.setArt({ 'icon': default_pm_icon, 'poster': default_pm_icon, 'thumb': default_pm_icon, 'fanart': fanart, 'banner': default_pm_icon }) yield (url, listitem, is_folder) except: pass __handle__ = int(argv[1]) folder_str, file_str, down_str, archive_str, rename_str, delete_str = ls( 32742).upper(), ls(32743).upper(), ls(32747), ls(32982), ls(32748), ls( 32785) extensions = supported_video_extensions() cloud_files = Premiumize.user_cloud(folder_id)['content'] cloud_files = [ i for i in cloud_files if ('link' in i and i['link'].lower().endswith(tuple(extensions))) or i['type'] == 'folder' ] cloud_files.sort(key=lambda k: k['name']) cloud_files.sort(key=lambda k: k['type'], reverse=True) kodi_utils.add_items(__handle__, list(_builder())) kodi_utils.set_content(__handle__, 'files') kodi_utils.end_directory(__handle__) kodi_utils.set_view_mode('view.premium')
def pm_transfers(): def _builder(): for count, item in enumerate(transfer_files, 1): try: cm = [] file_type = 'folder' if item['file_id'] is None else 'file' name = clean_file_name(item['name']).upper() status = item['status'] progress = item['progress'] if status == 'finished': progress = 100 else: try: progress = re.findall(r'\.{0,1}(\d+)', str(progress))[0][:2] except: progress = '' if file_type == 'folder': is_folder = True if status == 'finished' else False display = '%02d | %s%% | [B]%s[/B] | [I]%s [/I]' % ( count, str(progress), folder_str, name) url_params = { 'mode': 'premiumize.pm_torrent_cloud', 'id': item['folder_id'], 'folder_name': normalize(item['name']) } else: is_folder = False details = Premiumize.get_item_details(item['file_id']) url_link = details['link'] if url_link.startswith('/'): url_link = 'https' + url_link size = details['size'] display_size = float(int(size)) / 1073741824 display = '%02d | %s%% | [B]%s[/B] | %.2f GB | [I]%s [/I]' % ( count, str(progress), file_str, display_size, name) url_params = { 'mode': 'media_play', 'url': url_link, 'media_type': 'video' } down_file_params = { 'mode': 'downloader', 'name': item['name'], 'url': url_link, 'db_type': 'cloud.premiumize', 'image': default_pm_icon } cm.append((down_str, 'RunPlugin(%s)' % build_url(down_file_params))) url = build_url(url_params) listitem = make_listitem() listitem.setLabel(display) listitem.addContextMenuItems(cm) listitem.setArt({ 'icon': default_pm_icon, 'poster': default_pm_icon, 'thumb': default_pm_icon, 'fanart': fanart, 'banner': default_pm_icon }) yield (url, listitem, is_folder) except: pass __handle__ = int(argv[1]) extensions = supported_video_extensions() transfer_files = Premiumize.transfers_list()['transfers'] folder_str, file_str, down_str = ls(32742).upper(), ls(32743).upper(), ls( 32747) kodi_utils.add_items(__handle__, list(_builder())) kodi_utils.set_content(__handle__, 'files') kodi_utils.end_directory(__handle__) kodi_utils.set_view_mode('view.premium')