Esempio n. 1
0
def movies_add_all_to_library(items, noscan=False):
    library_folder = lib_movies.setup_library(
        plugin.get_setting('movies_library_folder', unicode))
    if 'results' in items:
        ids = '\n'.join([str(r['id']) for r in items['results']])
    else:
        ids = '\n'.join([
            i['movie']['ids']['imdb'] if i['movie']['ids']['imdb'] != None
            and i['movie']['ids']['imdb'] != '' else str(
                i['movie']['ids']['tmdb']) for i in items
        ])
    movies_batch_add_file = plugin.get_setting('movies_batch_add_file_path',
                                               unicode)
    if xbmcvfs.exists(movies_batch_add_file):
        batch_add_file = xbmcvfs.File(movies_batch_add_file)
        pre_ids = batch_add_file.read()
        xids = pre_ids.split('\n')
        for id in xids:
            if id != '' and id != None and id not in ids:
                ids = ids + str(id) + '\n'
        batch_add_file.close()
        xbmcvfs.delete(movies_batch_add_file)
    batch_add_file = xbmcvfs.File(movies_batch_add_file, 'w')
    batch_add_file.write(str(ids))
    batch_add_file.close()
    xbmc.executebuiltin(
        'RunPlugin(plugin://plugin.video.openmeta/movies/batch_add_to_library)'
    )
Esempio n. 2
0
def movies_add_to_library(src, id):
	from resources.lib.TheMovieDB import Movies
	library_folder = lib_movies.setup_library(plugin.get_setting('movies_library_folder', unicode))
	if library_folder == False:
		return
	date = None
	if src == 'tmdb':
		movie = Movies(id).info()
		date = text.date_to_timestamp(movie.get('release_date'))
		imdb_id = movie.get('imdb_id')
		if imdb_id:
			src = 'imdb'
			id = imdb_id
			ids = [str(movie.get('id')), str(movie.get('imdb_id', None))]
			try:
				libmovies = RPC.VideoLibrary.GetMovies(properties=['imdbnumber', 'title', 'year'])['movies']
				libmovies = [i for i in libmovies if str(i['imdbnumber']) in ids or (str(i['year']) == str(movie.get('year', 0)) and equals(movie.get['title'], i['title']))]
				libmovie = libmovies[0]
			except:
				libmovie = []
	else:
		ids = [str(id), 'None']
		try:
			libmovies = RPC.VideoLibrary.GetMovies(properties=['imdbnumber', 'title', 'year'])['movies']
			libmovies = [i for i in libmovies if str(i['imdbnumber']) in ids]
			libmovie = libmovies[0]
		except:
			libmovie = []
	if libmovie != []:
		return
	lib_movies.add_movie_to_library(library_folder, src, id)
	tools.scan_library(path=plugin.get_setting('movies_library_folder', unicode))
Esempio n. 3
0
def update_library():
    now = time.time()
    is_syncing = plugin.getProperty('openmeta_syncing_library')
    is_updating = plugin.getProperty('openmeta_updating_library')
    if is_syncing and now - int(is_syncing) < 120:
        plugin.log.debug('Skipping library sync')
    else:
        if plugin.get_setting('library_sync_collection', bool) == True:
            try:
                plugin.setProperty('openmeta_syncing_library', int(now))
                plugin.notify('OpenMeta', 'Syncing library',
                              plugin.get_addon_icon(), 1000)
                lib_tvshows.sync_trakt_collection()
                lib_movies.sync_trakt_collection()
            finally:
                plugin.clearProperty('openmeta_syncing_library')
    if is_updating and now - int(is_updating) < 120:
        plugin.log.debug('Skipping library update')
        return
    else:
        if plugin.get_setting('library_updates', bool) == True:
            try:
                plugin.setProperty('openmeta_updating_library', int(now))
                plugin.notify('OpenMeta', 'Updating library',
                              plugin.get_addon_icon(), 1000)
                lib_tvshows.update_library()
            finally:
                plugin.clearProperty('openmeta_updating_library')
