Esempio n. 1
0
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)
Esempio n. 2
0
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
Esempio n. 3
0
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)) 
Esempio n. 4
0
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()
Esempio n. 5
0
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
Esempio n. 6
0
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)
Esempio n. 7
0
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)
Esempio n. 8
0
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)')
Esempio n. 9
0
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
Esempio n. 10
0
    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()