From 7442e53c6c2d050c37789da7e8320cb9753c91dc Mon Sep 17 00:00:00 2001 From: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com> Date: Sat, 27 Mar 2021 19:54:12 -0700 Subject: [PATCH] Optimize user watch time query --- plexpy/users.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plexpy/users.py b/plexpy/users.py index 2242e954..9d546759 100644 --- a/plexpy/users.py +++ b/plexpy/users.py @@ -22,6 +22,7 @@ from future.builtins import object from future.moves.urllib.parse import parse_qsl import httpagentparser +from datetime import datetime, timedelta import plexpy if plexpy.PYTHON2: @@ -499,6 +500,8 @@ class Users(object): group_by = 'reference_id' if grouping else 'id' for days in query_days: + timestamp = int((datetime.now(tz=plexpy.SYS_TIMEZONE) - timedelta(days=days)).timestamp()) + try: if days > 0: if str(user_id).isdigit(): @@ -506,8 +509,8 @@ class Users(object): ' SUM(CASE WHEN paused_counter IS NULL THEN 0 ELSE paused_counter END)) AS total_time, ' \ 'COUNT(DISTINCT %s) AS total_plays ' \ 'FROM session_history ' \ - 'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \ - 'AND user_id = ? ' % (group_by, days) + 'WHERE stopped >= %s ' \ + 'AND user_id = ? ' % (group_by, timestamp) result = monitor_db.select(query, args=[user_id]) else: result = []