Add recently watched to user screen

This commit is contained in:
Tim 2015-06-21 14:00:14 +02:00
commit ba18c5b96e
6 changed files with 112 additions and 3 deletions

View file

@ -414,9 +414,45 @@ class PlexWatch(object):
'thumb': thumb,
'index': self.get_xml_attr(a, 'index'),
'parentIndex': self.get_xml_attr(a, 'parentIndex'),
'year': self.get_xml_attr(a, 'year'),
'time': row[0],
'user': row[1]
}
recently_watched.append(recent_output)
return recently_watched
return recently_watched
def get_user_watch_time_stats(self, user=None):
myDB = db.DBConnection()
time_queries = [1, 7, 30, 0]
user_watch_time_stats = []
for days in time_queries:
if days > 0:
where = 'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \
'AND user = "%s"' % (days, user)
else:
where = 'WHERE user = "%s"' % user
query = 'SELECT (SUM(stopped - time) - SUM(CASE WHEN paused_counter is null THEN 0 ELSE paused_counter END)) as total_time, ' \
'COUNT(id) AS total_plays ' \
'FROM %s %s' % (self.get_user_table_name(), where)
result = myDB.select(query)
for item in result:
if item[0]:
total_time = item[0]
total_plays = item[1]
else:
total_time = 0
total_plays = 0
row = {'query_days': days,
'total_time': total_time,
'total_plays': total_plays
}
user_watch_time_stats.append(row)
return user_watch_time_stats

View file

@ -543,7 +543,19 @@ class WebInterface(object):
if result:
return serve_template(templatename="user_recently_watched.html", recently_watched=result, title="Recently Watched")
else:
return serve_template(templatename="user_recently_watched.html", metadata='', title="Recently Watched")
return serve_template(templatename="user_recently_watched.html", recently_watched='', title="Recently Watched")
logger.warn('Unable to retrieve data.')
@cherrypy.expose
def get_user_watch_time_stats(self, user=None, **kwargs):
plex_watch = plexwatch.PlexWatch()
result = plex_watch.get_user_watch_time_stats(user)
if result:
return serve_template(templatename="user_watch_time_stats.html", watch_stats=result, title="Watch Stats")
else:
return serve_template(templatename="user_watch_time_stats.html", watch_stats='', title="Watch Stats")
logger.warn('Unable to retrieve data.')
@cherrypy.expose
@ -618,3 +630,15 @@ class WebInterface(object):
return json.dumps(result)
else:
logger.warn('Unable to retrieve data.')
@cherrypy.expose
def get_time_stats(self, user=None, **kwargs):
plex_watch = plexwatch.PlexWatch()
result = plex_watch.get_user_watch_time_stats(user)
if result:
cherrypy.response.headers['Content-type'] = 'application/json'
return json.dumps(result)
else:
logger.warn('Unable to retrieve data.')