From 5126c39c26961bd5a6a044283dc806f16987b490 Mon Sep 17 00:00:00 2001 From: Jonathan Wong Date: Mon, 14 Sep 2015 00:02:31 -0700 Subject: [PATCH] Group recently watched tracks together by album * Also group identical movie or episode --- plexpy/datafactory.py | 51 ++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py index 7b6a99bc..4a988480 100644 --- a/plexpy/datafactory.py +++ b/plexpy/datafactory.py @@ -524,24 +524,35 @@ class DataFactory(object): try: if user_id: - query = 'SELECT session_history.id, session_history.media_type, session_history.rating_key, title, parent_title, ' \ - 'grandparent_title, thumb, parent_thumb, grandparent_thumb, media_index, parent_media_index, year, started, user ' \ + query = 'SELECT session_history.id, session_history.media_type, session_history.rating_key, session_history.parent_rating_key, ' \ + 'title, parent_title, grandparent_title, thumb, parent_thumb, grandparent_thumb, media_index, parent_media_index, ' \ + 'year, started, user ' \ 'FROM session_history_metadata ' \ 'JOIN session_history ON session_history_metadata.id = session_history.id ' \ - 'WHERE user_id = ? ORDER BY started DESC LIMIT ?' + 'WHERE user_id = ? ' \ + 'GROUP BY (CASE WHEN session_history.media_type = "track" THEN session_history.parent_rating_key ' \ + ' ELSE session_history.rating_key END) ' \ + 'ORDER BY started DESC LIMIT ?' result = monitor_db.select(query, args=[user_id, limit]) elif user: - query = 'SELECT session_history.id, session_history.media_type, session_history.rating_key, title, parent_title, ' \ - 'grandparent_title, thumb, parent_thumb, grandparent_thumb, media_index, parent_media_index, year, started, user ' \ + query = 'SELECT session_history.id, session_history.media_type, session_history.rating_key, session_history.parent_rating_key, ' \ + 'title, parent_title, grandparent_title, thumb, parent_thumb, grandparent_thumb, media_index, parent_media_index, ' \ + 'year, started, user ' \ 'FROM session_history_metadata ' \ 'JOIN session_history ON session_history_metadata.id = session_history.id ' \ - 'WHERE user = ? ORDER BY started DESC LIMIT ?' + 'WHERE user = ? ' \ + 'GROUP BY (CASE WHEN session_history.media_type = "track" THEN session_history.parent_rating_key ' \ + ' ELSE session_history.rating_key END) ' \ + 'ORDER BY started DESC LIMIT ?' result = monitor_db.select(query, args=[user, limit]) else: - query = 'SELECT session_history.id, session_history.media_type, session_history.rating_key, title, parent_title, ' \ - 'grandparent_title, thumb, parent_thumb, grandparent_thumb, media_index, parent_media_index, year, started, user ' \ + query = 'SELECT session_history.id, session_history.media_type, session_history.rating_key, session_history.parent_rating_key, ' \ + 'title, parent_title, grandparent_title, thumb, parent_thumb, grandparent_thumb, media_index, parent_media_index, ' \ + 'year, started, user ' \ 'FROM session_history_metadata ' \ 'JOIN session_history ON session_history_metadata.id = session_history.id ' \ + 'GROUP BY (CASE WHEN session_history.media_type = "track" THEN session_history.parent_rating_key ' \ + ' ELSE session_history.rating_key END) ' \ 'ORDER BY started DESC LIMIT ?' result = monitor_db.select(query, args=[limit]) except: @@ -549,25 +560,25 @@ class DataFactory(object): return None for row in result: - if row[1] == 'episode' and row[7]: - thumb = row[7] - elif row[1] == 'episode': + if row[1] == 'episode' and row[8]: thumb = row[8] + elif row[1] == 'episode': + thumb = row[9] else: - thumb = row[6] + thumb = row[7] recent_output = {'row_id': row[0], 'type': row[1], 'rating_key': row[2], - 'title': row[3], - 'parent_title': row[4], - 'grandparent_title': row[5], + 'title': row[4], + 'parent_title': row[5], + 'grandparent_title': row[6], 'thumb': thumb, - 'index': row[9], - 'parent_index': row[10], - 'year': row[11], - 'time': row[12], - 'user': row[13] + 'index': row[10], + 'parent_index': row[11], + 'year': row[12], + 'time': row[13], + 'user': row[14] } recently_watched.append(recent_output)