Esempio n. 4
0
def update_library():
    folder_path = plugin.get_setting('tv_library_folder', unicode)
    if not xbmcvfs.exists(folder_path):
        return
    library_folder = setup_library(folder_path)
    try:
        shows = xbmcvfs.listdir(library_folder)[0]
    except:
        shows = []
    clean_needed = False
    updated = 0
    for id in shows:
        try:
            id = int(id)
            with TVDB.session.cache_disabled():
                if add_tvshow_to_library(library_folder, TVDB[id]):
                    clean_needed = True
        except:
            continue
        updated += 1
    if clean_needed:
        plugin.setProperty('plugin.video.openmeta.clean_library', 'true')
    if updated > 0:
        tools.scan_library(
            path=plugin.get_setting('tv_library_folder', unicode))
Esempio n. 5
0
def movies_batch_add_to_library():
	from resources.lib.TheMovieDB import Movies
	movie_batch_file = plugin.get_setting('movies_batch_add_file_path', unicode)
	if xbmcvfs.exists(movie_batch_file):
		try:
			f = open(xbmc.translatePath(movie_batch_file), 'r')
			r = f.read()
			f.close()
			ids = r.split('\n')
		except:
			plugin.notify('Movies', 'not found', plugin.get_addon_icon(), 3000)
		library_folder = lib_movies.setup_library(plugin.get_setting('movies_library_folder', unicode))
		for id in ids:
			if ',' in id:
				csvs = id.split(',')
				for csv in csvs:
					if not str(csv).startswith('tt') and csv != '':
						movie = Movies(csv).info()
						csv = movie.get('imdb_id')
					lib_movies.batch_add_movies_to_library(library_folder, csv)
			else:
				if not str(id).startswith('tt') and id != '':
					movie = Movies(id).info()
					id = movie.get('imdb_id')
				lib_movies.batch_add_movies_to_library(library_folder, id)
		os.remove(xbmc.translatePath(movie_batch_file))
		lib_movies.update_library()
		return True
Esempio n. 6
0
def tv_add_all_to_library(items, noscan=False):
    library_folder = lib_tvshows.setup_library(
        plugin.get_setting('tv_library_folder', unicode))
    ids = ''
    if 'results' in items:
        preids = []
        for tvdb_show, tmdb_show in executor.execute(tmdb_to_tvdb,
                                                     items['results'],
                                                     workers=10):
            if tvdb_show is not None:
                preids.append(tvdb_show['id'])
        ids = '\n'.join(preids)
    else:
        ids = '\n'.join([
            str(i['show']['ids']['tvdb']) if i['show']['ids']['tvdb'] != None
            and i['show']['ids']['tvdb'] != '' else i['show']['ids']['imdb']
            for i in items
        ])
    shows_batch_add_file = plugin.get_setting('tv_batch_add_file_path',
                                              unicode)
    if xbmcvfs.exists(shows_batch_add_file):
        batch_add_file = xbmcvfs.File(shows_batch_add_file)
        pre_ids = batch_add_file.read()
        xids = pre_ids.split('\n')
        for id in xids:
            if id != '' and id != None and id not in ids:
                ids = ids + str(id) + '\n'
        batch_add_file.close()
        xbmcvfs.delete(shows_batch_add_file)
    batch_add_file = xbmcvfs.File(shows_batch_add_file, 'w')
    batch_add_file.write(str(ids))
    batch_add_file.close()
    xbmc.executebuiltin(
        'RunPlugin(plugin://plugin.video.openmeta/tv/batch_add_to_library)')
Esempio n. 7
0
def tv_add_to_library(id):
	library_folder = lib_tvshows.setup_library(plugin.get_setting('tv_library_folder', unicode))
	show = TVDB[int(id)]
	imdb = show['imdb_id']
	library_folder = lib_tvshows.setup_library(plugin.get_setting('tv_library_folder', unicode))
	if lib_tvshows.add_tvshow_to_library(library_folder, show):
		plugin.setProperty('plugin.video.openmeta.clean_library', 'true')
	tools.scan_library(path=plugin.get_setting('tv_library_folder', unicode))
Esempio n. 8
0
def sources_setup():
	movielibraryfolder = plugin.get_setting('movies_library_folder', unicode)
	tvlibraryfolder = plugin.get_setting('tv_library_folder', unicode)
	try:
		lib_movies.auto_movie_setup(movielibraryfolder)
		lib_tvshows.auto_tvshows_setup(tvlibraryfolder)
		plugin.notify('OpenMeta sources setup', 'Done', plugin.get_addon_icon(), 3000)
	except:
		plugin.notify('OpenMeta sources setup', 'Failed', plugin.get_addon_icon(), 3000)
	return True
