コード例 #1
0
def build_navigate_to_page():
    import xbmcgui
    import json
    import ast
    from urlparse import parse_qsl
    from resources.lib.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,
        'passed_list': params.get('passed_list', ''),
        'query': params.get('query', ''),
        'actor_id': params.get('actor_id', '')
    }
    url_params = {
        'mode': 'container_update',
        'final_params': json.dumps(final_params)
    }
    xbmc.executebuiltin('XBMC.RunPlugin(%s)' % build_url(url_params))
コード例 #2
0
def search_history():
    import xbmc, xbmcgui, xbmcplugin
    import sys, os
    from urlparse import parse_qsl
    import urllib
    from resources.lib.modules.nav_utils import build_url, setView
    from resources.lib.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 ('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
    for h in history:
        try:
            cm = []
            name = urllib.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': '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,
                                        iconImage=os.path.join(
                                            get_theme(), 'search.png'))
            listitem.setArt({
                'fanart':
                os.path.join(
                    xbmc.translatePath(__addon__.getAddonInfo('path')),
                    'fanart.png')
            })
            listitem.setInfo(type='video', infoLabels={'Title': name})
            listitem.addContextMenuItems(cm)
            xbmcplugin.addDirectoryItem(int(sys.argv[1]),
                                        url,
                                        listitem,
                                        isFolder=True)
        except:
            pass
    xbmcplugin.setContent(int(sys.argv[1]), 'files')
    xbmcplugin.endOfDirectory(int(sys.argv[1]))
    setView('view.main')
コード例 #3
0
def add_dir(url_params,
            list_name,
            iconImage='DefaultFolder.png',
            fanartImage=None,
            isFolder=True):
    import xbmcgui, xbmcplugin
    from resources.lib.modules.settings import get_theme
    icon = os.path.join(get_theme(), iconImage)
    fanArt = fanart if fanartImage == None else fanartImage
    info = url_params.get('info', '')
    url = build_url(url_params)
    listitem = xbmcgui.ListItem(list_name, iconImage=icon)
    listitem.setArt({'fanart': fanArt})
    listitem.setInfo('video', {'title': list_name, 'plot': info})
    xbmcplugin.addDirectoryItem(handle=__handle__,
                                url=url,
                                listitem=listitem,
                                isFolder=isFolder)
