diff --git a/resources/lib/objects/actions.py b/resources/lib/objects/actions.py index c22335fb..277b0641 100644 --- a/resources/lib/objects/actions.py +++ b/resources/lib/objects/actions.py @@ -101,7 +101,7 @@ class Actions(object): if transcode and not seektime: choice = self.resume_dialog(api.API(item, self.server).adjust_resume((resume or 0) / 10000000.0)) - + if choice is None: raise Exception("User backed out of resume dialog.") @@ -118,7 +118,7 @@ class Actions(object): self._set_additional_parts(item['Id']) def _set_intros(self, item): - + ''' if we have any play them when the movie/show is not being resumed. ''' intros = TheVoid('GetIntros', {'ServerId': self.server_id, 'Id': item['Id']}).get() @@ -214,7 +214,7 @@ class Actions(object): path = "plugin://plugin.video.emby/?mode=play&id=%s&playlist=true" % item listitem.setPath(path) - + playlist.add(path, listitem, index) index += 1 @@ -302,12 +302,26 @@ class Actions(object): obj['Video'] = API.video_streams(obj['Video'] or [], obj['Container']) obj['Audio'] = API.audio_streams(obj['Audio'] or []) obj['Streams'] = API.media_streams(obj['Video'], obj['Audio'], obj['Subtitles']) - obj['Artwork']['Primary'] = obj['Artwork']['Primary'] or "special://home/addons/plugin.video.emby/icon.png" - obj['Artwork']['Thumb'] = obj['Artwork']['Thumb'] or "special://home/addons/plugin.video.emby/fanart.jpg" - obj['Artwork']['Backdrop'] = obj['Artwork']['Backdrop'] or ["special://home/addons/plugin.video.emby/fanart.jpg"] obj['ChildCount'] = obj['ChildCount'] or 0 obj['RecursiveCount'] = obj['RecursiveCount'] or 0 obj['Unwatched'] = obj['Unwatched'] or 0 + obj['Artwork']['Backdrop'] = obj['Artwork']['Backdrop'] or [] + obj['Artwork']['Thumb'] = obj['Artwork']['Thumb'] or "" + + if obj['Type'] == 'Video' and not obj['Type'] == 'Trailer': + obj['Artwork']['Primary'] = obj['Artwork']['Primary'] or "special://home/addons/plugin.video.emby/icon.png" + else: + obj['Artwork']['Primary'] = obj['Artwork']['Primary'] or obj['Artwork']['Thumb'] or (obj['Artwork']['Backdrop'][0] if len(obj['Artwork']['Backdrop']) else "special://home/addons/plugin.video.emby/fanart.jpg") + obj['Artwork']['Primary'] += "&KodiTrailer=true" if obj['Type'] == 'Trailer' else "&KodiCinemaMode=true" + obj['Artwork']['Backdrop'] = [obj['Artwork']['Primary']] + + self.set_artwork(obj['Artwork'], listitem, obj['Type']) + + if obj['Type'] == 'Video' or obj['Type'] == 'Trailer': + listitem.setArt({'poster': ""}) # Clear the poster value for intros / trailers to prevent issues in skins + + listitem.setIconImage('DefaultVideo.png') + listitem.setThumbnailImage(obj['Artwork']['Primary']) if obj['Premiere']: obj['Premiere'] = obj['Premiere'].split('T')[0] @@ -333,30 +347,17 @@ class Actions(object): 'tagline': obj['Tagline'], 'writer': obj['Writers'], 'premiered': obj['Premiere'], - 'aired': obj['Premiere'], 'votes': obj['Votes'], 'dateadded': obj['DateAdded'], + 'aired': obj['Year'], 'date': obj['FileDate'], 'dbid': obj['DbId'] } listitem.setCast(API.get_actors()) - if obj['Type'] == 'Video': - listitem.setIconImage('DefaultVideo.png') - listitem.setThumbnailImage(obj['Artwork']['Primary'] or obj['Artwork']['Thumb']) - else: - listitem.setIconImage(obj['Artwork']['Thumb']) - listitem.setThumbnailImage(obj['Artwork']['Primary']) - self.set_artwork(obj['Artwork'], listitem, obj['Type']) - - if not obj['Artwork']['Backdrop']: - listitem.setArt({'fanart': obj['Artwork']['Primary']}) - if obj['Premiere']: - metadata['premieredate'] = obj['Premiere'] metadata['date'] = obj['Premiere'] - if obj['Type'] == 'Episode': metadata.update({ 'mediatype': "episode", @@ -366,7 +367,8 @@ class Actions(object): 'episode': obj['Index'] or 0, 'sortepisode': obj['Index'] or 0, 'lastplayed': obj['DatePlayed'], - 'duration': obj['Runtime'] + 'duration': obj['Runtime'], + 'aired': obj['Premiere'], }) elif obj['Type'] == 'Season': @@ -414,7 +416,7 @@ class Actions(object): 'lastplayed': obj['DatePlayed'], 'duration': obj['Runtime'] }) - + elif obj['Type'] == 'BoxSet': metadata['mediatype'] = "set" listitem.setProperty('IsFolder', 'true') @@ -422,10 +424,10 @@ class Actions(object): metadata.update({ 'mediatype': "video", 'lastplayed': obj['DatePlayed'], + 'year': obj['Year'], 'duration': obj['Runtime'] }) - if is_video: listitem.setProperty('totaltime', str(obj['Runtime'])) @@ -642,7 +644,7 @@ class Actions(object): 'medium_landscape', 'medium_poster', 'small_fanartimage', 'medium_fanartimage', 'fanart_noindicators', 'discart', 'tvshow.poster'): - + listitem.setProperty(art, path) else: listitem.setArt({art: path}) @@ -699,14 +701,14 @@ class PlaylistWorker(threading.Thread): def on_update(data, server): - + ''' Only for manually marking as watched/unwatched ''' try: kodi_id = data['item']['id'] media = data['item']['type'] playcount = int(data['playcount']) - LOG.info(" [ update/%s ] kodi_id: %s media: %s", playcount, kodi_id, media) + LOG.info(" [ update/%s ] kodi_id: %s media: %s", playcount, kodi_id, media) except (KeyError, TypeError): LOG.debug("Invalid playstate update") @@ -746,7 +748,7 @@ def on_play(data, server): kodi_id = item['id'] media = item['type'] - LOG.info(" [ play ] kodi_id: %s media: %s", kodi_id, media) + LOG.info(" [ play ] kodi_id: %s media: %s", kodi_id, media) except (KeyError, TypeError): LOG.debug("Invalid playstate update")