Esempio n. 9
0
def silent_setup():
    plugin.setProperty('totalopenmeta', 'true')
    movielibraryfolder = plugin.get_setting('movies_library_folder', unicode)
    tvlibraryfolder = plugin.get_setting('tv_library_folder', unicode)
    try:
        lib_movies.auto_movie_setup(movielibraryfolder)
        lib_tvshows.auto_tvshows_setup(tvlibraryfolder)
    except:
        pass
    plugin.clearProperty('totalopenmeta')
Esempio n. 10
0
def tv_add_to_library_parsed(id, player):
	if id.startswith('tt'):
		try:
			id = TVDB.search_by_imdb(id)
		except:
			plugin.ok('TV show not found', 'no show information found for %s in TheTVDB' % id)
	library_folder = lib_tvshows.setup_library(plugin.get_setting('tv_library_folder', unicode))
	show = TVDB[int(id)]
	imdb = show['imdb_id']
	library_folder = lib_tvshows.setup_library(plugin.get_setting('tv_library_folder', unicode))
	if lib_tvshows.add_tvshow_to_library(library_folder, show, player):
		plugin.setProperty('plugin.video.openmeta.clean_library', 'true')
	tools.scan_library(path=plugin.get_setting('tv_library_folder', unicode))
Esempio n. 11
0
def movies_add_to_library_parsed(src, id, player):
	from resources.lib.TheMovieDB import Movies
	library_folder = lib_movies.setup_library(plugin.get_setting('movies_library_folder', unicode))
	date = None
	if src == 'tmdb':
		movie = Movies(id).info()
		date = text.date_to_timestamp(movie.get('release_date'))
		imdb_id = movie.get('imdb_id')
		if imdb_id:
			if imdb_id != None and imdb_id != '':
				src = 'imdb'
				id = imdb_id
	lib_movies.add_movie_to_library(library_folder, src, id, player)
	tools.scan_library(path=plugin.get_setting('movies_library_folder', unicode))
Esempio n. 12
0
def tv_batch_add_to_library():
    tv_batch_file = plugin.get_setting('tv_batch_add_file_path', unicode)
    if xbmcvfs.exists(tv_batch_file):
        try:
            f = open(xbmc.translatePath(tv_batch_file), 'r')
            r = f.read()
            f.close()
            ids = r.split('\n')
        except:
            plugin.notify('TV shows', 'not found', plugin.get_addon_icon(),
                          3000)
        library_folder = lib_tvshows.setup_library(
            plugin.get_setting('tv_library_folder', unicode))
        ids_index = 0
        for id in ids:
            if id == None or id == 'None':
                pass
            elif ',' in id:
                csvs = id.split(',')
                for csv in csvs:
                    if csv == None or csv == 'None':
                        pass
                    elif str(csv).startswith('tt') and csv != '':
                        tvdb_id = get_tvdb_id_from_imdb_id(csv)
                    else:
                        tvdb_id = csv
                    show = TVDB[int(tvdb_id)]
                    lib_tvshows.batch_add_tvshows_to_library(
                        library_folder, show)
            else:
                if id == None or id == 'None' or id == '':
                    pass
                elif str(id).startswith('tt'):
                    tvdb_id = get_tvdb_id_from_imdb_id(id)
                else:
                    tvdb_id = id
                try:
                    show = TVDB[int(tvdb_id)]
                    lib_tvshows.batch_add_tvshows_to_library(
                        library_folder, show)
                except:
                    #					plugin.notify('Failed to add', '%s' % id, plugin.get_addon_icon(), 3000)
                    xbmc.log('Failed to add' + '%s' % id, xbmc.LOGERROR)

            ids_index += 1
        os.remove(xbmc.translatePath(tv_batch_file))
        lib_tvshows.update_library()
        return True
Esempio n. 13
0
 def search(self,
            series,
            year=None,
            language=plugin.get_setting('LangID', str)):
     series = urllib.quote(to_bytes(series))
     result = self._loadUrl(self.config['url_search'] % (series, language))
     seriesEt = self._parseXML(result)
     allSeries = []
     for series in seriesEt:
         result = dict(
             (k.tag.lower(), k.text) for k in series.getchildren())
         result['id'] = int(result['id'])
         if 'aliasnames' in result:
             if result['aliasnames'] is not None:
                 result['aliasnames'] = result['aliasnames'].split('|')
         if year:
             try:
                 year = int(year)
                 aired_year = int(
                     result['firstaired'].split('-')[0].strip())
                 if aired_year != year:
                     continue
             except:
                 continue
         allSeries.append(result)
     return allSeries
Esempio n. 14
0
 def __init__(self, language=plugin.get_setting('LangID', str)):
     languages = [
         'da', 'fi', 'nl', 'de', 'it', 'es', 'fr', 'pl', 'hu', 'el', 'tr',
         'ru', 'he', 'ja', 'pt', 'zh', 'cs', 'sl', 'hr', 'ko', 'sv', 'no'
     ]
     config = {}
     config['apikey'] = API_key
     if language in languages:
         config['language'] = language
     else:
         config['language'] = 'en'
     config[
         'url_search'] = u'https://thetvdb.com/api/GetSeries.php?seriesname=%%s&language=%%s' % config
     config[
         'url_search_by_imdb'] = u'https://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=%%s&language=%%s' % config
     config[
         'url_sid_full'] = u'https://thetvdb.com/api/%(apikey)s/series/%%s/all/%%s.zip' % config
     config[
         'url_sid_base'] = u'https://thetvdb.com/api/%(apikey)s/series/%%s/%%s.xml' % config
     config[
         'url_artwork_prefix'] = u'https://thetvdb.com/banners/%%s' % config
     self.config = config
     self.session = requests_cache.CachedSession(expire_after=21600,
                                                 backend='sqlite',
                                                 cache_name=os.path.join(
                                                     plugin.storage_path,
                                                     'TheTVDB'))
     self.shows = {}
Esempio n. 15
0
def update_players(url=None):
    url = plugin.get_setting('players_update_url', unicode)
    if updater.update_players(url):
        plugin.notify('OpenMeta players update', 'Done',
                      plugin.get_addon_icon(), 3000)
    else:
        plugin.notify('OpenMeta players update', 'Failed',
                      plugin.get_addon_icon(), 3000)
Esempio n. 16
0
def update_players(url=None):
    url = plugin.get_setting('players_update_url', unicode)
    if updater.update_players(url):
        plugin.notify('KodiTVR_VIDEO_PLAYER players update', 'Done',
                      plugin.get_addon_icon(), 3000)
    else:
        plugin.notify('KodiTVR_VIDEO_PLAYER players update', 'Failed',
                      plugin.get_addon_icon(), 3000)
Esempio n. 17
0
	def send_query():
		if with_auth:
			try:
				expires_at = plugin.get_setting('trakt_expires_at', int)
				if time.time() > expires_at:
					trakt_refresh_token()
			except:
				pass
			token = plugin.get_setting('trakt_access_token', unicode)
			if token:
				headers['Authorization'] = 'Bearer ' + token
		if data is not None:
			assert not params
			return requests.post('https://api.trakt.tv/' + path, json=data, headers=headers)
		elif is_delete:
			return requests.delete('https://api.trakt.tv/' + path, headers=headers)
		else:
			return requests.get('https://api.trakt.tv/' + path, params, headers=headers)
Esempio n. 18
0
 def search_by_imdb(self, imdb_id, year=None):
     language = plugin.get_setting('LangID', str)
     result = self._loadUrl(self.config['url_search_by_imdb'] %
                            (imdb_id, language))
     pre_tvdb = str(result).split('<seriesid>')
     if len(pre_tvdb) > 1:
         tvdb = str(pre_tvdb[1]).split('</seriesid>')
         return tvdb[0]
     else:
         return None
Esempio n. 19
0
def movies_play(src, id, usedefault='True'):
    playaction = plugin.get_setting('movies_default_action', int)
    if playaction == 1 and xbmc.getCondVisibility(
            'system.hasaddon(script.KodiTVRinfo)'
    ) and not plugin.getProperty('infodialogs.active'):
        from resources.lib.play_base import action_cancel
        action_cancel()
        src = 'id' if src == 'tmdb' else 'imdb_id'
        xbmc.executebuiltin(
            'RunScript(script.KodiTVRinfo,info=KodiTVRinfo,%s=%s)' % (src, id))
    else:
        movies_play_choose_player(src, id, usedefault)
Esempio n. 20
0
def trakt_refresh_token():
    data = {
        'client_id': CLIENT_ID,
        'client_secret': CLIENT_SECRET,
        'redirect_uri': 'urn:ietf:wg:oauth:2.0:oob',
        'grant_type': 'refresh_token',
        'refresh_token': plugin.get_setting('trakt_refresh_token', unicode)
    }
    response = call_trakt('oauth/token', data=data, with_auth=False)
    if response:
        plugin.set_setting('trakt_access_token', response['access_token'])
        plugin.set_setting('trakt_refresh_token', response['refresh_token'])
Esempio n. 21
0
def play_movie(tmdb_id, usedefault):
    from resources.lib.TheMovieDB import Movies
    play_plugin = meta_players.ADDON_SELECTOR.id
    players = meta_players.get_players('movies')

    players = [p for p in players if p.id == play_plugin] or players
    if not players or len(players) == 0:
        xbmc.executebuiltin('Action(Info)')
        play_base.action_cancel()
        return
    if usedefault == 'True':
        default = plugin.get_setting('moviesdefault', unicode)
        for player in players:
            if player.title == default:
                players = [player]
    movie = Movies(tmdb_id).info(
        language='en',
        append_to_response=
        'external_ids,alternative_titles,credits,images,keywords,releases,translations,rating'
    )
    movie_info = meta_info.get_movie_metadata(movie)
    imdb_id = movie['imdb_id'] if 'imdb_id' in movie else None
    id_type = 'imdb' if imdb_id and imdb_id.startswith('tt') else 'tmdb'
    id = imdb_id if imdb_id and imdb_id.startswith('tt') else tmdb_id
    trakt_ids = play_base.get_trakt_ids(id_type=id_type, id=id, type='movie')
    params = {}
    for lang in meta_players.get_needed_langs(players):
        if lang == 'en':
            tmdb_data = movie
        else:
            tmdb_data = Movies(tmdb_id).info(
                language=lang,
                append_to_response=
                'external_ids,alternative_titles,credits,images,keywords,releases,translations,rating'
            )
        params[lang] = get_movie_parameters(tmdb_data)
        if trakt_ids != None:
            params[lang].update(trakt_ids)
        params[lang]['info'] = movie_info
        params[lang] = text.to_unicode(params[lang])
    link = play_base.on_play_video(players, params, trakt_ids)
    if link:
        movie = Movies(tmdb_id).info(language='en')
        play_base.action_play({
            'label': movie_info['title'],
            'path': link,
            'info': movie_info,
            'is_playable': True,
            'info_type': 'video',
            'thumbnail': movie_info['poster'],
            'poster': movie_info['poster'],
            'fanart': movie_info['fanart']
        })
Esempio n. 22
0
def tv_play(id, season, episode, usedefault='True'):
	playaction = plugin.get_setting('tvshows_default_action', int)
	if playaction == 1 and xbmc.getCondVisibility('system.hasaddon(script.extendedinfo)') and not plugin.getProperty('infodialogs.active'):
		from resources.lib.play_base import action_cancel
		action_cancel()
		xbmc.executebuiltin('RunScript(script.extendedinfo,info=extendedtvinfo,tvdb_id=%s)' % (id))
	elif playaction == 2 and xbmc.getCondVisibility('system.hasaddon(script.extendedinfo)') and not plugin.getProperty('infodialogs.active'):
		from resources.lib.play_base import action_cancel
		action_cancel()
		xbmc.executebuiltin('RunScript(script.extendedinfo,info=extendedepisodeinfo,tvdb_id=%s,season=%s,episode=%s)' % (id, season, episode))
	else:
		play_tvshows.play_episode(id, season, episode, usedefault)
