def movie_dialog(data, imdb_id=None, strm=False): dialog = xbmcgui.Dialog() open_playlists = dialog.yesno("Seach alternatives", "What search routine should be done?", "Regular search: Slow, but finds all results.", "Fast search: Fast but finds less files.", "Fast search", "Regular search") files = search(data, limit='25') pDialog = xbmcgui.DialogProgress() pDialog.create('Searching for files') tracks = [] count = 0 for f in files: count = count + 1 percent = int(float(count * 100) / len(files)) text = "%s files found" % len(tracks) pDialog.update(percent, text) if f.type == "video": new_tracks = get_playlist_tracks(f, open_playlists=open_playlists) tracks.extend(new_tracks) (url, name) = track_dialog(tracks) if not url or not name: if strm: set_resolved_to_dummy() return li = xbmcgui.ListItem(clean_file_name(data)) li = set_movie_meta(li, imdb_id, META_PATH) execute_video(name, url, li, strm)
def tv_shows_episodes_menu(name, imdb_id): items = [] info = TheTVDBInfo(imdb_id) episodes = info.episodes() name = name.split('(')[0][:-1] for episode in episodes: first_aired = episode.FirstAired() if len(first_aired) > 0: d = first_aired.split('-') episode_date = date(int(d[0]), int(d[1]), int(d[2])) if date.today() > episode_date: season_number = int(episode.SeasonNumber()) if season_number > 0: episode_number = int(episode.EpisodeNumber()) episode_name = episode.EpisodeName() cleaned_name = clean_file_name(episode_name, use_blanks=False) display = "(S%.2dE%.2d) %s" % (season_number, episode_number, cleaned_name) data = "%s<|>%s<|>%d<|>%d" % (name, episode_name, season_number, episode_number) (url, li, isFolder) = create_item_tuple(display, 'episode dialog', data=data, imdb_id=imdb_id) li = set_tv_show_meta(li, imdb_id, META_PATH) li.setInfo('video', {'title': display}) items.append((url, li, isFolder)) #items.append((url, li, False)) return items
def remove_strm_file(name, dir_path): try: filename = "%s.strm" % (clean_file_name(name, use_blanks=False)) path = os.path.join(dir_path, filename) os.remove(path) except: xbmc.log("[What the Furk] Was unable to remove movie: %s" % (name))
def create_strm_file(name, data, imdb_id, mode, dir_path): strm_string = create_url(name, mode, data, imdb_id) filename = clean_file_name("%s.strm" % name) path = os.path.join(dir_path, filename) stream_file = open(path, 'w') stream_file.write(strm_string) stream_file.close()
def create_list_item(name, mode, isSubscribable=False, isMovieItem=False, isTVShowItem=False, imdb_id=''): contextMenuItems = [] prefix = " " if isMovieItem: contextMenuItems.append(('Movie Information', 'XBMC.Action(Info)')) if isTVShowItem: contextMenuItems.append(('TV Show information', 'XBMC.Action(Info)')) if LIBRARY_MODE: if isMovieItem: c_name = clean_file_name(name) if exist_in_dir(c_name, MOVIES_PATH, isMovie=True): if UNICODE_INDICATORS: prefix = u'\u2605' else: prefix = "(A)" if isTVShowItem: c_name = clean_file_name(name.split('(')[0][:-1]) if exist_in_dir(c_name, TV_SHOWS_PATH): if UNICODE_INDICATORS: prefix = u'\u2605' else: prefix = "(A)" if isTVShowItem: sub_data = imdb_id sub_path = TV_SHOWS_PATH else: sub_data = mode sub_path = MOVIES_PATH if isSubscribable: if subscription_index(name, sub_data) < 0: subscribe_url = sys.argv[0] + '?name=%s&data=%s&mode=subscribe' % (urllib.quote(name), sub_data) contextMenuItems.append(('Subscribe', 'XBMC.RunPlugin(%s)' % subscribe_url)) else: if UNICODE_INDICATORS: prefix = u'\u2665' else: prefix = "(S)" unsubscribe_url = sys.argv[0] + '?name=%s&data=%s&mode=unsubscribe' % (urllib.quote(name), sub_data) contextMenuItems.append(('Unsubscribe', 'XBMC.RunPlugin(%s)' % unsubscribe_url)) li = xbmcgui.ListItem(prefix + clean_file_name(name, use_blanks=False)) li.addContextMenuItems(contextMenuItems) return li
def episode_dialog(data, imdb_id=None, strm=False): dialog = xbmcgui.Dialog() open_playlists = dialog.yesno("Seach alternatives", "What search routine should be done?", "Regular search: Slow, but finds all results.", "Fast search: Fast but finds less files.", "Fast search", "Regular search") data = data.split('<|>') tv_show_name = data[0] episode_name = data[1] season_number = int(data[2]) episode_number = int(data[3]) season_episode = "s%.2de%.2d" % (season_number, episode_number) season_episode2 = "%d%.2d" % (season_number, episode_number) tv_show_season = "%s season" % (tv_show_name) tv_show_episode = "%s %s" % (tv_show_name, season_episode) track_filter = [episode_name, season_episode, season_episode2] files = [] files.extend(search(tv_show_episode, limit='25')) if open_playlists: files.extend(search(tv_show_season, limit='10')) files.extend(search(tv_show_name, limit='10')) files = remove_list_duplicates(files) pDialog = xbmcgui.DialogProgress() pDialog.create('Searching for files') tracks = [] count = 0 for f in files: count = count + 1 percent = int(float(count * 100) / len(files)) text = "%s files found" % len(tracks) pDialog.update(percent, text) if pDialog.iscanceled(): pDialog.close() if strm: set_resolved_to_dummy() return if f.av_result == "ok" and f.type == "video": new_tracks = filter_playlist_tracks(get_playlist_tracks(f, open_playlists=open_playlists), track_filter) tracks.extend(new_tracks) pDialog.close() (url, name) = track_dialog(tracks) if not url or not name: if strm: set_resolved_to_dummy() return li = xbmcgui.ListItem(clean_file_name(episode_name)) li = set_tv_show_meta(li, imdb_id, META_PATH) execute_video(name, url, li, strm)
def create_strm_file(name, data, imdb_id, mode, dir_path): try: strm_string = create_url(name, mode, data=data, imdb_id=imdb_id) filename = clean_file_name("%s.strm" % name) path = os.path.join(dir_path, filename) stream_file = open(path, 'w') stream_file.write(strm_string) stream_file.close() except: xbmc.log("[What the Furk] Error while creating strm file for : " + name)
def get_subscriptions(name,url): content = read_from_file(SUB_IMDB_FILE) lines = content.split('\n') for line in lines: data = line.split('<>') if len(data) == 2: tv_show_name = clean_file_name(data[0]) tv_show_imdb = data[1] tv_show_mode = "3" create_tv_show_strm_files(tv_show_name, tv_show_imdb, tv_show_mode, TV_SHOWS_PATH) xbmc.executebuiltin('UpdateLibrary(video)')
def search(query, limit=25): query = clean_file_name(query) query = query.replace('\'', ' ') if not login_at_furk(): return [] files = [] if type(query).__name__ == 'list': for q in query: search_result = FURK.search(q, filter=FURK_FILTER, limit=limit) if search_result.query_changed == None: files.extend(search_result.files) else: search_result = FURK.search(query, filter=FURK_FILTER, limit=limit) if search_result.query_changed == None: files = search_result.files return files
execute_video(name, imdb_id) elif mode == "manual search": manual_search(data) xbmc.executebuiltin("Container.Refresh") elif mode == "subscribe": subscribe(name, data) xbmc.executebuiltin("Container.Refresh") elif mode == "unsubscribe": if name.find('[') >= 0: name = name.split('[')[0][:-1] unsubscribe(name, data) xbmc.executebuiltin("Container.Refresh") elif mode == "get subscriptions": get_subscriptions() elif mode == "toggle movie strm": name = clean_file_name(name) if exist_in_dir(name, MOVIES_PATH, isMovie=True): remove_strm_file(data, MOVIES_PATH) #clean_library() else: create_strm_file(name, data, imdb_id, "strm movie dialog", MOVIES_PATH) scan_library() xbmc.executebuiltin("Container.Refresh") elif mode == "toggle tv show strms": data = clean_file_name(data.split('(')[0][:-1]) if exist_in_dir(data, TV_SHOWS_PATH): remove_tv_show_strm_files(data, TV_SHOWS_PATH) #clean_library() else: create_tv_show_strm_files(data, imdb_id, "strm tv show dialog", TV_SHOWS_PATH) scan_library()