Created
January 12, 2020 18:15
-
-
Save henryjfry/4d60e5087ee38a042415ae6bd72628fd to your computer and use it in GitHub Desktop.
TMDB Helper - Trakt Upnext Sort Premiered ~/.kodi/addons/plugin.video.themoviedb.helper/resources/lib/container.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
####################################################### | |
def get_sortedlist2(self, items): | |
items = sorted(items, key=lambda x: x['infolabels']['premiered'], reverse=True) | |
# for i in items2: | |
# xbmc.log(str(i.infolabels['premiered'])+'===>TMDB HELPER', level=xbmc.LOGNOTICE) | |
if not items: | |
return | |
added, dbiditems, tmdbitems, lastitems, firstitems, nextpage = [], [], [], [], [], [] | |
mixed_movies, mixed_tvshows = 0, 0 | |
if self.item_tmdbtype in ['season', 'episode'] and self.params.get('tmdb_id'): | |
if not self.details_tv: | |
self.details_tv = self.tmdb.get_detailed_item('tv', self.params.get('tmdb_id'), season=self.params.get('season', None)) | |
if self.fanarttv and self.details_tv and self.exp_fanarttv(): | |
tvdb_id = self.tmdb.get_item_externalid('tv', self.params.get('tmdb_id'), 'tvdb_id') | |
artwork = self.fanarttv.get_tvshow_allart_lc(tvdb_id) | |
self.details_tv['clearart'] = artwork.get('clearart') | |
self.details_tv['clearlogo'] = artwork.get('clearlogo') | |
self.details_tv['landscape'] = artwork.get('landscape') | |
self.details_tv['banner'] = artwork.get('banner') | |
self.details_tv['fanart'] = self.details_tv.get('fanart') or artwork.get('fanart') | |
if self.item_tmdbtype == 'season' and self.details_tv: | |
item_upnext = ListItem(library=self.library, **self.details_tv) | |
item_upnext.infolabels['season'] = self.addon.getLocalizedString(32043) | |
item_upnext.label = self.addon.getLocalizedString(32043) | |
item_upnext.url = {'info': 'trakt_upnext', 'type': 'tv'} | |
items.append(item_upnext) | |
for i in items: | |
# xbmc.log(str(i.infolabels['premiered'])+'===>TMDB HELPER', level=xbmc.LOGNOTICE) | |
if i.nextpage: | |
i.url = self.params.copy() | |
i.url['page'] = i.nextpage | |
i.icon = '{0}/resources/icons/tmdb/nextpage.png'.format(self.addonpath) | |
if self.params.get('nextpage'): | |
nextpage.append(i) | |
continue | |
name = u'{0}{1}'.format(i.label, i.imdb_id or i.tmdb_id or i.poster) | |
if name in added: | |
continue | |
added.append(name) | |
if i.mixed_type == 'tv': | |
mixed_tvshows += 1 | |
elif i.mixed_type == 'movie': | |
mixed_movies += 1 | |
if self.details_tv: | |
season_num = i.infolabels.get('season') | |
i.cast = self.details_tv.get('cast', []) + i.cast | |
i.infolabels = utils.merge_two_dicts(self.details_tv.get('infolabels', {}), utils.del_empty_keys(i.infolabels)) | |
i.infoproperties = utils.merge_two_dicts(self.details_tv.get('infoproperties', {}), utils.del_empty_keys(i.infoproperties)) | |
i.poster = i.poster or self.details_tv.get('poster') | |
i.fanart = i.fanart if i.fanart and i.fanart != '{0}/fanart.jpg'.format(self.addonpath) else self.details_tv.get('fanart') | |
i.infolabels['season'] = season_num | |
i.dbid = self.get_db_info( | |
info='dbid', tmdbtype=self.item_tmdbtype, imdb_id=i.imdb_id, | |
originaltitle=i.infolabels.get('originaltitle'), title=i.infolabels.get('title'), year=i.infolabels.get('year'), | |
tvshowtitle=i.infolabels.get('tvshowtitle'), season=i.infolabels.get('season'), episode=i.infolabels.get('episode')) | |
i.infoproperties['widget'] = self.plugincategory | |
firstitems.append(i) | |
if mixed_movies or mixed_tvshows: | |
self.mixed_containercontent = 'tvshows' if mixed_tvshows > mixed_movies else 'movies' | |
self.numitems_dbid = len(dbiditems) or 0 | |
self.numitems_tmdb = len(tmdbitems) or 0 | |
xbmcplugin.setProperty(self.handle, 'NumItems.DBID', str(self.numitems_dbid)) | |
xbmcplugin.setProperty(self.handle, 'NumItems.TMDB', str(self.numitems_tmdb)) | |
return firstitems + nextpage | |
####################################################### | |
def list_trakthistory(self): | |
traktapi = TraktAPI(tmdb=self.tmdb) | |
userslug = traktapi.get_usernameslug(login=True) | |
self.item_tmdbtype = self.params.get('type') | |
list_sort2 = False | |
if self.params.get('info') == 'trakt_nextepisodes': | |
items = traktapi.get_inprogress(userslug, limit=300, episodes=True) | |
list_sort2 = True | |
self.item_tmdbtype = 'episode' | |
elif self.params.get('info') == 'trakt_inprogress': | |
items = traktapi.get_inprogress(userslug, limit=300) | |
elif self.params.get('info') == 'trakt_mostwatched': | |
items = traktapi.get_mostwatched(userslug, self.params.get('type'), limit=300) | |
elif self.params.get('info') == 'trakt_history': | |
items = traktapi.get_recentlywatched(userslug, self.params.get('type'), limit=300) | |
if list_sort2 == True: | |
self.list_items2( | |
items=items, url={ | |
'info': 'trakt_upnext' if self.params.get('info') == 'trakt_inprogress' else 'details', | |
'type': self.item_tmdbtype}) | |
else: | |
self.list_items( | |
items=items, url={ | |
'info': 'trakt_upnext' if self.params.get('info') == 'trakt_inprogress' else 'details', | |
'type': self.item_tmdbtype}) | |
def list_traktupnext(self): | |
self.item_tmdbtype = 'episode' | |
self.list_items2( | |
items=TraktAPI(tmdb=self.tmdb).get_upnext_episodes(tmdb_id=self.params.get('tmdb_id')), | |
url_tmdb_id=self.params.get('tmdb_id'), | |
url={'info': 'details', 'type': 'episode'}) | |
####################################################### | |
def list_items2(self, items=None, url=None, url_tmdb_id=None): | |
items = self.get_sortedlist2(items) | |
if not items: | |
return | |
self.item_dbtype = utils.type_convert(self.item_tmdbtype, 'dbtype') | |
self.containercontent = self.mixed_containercontent or utils.type_convert(self.item_tmdbtype, 'container') | |
trakt_watched = self.get_trakt_watched() | |
trakt_unwatched = self.get_trakt_unwatched() | |
x = 0 | |
self.start_container() | |
for i in items: | |
i.infoproperties['numitems.dbid'] = self.numitems_dbid | |
i.infoproperties['numitems.tmdb'] = self.numitems_tmdb | |
i.get_details(self.item_dbtype, self.tmdb, self.omdb, self.params.get('localdb')) | |
i.get_url(url, url_tmdb_id, self.params.get('widget'), self.params.get('fanarttv'), self.params.get('nextpage'), self.params.get('extended')) | |
i.get_extra_artwork(self.tmdb, self.fanarttv) if len(items) < 22 and self.exp_fanarttv() else None | |
i.get_trakt_watched(trakt_watched) if x == 0 or self.params.get('info') != 'details' else None | |
i.get_trakt_unwatched(trakt=TraktAPI(tmdb=self.tmdb), request=trakt_unwatched, check_sync=self.check_sync) if x == 0 or self.params.get('info') != 'details' else None | |
i.create_listitem(self.handle, **i.url) if not self.params.get('random') else self.randomlist.append(i) | |
x += 1 | |
self.finish_container() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment