Exemplo n.º 1
0
 def add_dir(self, url_params, list_name='Next Page >>', info='Navigate to Next Page...', iconImage='item_next.png'):
     icon = os.path.join(settings.get_theme(), iconImage)
     url = build_url(url_params)
     listitem = xbmcgui.ListItem(list_name)
     listitem.setArt({'icon': icon, 'fanart': __addon__.getAddonInfo('fanart')})
     listitem.setInfo('video', {'title': list_name, 'plot': info})
     if url_params['mode'] == 'build_navigate_to_page': listitem.addContextMenuItems([("[B]Switch Jump To Action[/B]","XBMC.RunPlugin(%s)" % build_url({'mode': 'toggle_jump_to'}))])
     xbmcplugin.addDirectoryItem(handle=__handle__, url=url, listitem=listitem, isFolder=True)
Exemplo n.º 2
0
 def playAudioAlbum(self, t_files=None, name=None, from_seperate=False):
     import os
     import xbmcaddon
     from modules.utils import clean_file_name, batch_replace, to_utf8
     from modules.nav_utils import setView
     icon_directory = settings.get_theme()
     default_furk_icon = os.path.join(icon_directory, 'furk.png')
     formats = ('.3gp', ''), ('.aac', ''), ('.flac', ''), ('.m4a', ''), ('.mp3', ''), \
     ('.ogg', ''), ('.raw', ''), ('.wav', ''), ('.wma', ''), ('.webm', ''), ('.ra', ''), ('.rm', '')
     params = dict(parse_qsl(sys.argv[2].replace('?', '')))
     furk_files_list = []
     playlist = xbmc.PlayList(xbmc.PLAYLIST_MUSIC)
     playlist.clear()
     if from_seperate:
         t_files = [
             i for i in t_files
             if clean_file_name(i['path']) == params.get('item_path')
         ]
     for item in t_files:
         try:
             name = item['path'] if not name else name
             if not 'audio' in item['ct']: continue
             url = item['url_dl']
             track_name = clean_file_name(
                 batch_replace(to_utf8(item['name']), formats))
             listitem = xbmcgui.ListItem(track_name)
             listitem.setThumbnailImage(default_furk_icon)
             listitem.setInfo(type='music',
                              infoLabels={
                                  'title':
                                  track_name,
                                  'size':
                                  int(item['size']),
                                  'album':
                                  clean_file_name(
                                      batch_replace(to_utf8(name),
                                                    formats)),
                                  'duration':
                                  item['length']
                              })
             listitem.setProperty('mimetype', 'audio/mpeg')
             playlist.add(url, listitem)
             if from_seperate:
                 furk_files_list.append((url, listitem, False))
         except:
             pass
     self.play(playlist)
     if from_seperate:
         xbmcplugin.addDirectoryItems(__handle__, furk_files_list,
                                      len(furk_files_list))
         setView('view.furk_files')
         xbmcplugin.endOfDirectory(__handle__)
Exemplo n.º 3
0
 def multiselect_genres(self, genre_list):
     import os
     genre_list = json.loads(genre_list)
     choice_list = []
     icon_directory = settings.get_theme()
     for genre, value in sorted(genre_list.items()):
         listitem = xbmcgui.ListItem(genre)
         listitem.setArt({'icon': os.path.join(icon_directory, value[1])})
         listitem.setProperty('genre_id', value[0])
         choice_list.append(listitem)
     chosen_genres = dialog.multiselect("Select Genres to Include in Search", choice_list, useDetails=True)
     if not chosen_genres: return
     genre_ids = [choice_list[i].getProperty('genre_id') for i in chosen_genres]
     return ','.join(genre_ids)
Exemplo n.º 4
0
def add_dir(url_params,
            list_name,
            iconImage='DefaultFolder.png',
            fanartImage=__addon__.getAddonInfo('fanart'),
            isFolder=True):
    import xbmcgui, xbmcplugin
    from modules.settings import get_theme
    icon = os.path.join(get_theme(), iconImage)
    url = build_url(url_params)
    listitem = xbmcgui.ListItem(list_name)
    listitem.setArt({
        'icon': icon,
        'poster': icon,
        'thumb': icon,
        'fanart': fanartImage,
        'banner': icon
    })
    xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),
                                url=url,
                                listitem=listitem,
                                isFolder=isFolder)