コード例 #4
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, iconImage=icon)
     listitem.setArt({'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)
コード例 #5
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,
                                     '',
                                     iconImage=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)
コード例 #6
0
 def fetch_list(self):
     try:
         params = dict(parse_qsl(sys.argv[2].replace('?', '')))
         worker = True
         mode = params.get('mode')
         page_no = int(params.get('new_page', 1))
         letter = params.get('new_letter', 'None')
         search_name = ''
         content_type = 'movies'
         var_module = 'tmdb' if 'tmdb' in self.action else 'trakt' if 'trakt' in self.action else 'imdb' if 'imdb' in self.action else ''
         try:
             exec('from resources.lib.modules.%s import %s as function' %
                  (var_module, self.action))
         except:
             pass
         if self.action in ('tmdb_movies_popular',
                            'tmdb_movies_blockbusters',
                            'tmdb_movies_in_theaters',
                            'tmdb_movies_top_rated', 'tmdb_movies_upcoming',
                            'tmdb_movies_latest_releases',
                            'tmdb_movies_premieres',
                            'trakt_movies_trending',
                            'trakt_movies_anticipated',
                            'trakt_movies_top10_boxoffice'):
             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_movie_id(item))
             if self.action not in ('trakt_movies_top10_boxoffice'):
                 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 in ('trakt_collection', 'trakt_watchlist'):
             data, passed_list, total_pages, limit = function(
                 'movies', page_no, letter, params.get('passed_list', ''))
             self.list = [i['media_id'] for i in data]
             if total_pages > 1: self.total_pages = total_pages
             if len(data) == limit:
                 self.new_page = {
                     'mode': mode,
                     'action': self.action,
                     'new_page': str(page_no + 1),
                     'new_letter': letter,
                     'passed_list': passed_list,
                     'foldername': self.action
                 }
         elif self.action == 'imdb_movies_oscar_winners':
             self.id_type = 'imdb_id'
             self.list = function(page_no)
             self.new_page = {
                 'mode': mode,
                 'action': self.action,
                 'new_page': str(page_no + 1),
                 'foldername': self.action
             }
         elif self.action == ('trakt_movies_mosts'):
             for item in (function(params['period'], params['duration'],
                                   page_no)):
                 self.list.append(get_trakt_movie_id(item))
             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_movies_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_movies_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_movies_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(data['page'] + 1),
                     'year': params.get('year'),
                     'foldername': params.get('year')
                 }
         elif self.action == 'tmdb_movies_certifications':
             data = function(params['certification'], 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),
                     'certification': params.get('certification'),
                     'foldername': params.get('certification')
                 }
         elif self.action in ('favourites_movies', 'subscriptions_movies',
                              'kodi_library_movies', 'watched_movies'):
             (var_module, import_function) = (
                 '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:
                 exec(
                     'from resources.lib.modules.%s import %s as function' %
                     (var_module, import_function))
             except:
                 return
             if self.action == 'kodi_library_movies':
                 self.id_type = 'imdb_id'
             data, passed_list, total_pages, limit = function(
                 'movie', page_no, letter, params.get('passed_list', ''))
             self.list = [i['media_id'] for i in data]
             if total_pages > 1: self.total_pages = total_pages
             if len(data) == limit:
                 self.new_page = {
                     'mode': mode,
                     'action': self.action,
                     'new_page': str(page_no + 1),
                     'new_letter': letter,
                     'passed_list': passed_list,
                     'foldername': self.action
                 }
         elif self.action == 'in_progress_movies':
             from resources.lib.modules.in_progress import in_progress_movie as function
             self.list = function('movie')
             xbmcplugin.addSortMethod(
                 __handle__, xbmcplugin.SORT_METHOD_LABEL_IGNORE_THE)
         elif self.action == 'tmdb_movies_similar':
             data = function(params['tmdb_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),
                     'foldername': self.action,
                     'tmdb_id': params.get('tmdb_id')
                 }
         elif self.action == 'trakt_movies_related':
             for item in function(params['imdb_id'], page_no):
                 self.list.append(get_trakt_movie_id(item))
             self.new_page = {
                 'mode':
                 mode,
                 'action':
                 self.action,
                 'new_page':
                 str(
                     int((params.get('new_page') if 'new_page' in
                          params else 1)) + 1),
                 'foldername':
                 self.action,
                 'imdb_id':
                 params.get('imdb_id')
             }
         elif self.action == 'trakt_recommendations':
             for item in function('movies'):
                 self.list.append(item['ids']['tmdb'])
         elif self.action == 'tmdb_popular_people':
             import os
             worker = False
             icon_directory = settings.get_theme()
             data = function(page_no)
             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, 'app_logo.png')
                 url_params = {
                     'mode': 'build_movie_list',
                     'action': 'tmdb_movies_actor_roles',
                     'actor_id': item['id']
                 }
                 url = build_url(url_params)
                 cm.append((
                     "[B]Extended Info[/B]",
                     'RunScript(script.extendedinfo,info=extendedactorinfo,id=%s)'
                     % item['id']))
                 listitem = xbmcgui.ListItem(item['name'])
                 listitem.setArt({
                     'poster': actor_poster,
                     'fanart': __addon__.getAddonInfo('fanart')
                 })
                 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_movies_actor_roles':
             data, passed_list, total_pages, limit = function(
                 params['actor_id'], page_no, letter,
                 params.get('passed_list', ''))
             self.list = [i['media_id'] for i in data]
             if total_pages > 1: self.total_pages = total_pages
             if len(data) == limit:
                 self.new_page = {
                     'mode': mode,
                     'action': self.action,
                     'new_page': str(page_no + 1),
                     'new_letter': letter,
                     'passed_list': passed_list,
                     'actor_id': params['actor_id'],
                     'foldername': self.action
                 }
         elif self.action in ('tmdb_movies_search',
                              'tmdb_movies_people_search'):
             import urllib
             if params.get('query') == 'NA':
                 search_title = dialog.input("Search Fen",
                                             type=xbmcgui.INPUT_ALPHANUM)
                 search_name = urllib.unquote(search_title)
             else:
                 search_name = urllib.unquote(params.get('query'))
             if not search_name: return
             if self.action == 'tmdb_movies_people_search':
                 data, passed_list, total_pages, limit = function(
                     search_name, page_no, letter,
                     params.get('passed_list', ''))
                 if total_pages > 1: self.total_pages = total_pages
                 if len(data) == limit:
                     self.new_page = {
                         'mode': mode,
                         'action': self.action,
                         'new_page': str(page_no + 1),
                         'new_letter': letter,
                         'passed_list': passed_list,
                         'query': search_name,
                         'foldername': search_name
                     }
             else:
                 data = function(search_name, page_no)
                 if self.action == 'tmdb_movies_search':
                     if data['page'] < data['total_pages']:
                         self.new_page = {
                             'mode': mode,
                             'action': self.action,
                             'new_page': str(int(data['page']) + 1),
                             'query': search_name,
                             'foldername': search_name
                         }
             self.list = [i['id'] for i in data['results']
                          ] if self.action == 'tmdb_movies_search' else [
                              i['media_id'] for i in data
                          ]
         if self.total_pages:
             url_params = {
                 'mode': 'build_navigate_to_page',
                 'db_type': 'Movies',
                 'current_page': page_no,
                 'total_pages': self.total_pages,
                 'transfer_mode': mode,
                 'transfer_action': self.action,
                 'passed_list': passed_list,
                 'foldername': self.action,
                 'query': 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 worker: self.worker()
         if self.new_page: self.add_dir(self.new_page)
     except:
         pass
     xbmcplugin.setContent(__handle__, content_type)
     xbmcplugin.endOfDirectory(__handle__)
     setView('view.movies')
コード例 #7
0
import xbmc, xbmcaddon, xbmcplugin, xbmcgui
import sys, os
import urllib
from urlparse import parse_qsl
from resources.lib.modules.easynews_api import EasyNewsAPI
from resources.lib.modules.settings import get_theme
from resources.lib.modules.nav_utils import build_url, setView
from resources.lib.modules.utils import clean_file_name
# from resources.lib.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'))
dialog = xbmcgui.Dialog()
icon_directory = get_theme()
default_easynews_icon = os.path.join(icon_directory, 'easynews.png')
fanart = os.path.join(addon_dir, 'fanart.png')

EasyNews = EasyNewsAPI()

def search_easynews():
    from resources.lib.modules.history import add_to_search_history
    params = dict(parse_qsl(sys.argv[2].replace('?','')))
    default = params.get('suggestion', '')
    search_title = clean_file_name(params.get('query')) if ('query' in params and params.get('query') != 'NA') else None
    if not search_title: search_title = dialog.input('Enter search Term', type=xbmcgui.INPUT_ALPHANUM, defaultt=default)
    if not search_title: return
    try:
        search_name = clean_file_name(urllib.unquote(search_title))
        add_to_search_history(search_name, 'easynews_video_queries')
コード例 #8
0
import xbmc, xbmcaddon, xbmcplugin, xbmcgui
import sys, os, json
import urllib
from urlparse import parse_qsl
from resources.lib.modules.nav_utils import build_url, setView
from resources.lib.modules.furk_api import FurkAPI
from resources.lib.modules.utils import clean_file_name, to_utf8
from resources.lib.modules import settings
# from resources.lib.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')
コード例 #9
0
from resources.lib.modules.workers import Thread
from resources.lib.sources.local_library import LocalLibrarySource
from resources.lib.sources.downloads import DownloadsSource
from resources.lib.modules.utils import clean_file_name, to_utf8
from resources.lib.indexers.furk import t_file_browser, seas_ep_query_list, add_uncached_file
from resources.lib.modules.nav_utils import build_url, setView, close_all_dialog, \
                                            show_busy_dialog, hide_busy_dialog
from resources.lib.modules import settings
import tikimeta
# from resources.lib.modules.utils import logger

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

class Sources:
    def __init__(self):
        self.providers = []
        self.sources = []
        self.starting_providers = []
        self.threads = []

    def playback_prep(self, vid_type, tmdb_id, query, tvshowtitle=None, season=None, episode=None, ep_name=None, plot=None, meta=None, from_library=False, background='false'):
        self.background = True if background == 'true' else False
        self.from_library = from_library
        self.widget = False if 'plugin' in xbmc.getInfoLabel('Container.PluginName') else True
        self.action = 'XBMC.Container.Update(%s)' if not self.widget else 'XBMC.RunPlugin(%s)'
        self.use_dialog = True if self.from_library or self.widget else settings.use_dialog()
        self.autoplay = settings.auto_play()