From aacd72486e5c1fe70c09af05fa7ec5fc3e2054d1 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Thu, 6 Aug 2015 13:01:33 +0200 Subject: [PATCH] fixed nextepisodes updating by removing the caching --- resources/lib/Entrypoint.py | 64 ++++++++++++++----------------------- 1 file changed, 24 insertions(+), 40 deletions(-) diff --git a/resources/lib/Entrypoint.py b/resources/lib/Entrypoint.py index cdfd9a17..03cf7c80 100644 --- a/resources/lib/Entrypoint.py +++ b/resources/lib/Entrypoint.py @@ -437,49 +437,33 @@ def BrowseChannels(id, folderid=None): ##### GET NEXTUP EPISODES FOR TAGNAME ##### def getNextUpEpisodes(tagname,limit): count=0 + addonSettings = xbmcaddon.Addon(id='plugin.video.emby') + #if the addon is called with nextup parameter, we return the nextepisodes list of the given tagname + xbmcplugin.setContent(int(sys.argv[1]), 'episodes') + # First we get a list of all the in-progress TV shows - filtered by tag + json_query_string = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": { "sort": { "order": "descending", "method": "lastplayed" }, "filter": {"and": [{"operator":"true", "field":"inprogress", "value":""}, {"operator": "contains", "field": "tag", "value": "%s"}]}, "properties": [ "title", "studio", "mpaa", "file", "art" ] }, "id": "libTvShows"}' %tagname) - #try to load from cache first - win = xbmcgui.Window( 10000 ) - data = win.getProperty("emby.widget.nextup." + tagname) - if data and not win.getProperty("clearwidgetcache") == "clear": - data = json.loads(data) - for item in data: - liz = createListItem(item) - xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=item['file'], listitem=liz) - xbmcplugin.endOfDirectory(handle=int(sys.argv[1])) - else: - episodes = list() - addonSettings = xbmcaddon.Addon(id='plugin.video.emby') - win.clearProperty("clearwidgetcache") - #if the addon is called with nextup parameter, we return the nextepisodes list of the given tagname - xbmcplugin.setContent(int(sys.argv[1]), 'episodes') - # First we get a list of all the in-progress TV shows - filtered by tag - json_query_string = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": { "sort": { "order": "descending", "method": "lastplayed" }, "filter": {"and": [{"operator":"true", "field":"inprogress", "value":""}, {"operator": "contains", "field": "tag", "value": "%s"}]}, "properties": [ "title", "studio", "mpaa", "file", "art" ] }, "id": "libTvShows"}' %tagname) - - json_result = json.loads(json_query_string) - # If we found any, find the oldest unwatched show for each one. - if json_result.has_key('result') and json_result['result'].has_key('tvshows'): - for item in json_result['result']['tvshows']: + json_result = json.loads(json_query_string) + # If we found any, find the oldest unwatched show for each one. + if json_result.has_key('result') and json_result['result'].has_key('tvshows'): + for item in json_result['result']['tvshows']: - # If Ignore Specials is true only choose episodes from seasons greater than 0. - if addonSettings.getSetting("ignoreSpecialsNextEpisodes")=="true": - json_query2 = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": { "tvshowid": %d, "sort": {"method":"episode"}, "filter": {"and": [ {"field": "playcount", "operator": "lessthan", "value":"1"}, {"field": "season", "operator": "greaterthan", "value": "0"} ]}, "properties": [ "title", "playcount", "season", "episode", "showtitle", "plot", "file", "rating", "resume", "tvshowid", "art", "streamdetails", "firstaired", "runtime", "writer", "dateadded", "lastplayed" ], "limits":{"end":1}}, "id": "1"}' %item['tvshowid']) - else: - json_query2 = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": { "tvshowid": %d, "sort": {"method":"episode"}, "filter": {"field": "playcount", "operator": "lessthan", "value":"1"}, "properties": [ "title", "playcount", "season", "episode", "showtitle", "plot", "file", "rating", "resume", "tvshowid", "art", "streamdetails", "firstaired", "runtime", "writer", "dateadded", "lastplayed" ], "limits":{"end":1}}, "id": "1"}' %item['tvshowid']) + # If Ignore Specials is true only choose episodes from seasons greater than 0. + if addonSettings.getSetting("ignoreSpecialsNextEpisodes")=="true": + json_query2 = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": { "tvshowid": %d, "sort": {"method":"episode"}, "filter": {"and": [ {"field": "playcount", "operator": "lessthan", "value":"1"}, {"field": "season", "operator": "greaterthan", "value": "0"} ]}, "properties": [ "title", "playcount", "season", "episode", "showtitle", "plot", "file", "rating", "resume", "tvshowid", "art", "streamdetails", "firstaired", "runtime", "writer", "dateadded", "lastplayed" ], "limits":{"end":1}}, "id": "1"}' %item['tvshowid']) + else: + json_query2 = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": { "tvshowid": %d, "sort": {"method":"episode"}, "filter": {"field": "playcount", "operator": "lessthan", "value":"1"}, "properties": [ "title", "playcount", "season", "episode", "showtitle", "plot", "file", "rating", "resume", "tvshowid", "art", "streamdetails", "firstaired", "runtime", "writer", "dateadded", "lastplayed" ], "limits":{"end":1}}, "id": "1"}' %item['tvshowid']) - if json_query2: - json_query2 = json.loads(json_query2) - if json_query2.has_key('result') and json_query2['result'].has_key('episodes'): - for item in json_query2['result']['episodes']: - liz = createListItem(item) - episodes.append(item) - xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=item['file'], listitem=liz) - count +=1 - if count == limit: - break - #use window prop as cache - win.setProperty("emby.widget.nextup." + tagname, json.dumps(episodes)) - xbmcplugin.endOfDirectory(handle=int(sys.argv[1])) + if json_query2: + json_query2 = json.loads(json_query2) + if json_query2.has_key('result') and json_query2['result'].has_key('episodes'): + for item in json_query2['result']['episodes']: + liz = createListItem(item) + xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=item['file'], listitem=liz) + count +=1 + if count == limit: + break + xbmcplugin.endOfDirectory(handle=int(sys.argv[1])) def getInProgressEpisodes(tagname,limit): count = 0