Esempio n. 23
0
def players_setup():
	plugin.setProperty('openmeta_players_setup', 'true')
	url = plugin.get_setting('players_update_url', unicode)
	if url == '':
		if plugin.yesno('OpenMeta players setup', 'Would you like to set a URL for players now?'):
			plugin.open_settings()
		else:
			plugin.notify('OpenMeta players setup', 'Failed', plugin.get_addon_icon(), 3000)
	elif updater.update_players(url):
		plugin.notify('OpenMeta players setup', 'Done', plugin.get_addon_icon(), 3000)
	else:
		plugin.notify('OpenMeta players setup', 'Failed', plugin.get_addon_icon(), 3000)
	plugin.clearProperty('openmeta_players_setup')
	return True
Esempio n. 24
0
def tv_tvshow(id):
	flatten = plugin.get_setting('flatten.tvshows', int)
	if flatten == 2:
		plugin.set_content('episodes')
		action = 'all'
	elif flatten == 1:		
		id = int(id)
		show = TVDB[id]
		if len(show.items()) == 1 or (len(show.items()) == 2 and show.items()[1][0] == 1):
			plugin.set_content('episodes')
			action = 'one'
		else:
			plugin.set_content('seasons')
			action = 'none'
	else:
		plugin.set_content('seasons')
		action = 'none'
	return plugin.finish(items=list_seasons_tvdb(id, action), sort_methods=SORT)
Esempio n. 25
0
import datetime
import xbmc
from addon import update_library
from resources.lib.xswift2 import plugin
from resources.lib.video_player import PLAYER


def go_idle(duration):
    while not xbmc.Monitor().abortRequested() and duration > 0:
        if PLAYER.isPlayingVideo():
            PLAYER.currentTime = PLAYER.getTime()
        xbmc.sleep(1000)
        duration -= 1


def future(seconds):
    return datetime.datetime.now() + datetime.timedelta(seconds=seconds)


if __name__ == '__main__':
    go_idle(5)
    if plugin.get_setting('total_setup_done', bool) == False:
        xbmc.executebuiltin(
            'RunPlugin(plugin://plugin.video.openmeta/setup/total)')
        plugin.set_setting('total_setup_done', 'true')
    next_update = future(0)
    while not xbmc.Monitor().abortRequested():
        if next_update <= future(0):
            next_update = future(8 * 60 * 60)
            update_library()
        go_idle(30 * 60)
Esempio n. 26
0
import os, json, requests, requests_cache
from resources.lib.xswift2 import plugin

ext_key = plugin.get_setting('tmdb_api', str)

if len(ext_key) == 32:
	API_key = ext_key
else:
	API_key = '772defd0fb9daa76166a0163c458ad7e'

requests_cache.install_cache(os.path.join(plugin.storage_path, 'TheMovieDB'), expire_after=21600)

class TMDB(object):
	BASE_PATH = ''
	URLS = {}
	def _get_path(self, key):
		return self.BASE_PATH + self.URLS[key]

	def _get_id_path(self, key):
		return self._get_path(key).format(id=self.id)

	def _get_guest_session_id_path(self, key):
		return self._get_path(key).format(guest_session_id=self.guest_session_id)

	def _get_credit_id_path(self, key):
		return self._get_path(key).format(credit_id=self.credit_id)

	def _get_series_id_season_number_path(self, key):
		return self._get_path(key).format(series_id=self.series_id, season_number=self.season_number)

	def _get_series_id_season_number_episode_number_path(self, key):
Esempio n. 27
0
import os, time, _strptime
import xbmc, xbmcvfs, xbmcplugin
from resources.lib import text
from resources.lib import Trakt
from resources.lib import tools
from resources.lib import executor
from resources.lib import nav_base
from resources.lib import meta_info
from resources.lib import lib_tvshows
from resources.lib import play_tvshows
from resources.lib.TheTVDB import TVDB
from resources.lib import fanarttv
from resources.lib.xswift2 import plugin

enablefanart = plugin.get_setting('enablefanart', bool)
specialsenabled = plugin.get_setting('include_specials', bool)
countenabled = plugin.get_setting('countenabled', bool)
traktenabled = True if plugin.get_setting('trakt_access_token',
                                          unicode) != '' else False
