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)