Exemplo n.º 5
0
import json
try:
    from urlparse import parse_qsl
except ImportError:
    from urllib.parse import parse_qsl
from apis.alldebrid_api import AllDebridAPI
from modules.settings import get_theme
from modules.nav_utils import build_url, setView
from modules.utils import clean_file_name, normalize, supported_video_extensions
# from modules.utils import logger

__addon_id__ = 'plugin.video.fen'
__addon__ = xbmcaddon.Addon(id=__addon_id__)
__handle__ = int(sys.argv[1])
addon_dir = xbmc.translatePath(__addon__.getAddonInfo('path'))
icon_directory = get_theme()
default_ad_icon = os.path.join(icon_directory, 'alldebrid.png')
fanart = os.path.join(addon_dir, 'fanart.png')
dialog = xbmcgui.Dialog()

AllDebrid = AllDebridAPI()


def ad_torrent_cloud(folder_id=None):
    cloud_files = []
    cloud_dict = AllDebrid.user_cloud()
    try:
        for k, v in cloud_dict.iteritems():
            if isinstance(v, dict):
                cloud_files.append(v)
    except:
Exemplo n.º 6
0
import xbmc, xbmcaddon, xbmcplugin, xbmcgui
import sys, os, json
import urllib
try: from urlparse import parse_qsl
except ImportError: from urllib.parse import parse_qsl
from modules.nav_utils import build_url, setView
from apis.furk_api import FurkAPI
from modules.utils import clean_file_name, to_utf8
from modules import settings
# from modules.utils import logger

__addon_id__ = 'plugin.video.fen'
__addon__ = xbmcaddon.Addon(id=__addon_id__)
__handle__ = int(sys.argv[1])
addon_dir = xbmc.translatePath(__addon__.getAddonInfo('path'))
icon_directory = settings.get_theme()
dialog = xbmcgui.Dialog()
window = xbmcgui.Window(10000)
default_furk_icon = os.path.join(icon_directory, 'furk.png')
fanart = os.path.join(addon_dir, 'fanart.png')

Furk = FurkAPI()

def my_furk_files():
    try:
        params = dict(parse_qsl(sys.argv[2].replace('?','')))
        files = eval('Furk.%s()' % params.get('list_type'))
        if params.get('list_type') in ('file_get_active', 'file_get_failed'):
            torrent_status_browser(files) 
        else: furk_file_browser(files, params, display_mode='file_browse')
    except: pass
Exemplo n.º 7
0
def build_navigate_to_page():
    import xbmcgui
    import json
    import ast
    try:
        from urlparse import parse_qsl
    except ImportError:
        from urllib.parse import parse_qsl
    from modules.settings import get_theme, nav_jump_use_alphabet
    use_alphabet = nav_jump_use_alphabet()
    params = dict(parse_qsl(sys.argv[2].replace('?', '')))
    if use_alphabet:
        start_list = [chr(i) for i in range(97, 123)]
        choice_list = [
            xbmcgui.ListItem(i.upper(),
                             "[I]Jump to %s Starting with '%s'[/I]" %
                             (params.get('db_type'), i.upper()),
                             iconImage=os.path.join(get_theme(),
                                                    'item_jump.png'))
            for i in start_list
        ]
    else:
        start_list = [
            str(i) for i in range(1,
                                  int(params.get('total_pages')) + 1)
        ]
        start_list.remove(params.get('current_page'))
        choice_list = [
            xbmcgui.ListItem('Page %s' % i,
                             '[I]Jump to Page %s[/I]' % i,
                             iconImage=os.path.join(get_theme(),
                                                    'item_jump.png'))
            for i in start_list
        ]
    chosen_start = xbmcgui.Dialog().select('Fen', choice_list, useDetails=True)
    xbmc.sleep(500)
    if chosen_start < 0: return
    new_start = start_list[chosen_start]
    if use_alphabet:
        new_page = ''
        new_letter = new_start
    else:
        new_page = new_start
        new_letter = None
    final_params = {
        'mode': params.get('transfer_mode', ''),
        'action': params.get('transfer_action', ''),
        'new_page': new_page,
        'new_letter': new_letter,
        'media_type': params.get('media_type', ''),
        'query': params.get('query', ''),
        'actor_id': params.get('actor_id', ''),
        'user': params.get('user', ''),
        'slug': params.get('slug', ''),
        'final_params': params.get('final_params', ''),
        'refreshed': 'true'
    }
    url_params = {
        'mode': 'container_update',
        'final_params': json.dumps(final_params)
    }
    xbmc.executebuiltin('XBMC.RunPlugin(%s)' % build_url(url_params))