SORT = [
    xbmcplugin.SORT_METHOD_UNSORTED, xbmcplugin.SORT_METHOD_LABEL,
    xbmcplugin.SORT_METHOD_VIDEO_YEAR, xbmcplugin.SORT_METHOD_GENRE,
    xbmcplugin.SORT_METHOD_VIDEO_RATING, xbmcplugin.SORT_METHOD_PLAYCOUNT
]
SORTRAKT = [
    xbmcplugin.SORT_METHOD_UNSORTED, xbmcplugin.SORT_METHOD_LABEL,
    xbmcplugin.SORT_METHOD_VIDEO_YEAR, xbmcplugin.SORT_METHOD_GENRE,
    xbmcplugin.SORT_METHOD_VIDEO_RATING, xbmcplugin.SORT_METHOD_PLAYCOUNT,
    xbmcplugin.SORT_METHOD_DURATION, xbmcplugin.SORT_METHOD_MPAA_RATING
]
def play_episode(id, season, episode, usedefault):
    from resources.lib.TheTVDB import TVDB
    from resources.lib.TheTVDB import create_tvdb
    id = int(id)
    season = int(season)
    episode = int(episode)
    dbid = xbmc.getInfoLabel('ListItem.DBID')
    try:
        dbid = int(dbid)
    except:
        dbid = None
    show = TVDB[id]
    show_info = meta_info.get_tvshow_metadata_tvdb(show, banners=False)
    play_plugin = meta_players.ADDON_SELECTOR.id
    players = meta_players.get_players(
        'tvshows', filters={'network': show.get('network')})
    players = [p for p in players if p.id == play_plugin] or players
    if not players or len(players) == 0:
        xbmc.executebuiltin('Action(Info)')
        play_base.action_cancel()
        return
    if usedefault == 'True':
        default = plugin.get_setting('tvshowsdefault', unicode)
        for player in players:
            if player.title == default:
                players = [player]
    trakt_ids = play_base.get_trakt_ids(id_type='tvdb', id=id, type='show')
    params = {}
    for lang in meta_players.get_needed_langs(players):
        tvdb_data = create_tvdb(lang)[id]
        if tvdb_data['seriesname'] is None:
            continue
        episode_parameters = get_episode_parameters(tvdb_data, season, episode)
        if episode_parameters is not None:
            params[lang] = episode_parameters
        else:
            if trakt_ids['tmdb'] != None and trakt_ids['tmdb'] != '':
                return tmdb_play_episode(trakt_ids['tmdb'], season, episode)
            elif trakt_ids['tvdb'] == None or trakt_ids['tvdb'] == '':
                plugin.ok('Information not found for:',
                          '%s - S%sE%s' % (show_info['name'], season, episode))
            else:
                plugin.ok('Information not found for:',
                          '%s - S%sE%s' % (show_info['name'], season, episode))
        if trakt_ids != None:
            params[lang].update(trakt_ids)
        params[lang]['info'] = show_info
        params[lang] = text.to_unicode(params[lang])
    link = play_base.on_play_video(players, params, trakt_ids)
    if link:
        plugin.setProperty(
            'plugin.video.openmeta.data',
            json.dumps({
                'dbid': dbid,
                'tvdb': id,
                'season': season,
                'episode': episode
            }))
        season_info = meta_info.get_season_metadata_tvdb(show_info,
                                                         show[season],
                                                         banners=False)
        episode_info = meta_info.get_episode_metadata_tvdb(
            season_info, show[season][episode])
        play_base.action_play({
            'label': episode_info['name'],
            'path': link,
            'info': episode_info,
            'is_playable': True,
            'info_type': 'video',
            'thumbnail': episode_info['poster'],
            'poster': episode_info['poster'],
            'fanart': episode_info['fanart']
        })
Esempio n. 29
0
def trakt_movies_play_random_trending():
	result = []
	pages = plugin.get_setting('random_pages', int) + 1
	for i in range(1, pages):
		result.extend(trakt_movies_trending(i, raw=True))
	trakt_movies_play_random(result)
Esempio n. 30
0
def tmdb_movies_play_random_top_rated():
	result = {}
	pages = plugin.get_setting('random_pages', int) + 1
	for i in range(1, pages):
		result.update(tmdb_movies_top_rated(i, raw=True))
	tmdb_movies_play_random(result)