diff --git a/data/interfaces/default/current_activity.html b/data/interfaces/default/current_activity.html index 1caa1d3b..02901de7 100644 --- a/data/interfaces/default/current_activity.html +++ b/data/interfaces/default/current_activity.html @@ -245,7 +245,7 @@ DOCUMENTATION :: END % elif a['state'] == 'buffering':   % endif - % if a['title']: + % if a['rating_key']: % if a['media_type'] == 'episode': ${a['grandparent_title']} - ${a['title']} % elif a['media_type'] == 'movie': @@ -260,11 +260,11 @@ DOCUMENTATION :: END ${a['title']} % endif % else: - Title + Title % endif
- % if a['media_index'] or a['parent_media_index'] or a['parent_title'] or a['title'] or a['year']: + % if a['rating_key']: % if a['media_type'] == 'episode': S${a['parent_media_index']} · E${a['media_index']} % elif a['media_type'] == 'movie': diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py index 7beec862..a6e4d6d9 100644 --- a/plexpy/datafactory.py +++ b/plexpy/datafactory.py @@ -809,6 +809,7 @@ class DataFactory(object): 'session_history_metadata.tagline, session_history_metadata.rating, session_history_metadata.duration, ' \ 'session_history_metadata.guid, session_history_metadata.directors, session_history_metadata.writers, ' \ 'session_history_metadata.actors, session_history_metadata.genres, session_history_metadata.studio, ' \ + 'session_history_metadata.labels, ' \ 'session_history_media_info.container, session_history_media_info.bitrate, ' \ 'session_history_media_info.video_codec, session_history_media_info.video_resolution, ' \ 'session_history_media_info.video_framerate, session_history_media_info.audio_codec, ' \ @@ -821,12 +822,14 @@ class DataFactory(object): else: result = [] - metadata = {} + metadata_list = [] + for item in result: directors = item['directors'].split(';') if item['directors'] else [] writers = item['writers'].split(';') if item['writers'] else [] actors = item['actors'].split(';') if item['actors'] else [] genres = item['genres'].split(';') if item['genres'] else [] + labels = item['labels'].split(';') if item['labels'] else [] metadata = {'media_type': item['media_type'], 'rating_key': item['rating_key'], @@ -853,10 +856,11 @@ class DataFactory(object): 'updated_at': item['updated_at'], 'last_viewed_at': item['last_viewed_at'], 'guid': item['guid'], - 'writers': writers, 'directors': directors, - 'genres': genres, + 'writers': writers, 'actors': actors, + 'genres': genres, + 'labels': labels, 'library_name': item['section_name'], 'section_id': item['section_id'], 'container': item['container'], @@ -867,8 +871,14 @@ class DataFactory(object): 'audio_codec': item['audio_codec'], 'audio_channels': item['audio_channels'] } + metadata_list.append(metadata) - return metadata + metadata = session.filter_session_info(metadata_list, filter_key='section_id') + + if metadata: + return {'metadata': session.filter_session_info(metadata_list, filter_key='section_id')[0]} + else: + return [] def get_total_duration(self, custom_where=None): monitor_db = database.MonitorDatabase() diff --git a/plexpy/session.py b/plexpy/session.py index cd72257c..4e7f95d0 100644 --- a/plexpy/session.py +++ b/plexpy/session.py @@ -53,7 +53,7 @@ def get_session_shared_libraries(): """ from plexpy import users user_details = users.Users().get_details(user_id=get_session_user_id()) - return user_details['shared_libraries'] + return tuple(str(s) for s in user_details['shared_libraries']) def get_session_library_filters(): """ @@ -151,14 +151,24 @@ def filter_session_info(list_of_dicts, filter_key=None): f_content_rating, f_labels = get_session_library_filters_type(session_library_filters, media_type=d['media_type']) - d_content_rating = d.get('content_rating', '').lower() + d_content_rating = d.get('content_rating', '') d_labels = tuple(f.lower() for f in d.get('labels', ())) - if (not f_content_rating or set(d_content_rating).intersection(set(f_content_rating))) and \ - (not f_labels or set(d_labels).intersection(set(f_labels))): - continue + keep = False + if not f_content_rating and not f_labels: + keep = True + elif not f_content_rating and f_labels: + if set(d_labels).intersection(set(f_labels)): + keep = True + elif f_content_rating and not f_labels: + if d_content_rating in f_content_rating: + keep = True + elif f_content_rating and f_labels: + if d_content_rating in f_content_rating or set(d_labels).intersection(set(f_labels)): + keep = True - new_list_of_dicts.append(d) + if keep: + new_list_of_dicts.append(d) return new_list_of_dicts @@ -223,13 +233,12 @@ def mask_session_info(list_of_dicts, mask_metadata=True): f_content_rating, f_labels = get_session_library_filters_type(session_library_filters, media_type=d['media_type']) - if not f_content_rating and not f_labels: - continue - d_content_rating = d.get('content_rating', '') d_labels = tuple(f.lower() for f in d.get('labels', ())) - if not f_content_rating and f_labels: + if not f_content_rating and not f_labels: + continue + elif not f_content_rating and f_labels: if set(d_labels).intersection(set(f_labels)): continue elif f_content_rating and not f_labels: diff --git a/plexpy/users.py b/plexpy/users.py index 0add1508..159e50d5 100644 --- a/plexpy/users.py +++ b/plexpy/users.py @@ -321,6 +321,8 @@ class Users(object): else: user_thumb = common.DEFAULT_USER_THUMB + shared_libraries = tuple(item['shared_libraries'].split(';')) if item['shared_libraries'] else () + user_details = {'user_id': item['user_id'], 'username': item['username'], 'friendly_name': friendly_name, @@ -333,7 +335,7 @@ class Users(object): 'keep_history': item['keep_history'], 'deleted_user': item['deleted_user'], 'allow_guest': item['allow_guest'], - 'shared_libraries': tuple(item['shared_libraries'].split(';')) + 'shared_libraries': shared_libraries } return user_details diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 11a7c57b..50a1a926 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -1846,9 +1846,11 @@ 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 + result = data_factory.get_metadata_details(rating_key=rating_key) + if result: + metadata = result['metadata'] + 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)