diff --git a/data/interfaces/default/css/plexpy.css b/data/interfaces/default/css/plexpy.css index 6fb199ab..0be38e59 100644 --- a/data/interfaces/default/css/plexpy.css +++ b/data/interfaces/default/css/plexpy.css @@ -2408,6 +2408,9 @@ a .home-platforms-instance-list-oval:hover, padding: 0; border: 0; } +.history-thumbnail-popover.popover.left { + margin-left: -15px; +} .history-thumbnail-popover.popover.right { margin-left: 15px; } diff --git a/data/interfaces/default/info.html b/data/interfaces/default/info.html index 2ddd7420..d2d03c00 100644 --- a/data/interfaces/default/info.html +++ b/data/interfaces/default/info.html @@ -344,6 +344,22 @@ DOCUMENTATION :: END + % if source == 'history': + + Fix Metadata + + % endif + % if data.get('poster_url'): + % if data['media_type'] == 'artist' or data['media_type'] == 'album' or data['media_type'] == 'track': + + % else: + + % endif + + + % endif @@ -519,10 +535,33 @@ DOCUMENTATION :: END $("#runtime").html(millisecondsToMinutes($("#runtime").text(), true)); $('div.art-face').animate({ opacity: 0.2 }, { duration: 1000 }); -% if source == 'history': +% if data.get('poster_url'): % endif % endif diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py index 1dc5a1a4..7e54a59c 100644 --- a/plexpy/datafactory.py +++ b/plexpy/datafactory.py @@ -860,16 +860,28 @@ class DataFactory(object): return ip_address - def get_poster_url(self, rating_key=''): + def get_poster_url(self, rating_key='', metadata=None): monitor_db = database.MonitorDatabase() poster_url = '' + poster_key = '' if rating_key: + poster_key = rating_key + elif metadata: + if metadata['media_type'] == 'movie' or metadata['media_type'] == 'show' or \ + metadata['media_type'] == 'artist' or metadata['media_type'] == 'album': + poster_key = metadata['rating_key'] + elif metadata['media_type'] == 'episode': + poster_key = metadata['grandparent_rating_key'] + elif metadata['media_type'] == 'season' or metadata['media_type'] == 'track': + poster_key = metadata['parent_rating_key'] + + if poster_key: try: query = 'SELECT id, poster_url FROM notify_log ' \ 'WHERE rating_key = %d OR parent_rating_key = %d OR grandparent_rating_key = %d ' \ - 'ORDER BY id DESC LIMIT 1' % (int(rating_key), int(rating_key), int(rating_key)) + 'ORDER BY id DESC LIMIT 1' % (int(poster_key), int(poster_key), int(poster_key)) result = monitor_db.select(query) except Exception as e: logger.warn(u"PlexPy DataFactory :: Unable to execute database query for get_poster_url: %s." % e) @@ -882,6 +894,16 @@ class DataFactory(object): return poster_url + def delete_poster_url(self, poster_url=''): + monitor_db = database.MonitorDatabase() + + if poster_url: + logger.info(u"PlexPy DataFactory :: Deleting poster_url %s from the notify log database." % poster_url) + monitor_db.upsert('notify_log', {'poster_url': None}, {'poster_url': poster_url}) + return 'Deleted poster_url %s.' % poster_url + else: + return 'Unable to delete poster_url.' + def get_search_query(self, rating_key=''): monitor_db = database.MonitorDatabase() diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 4cf0ca23..8c8a4c65 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -1637,11 +1637,16 @@ class WebInterface(object): if source == 'history': data_factory = datafactory.DataFactory() metadata = data_factory.get_metadata_details(rating_key=rating_key) + poster_url = data_factory.get_poster_url(metadata=metadata) + metadata['poster_url'] = poster_url else: pms_connect = pmsconnect.PmsConnect() result = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=True) if result: metadata = result['metadata'] + data_factory = datafactory.DataFactory() + poster_url = data_factory.get_poster_url(metadata=metadata) + metadata['poster_url'] = poster_url if metadata: return serve_template(templatename="info.html", data=metadata, title="Info", config=config, source=source) @@ -1688,6 +1693,22 @@ class WebInterface(object): return None + @cherrypy.expose + def delete_poster_url(self, poster_url=''): + + if poster_url: + data_factory = datafactory.DataFactory() + result = data_factory.delete_poster_url(poster_url=poster_url) + else: + result = None + + if result: + cherrypy.response.headers['Content-type'] = 'application/json' + return json.dumps({'message': result}) + else: + cherrypy.response.headers['Content-type'] = 'application/json' + return json.dumps({'message': 'no data received'}) + ##### Search #####