Exemplo n.º 8
0
 def fetch_list(self):
     try:
         params = dict(parse_qsl(sys.argv[2].replace('?','')))
         worker = True
         mode = params.get('mode')
         cache_page = settings.cache_page()
         try: page_no = int(params.get('new_page', '1'))
         except ValueError: page_no = params.get('new_page')
         if cache_page:
             if self.action == 'tmdb_tv_discover':
                 self.cache_page_string = params['name']
             if not 'new_page' in params:
                 silent = True if is_widget else False
                 retrieved_page = cached_page(self.cache_page_string, silent=silent)
                 if retrieved_page: page_no = retrieved_page
         letter = params.get('new_letter', 'None')
         content_type = 'tvshows'
         var_module = 'tmdb_api' if 'tmdb' in self.action else 'trakt_api' if 'trakt' in self.action else 'imdb_api' if 'imdb' in self.action else None
         if var_module:
             try:
                 module = 'apis.%s' % (var_module)
                 function = getattr(importlib.import_module(module), self.action)
             except: pass
         if self.action in ('tmdb_tv_popular','tmdb_tv_top_rated', 'tmdb_tv_premieres','tmdb_tv_upcoming',
             'tmdb_tv_airing_today','tmdb_tv_on_the_air','trakt_tv_anticipated','trakt_tv_trending'):
             data = function(page_no)
             if 'tmdb' in self.action:
                 for item in data['results']: self.list.append(item['id'])
             else:
                 for item in data: self.list.append(get_trakt_tvshow_id(item['show']['ids']))
             self.new_page = {'mode': mode, 'action': self.action, 'new_page': str((data['page'] if 'tmdb' in self.action else page_no) + 1), 'foldername': self.action}
         elif self.action == 'tmdb_tv_discover':
             from modules.discover import set_history
             name = params['name']
             query = params['query']
             if page_no == 1: set_history('tvshow', name, query)
             data = function(query, page_no)
             for item in data['results']: self.list.append(item['id'])
             if data['page'] < data['total_pages']: self.new_page = {'mode': mode, 'action': self.action, 'query': query, 'name': name, 'new_page': str(data['page'] + 1), 'foldername': self.action}
         elif self.action in ('trakt_collection', 'trakt_watchlist', 'trakt_collection_widgets'):
             data, total_pages = function('shows', page_no, letter)
             self.list = [i['media_id'] for i in data]
             if total_pages > 2: self.total_pages = total_pages
             if total_pages > page_no: self.new_page = {'mode': mode, 'action': self.action, 'new_page': str(page_no + 1), 'new_letter': letter, 'foldername': self.action}
         elif self.action == ('trakt_tv_mosts'):
             for item in function(params['period'], params['duration'], page_no): self.list.append((get_trakt_tvshow_id(item['show']['ids'])))
             self.new_page = {'mode': mode, 'action': self.action, 'period': params['period'], 'duration': params['duration'], 'new_page': str(page_no + 1), 'foldername': self.action}
         elif self.action == 'tmdb_tv_genres':
             genre_id = params['genre_id'] if 'genre_id' in params else self.multiselect_genres(params.get('genre_list'))
             if not genre_id: return
             data = function(genre_id, page_no)
             self.list = [i['id'] for i in data['results']]
             if data['page'] < data['total_pages']: self.new_page = {'mode': mode, 'action': self.action, 'new_page': str(data['page'] + 1), 'genre_id': genre_id, 'foldername': genre_id}
         elif self.action == 'tmdb_tv_languages':
             language = params['language']
             if not language: return
             data = function(language, page_no)
             self.list = [i['id'] for i in data['results']]
             if data['page'] < data['total_pages']: self.new_page = {'mode': mode, 'action': self.action, 'new_page': str(data['page'] + 1), 'language': language, 'foldername': language}
         elif self.action == 'tmdb_tv_networks':
             data = function(params['network_id'], page_no)
             self.list = [i['id'] for i in data['results']]
             if data['page'] < data['total_pages']: self.new_page = {'mode': mode, 'action': self.action, 'new_page': str(data['page'] + 1), 'network_id': params['network_id'], 'foldername': params['network_id']}
         elif self.action == 'trakt_tv_certifications':
             for item in function(params['certification'], page_no): self.list.append((get_trakt_tvshow_id(item['show']['ids'])))
             self.new_page = {'mode': mode, 'action': self.action, 'new_page': str(page_no + 1), 'foldername': params['certification'], 'certification': params['certification']}
         elif self.action == 'tmdb_tv_year':
             data = function(params['year'], page_no)
             self.list = [i['id'] for i in data['results']]
             if data['page'] < data['total_pages']: self.new_page = {'mode': mode, 'action': self.action, 'new_page': str(page_no + 1), 'year': params['year'], 'foldername': params['year']}
         elif self.action in ('in_progress_tvshows', 'favourites_tvshows', 'subscriptions_tvshows', 'kodi_library_tvshows', 'watched_tvshows'):
             (var_module, import_function) = ('in_progress', 'in_progress_tvshow') if 'in_progress' in self.action else ('favourites', 'retrieve_favourites') if 'favourites' in self.action else ('subscriptions', 'retrieve_subscriptions') if 'subscriptions' in self.action else ('indicators_bookmarks', 'get_watched_items') if 'watched' in self.action else ('kodi_library', 'retrieve_kodi_library') if 'library' in self.action else ''
             try:
                 module = 'modules.%s' % (var_module)
                 function = getattr(importlib.import_module(module), import_function)
             except: pass
             if self.action == 'kodi_library_tvshows': self.id_type = 'tvdb_id'
             data, total_pages = function('tvshow', page_no, letter)
             self.list = [i['media_id'] for i in data]
             if total_pages > 2: self.total_pages = total_pages
             if total_pages > page_no: self.new_page = {'mode': mode, 'action': self.action, 'new_page': str(page_no + 1), 'new_letter': letter, 'foldername': self.action}
         elif self.action in ('tmdb_tv_similar', 'tmdb_tv_recommendations'):
             self.sim_recom_name = params['sim_recom_name']
             self.sim_recom_tmdb = params['sim_recom_tmdb']
             data = function(self.sim_recom_tmdb, page_no)
             self.list = [i['id'] for i in data['results']]
             if data['page'] < data['total_pages']: self.new_page = {'mode': mode, 'action': self.action, 'new_page': str(data['page'] + 1), 'sim_recom_name': self.sim_recom_name, 'sim_recom_tmdb': self.sim_recom_tmdb, 'foldername': self.action}
         elif self.action == 'trakt_recommendations':
             for item in function('shows'): self.list.append(get_trakt_tvshow_id(item['ids']))
         elif self.action == 'tmdb_popular_people':
             import os
             worker = False
             icon_directory = settings.get_theme()
             data = function(page_no)
             content_type = 'addons'
             fanart = __addon__.getAddonInfo('fanart')
             for item in data['results']:
                 cm = []
                 actor_poster = "http://image.tmdb.org/t/p/original%s" % item['profile_path'] if item['profile_path'] else os.path.join(icon_directory, 'genre_family.png')
                 url_params = {'mode': 'people_search.main', 'actor_id': item['id'], 'actor_name': item['name'], 'actor_image': actor_poster.replace('w185', 'h632')}
                 cm.append(("[B]Extended Info[/B]", 'RunScript(script.extendedinfo,info=extendedactorinfo,id=%s)' % item['id']))
                 url = build_url(url_params)
                 listitem = xbmcgui.ListItem(item['name'])
                 listitem.setArt({'icon': actor_poster, 'poster': actor_poster, 'thumb': actor_poster, 'fanart': fanart, 'banner': actor_poster})
                 listitem.addContextMenuItems(cm)
                 xbmcplugin.addDirectoryItem(__handle__, url, listitem, isFolder=True)
             if data['page'] < data['total_pages']: self.new_page = {'mode': mode, 'action': self.action, 'new_page': str(int(data['page']) + 1), 'foldername': self.action}
         elif self.action == 'tmdb_tv_search':
             try: from urllib import unquote
             except ImportError: from urllib.parse import unquote
             if params.get('query') == 'NA':
                 search_title = dialog.input("Search Fen", type=xbmcgui.INPUT_ALPHANUM)
                 search_name = unquote(search_title)
             else: search_name = unquote(params.get('query'))
             if not search_name: return
             params['search_name'] = search_name
             data = function(search_name, page_no)
             total_pages = data['total_pages']
             if total_pages > page_no: self.new_page = {'mode': mode, 'action': self.action, 'new_page': str(page_no + 1), 'query': search_name, 'foldername': search_name}
             self.list = [i['id'] for i in data['results']]
         if self.total_pages and not is_widget:
             url_params = {'mode': 'build_navigate_to_page', 'db_type': 'TV Shows', 'current_page': page_no, 'total_pages': self.total_pages, 'transfer_mode': mode, 'transfer_action': self.action, 'foldername': self.action, 'query': params.get('search_name', ''), 'actor_id': params.get('actor_id', '')}
             self.add_dir(url_params, 'Jump To...', 'Jump To a Certain Page/Letter...', 'item_jump.png')
         if cache_page: cached_page(self.cache_page_string, page_no=page_no)
         if worker: self.worker()
         if self.new_page: self.add_dir(self.new_page)
     except: pass
     xbmcplugin.setContent(__handle__, content_type)
     xbmcplugin.endOfDirectory(__handle__)
     if params.get('refreshed') == 'true': xbmc.sleep(1500)
     setView('view.tvshows', content_type)
Exemplo n.º 9
0
def search_history():
    import xbmc, xbmcgui, xbmcplugin
    import sys, os
    try:
        from urlparse import parse_qsl
    except ImportError:
        from urllib.parse import parse_qsl
    try:
        from urllib import unquote
    except ImportError:
        from urllib.parse import unquote
    from modules.nav_utils import build_url, setView
    from modules.settings import get_theme
    try:
        params = dict(parse_qsl(sys.argv[2].replace('?', '')))
        (search_setting, display_title) = ('movie_queries', 'MOVIE') if params['action'] == 'movie' \
                                     else ('tvshow_queries', 'TVSHOW') if params['action'] == 'tvshow' \
                                     else ('people_queries', 'PEOPLE') if params['action'] == 'people' \
                                     else ('furk_video_queries', 'FURK VIDEO') if params['action'] == 'furk_video' \
                                     else ('furk_audio_queries', 'FURK AUDIO') if params['action'] == 'furk_audio' \
                                     else ('easynews_video_queries', 'EASYNEWS VIDEO') if params['action'] == 'easynews_video' \
                                     else ''
        history = _cache.get(search_setting)
        if not history: return
    except:
        return
    icon = os.path.join(get_theme(), 'search.png')
    fanart = os.path.join(xbmc.translatePath(__addon__.getAddonInfo('path')),
                          'fanart.png')
    for h in history:
        try:
            cm = []
            name = unquote(h)
            url_params = {'mode': 'build_movie_list', 'action': 'tmdb_movies_search', 'query': name} if params['action'] == 'movie' \
                    else {'mode': 'build_tvshow_list', 'action': 'tmdb_tv_search', 'query': name} if params['action'] == 'tvshow' \
                    else {'mode': 'people_search.search', 'actor_name': name} if params['action'] == 'people' \
                    else {'mode': 'furk.search_furk', 'db_type': 'video', 'query': name} if params['action'] == 'furk_video' \
                    else {'mode': 'furk.search_furk', 'db_type': 'audio', 'music': True, 'query': name} if params['action'] == 'furk_audio' \
                    else {'mode': 'easynews.search_easynews', 'query': name} if params['action'] == 'easynews_video' \
                    else ''
            display = '[B]%s SEARCH : [/B]' % display_title + name
            url = build_url(url_params)
            cm.append(("[B]Remove from history[/B]",'XBMC.RunPlugin(%s?mode=%s&setting_id=%s&name=%s)' \
                % (sys.argv[0], 'remove_from_history', search_setting, name)))
            listitem = xbmcgui.ListItem(display)
            listitem.setArt({
                'icon': icon,
                'poster': icon,
                'thumb': icon,
                'fanart': fanart,
                'banner': icon
            })
            listitem.addContextMenuItems(cm)
            xbmcplugin.addDirectoryItem(int(sys.argv[1]),
                                        url,
                                        listitem,
                                        isFolder=True)
        except:
            pass
    xbmcplugin.setContent(int(sys.argv[1]), 'addons')
    xbmcplugin.endOfDirectory(int(sys.argv[1]))
    setView('view.main')