Merge pull request #1372 from KaasKop97/custom_time_queries

Allow custom time_queries for get_watch_stats (Closes #1345)
This commit is contained in:
JonnyWong16 2020-04-09 18:21:35 -07:00 committed by GitHub
commit bcbfaae630
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 8 deletions

2
API.md
View file

@ -1066,6 +1066,7 @@ Required parameters:
Optional parameters: Optional parameters:
grouping (int): 0 or 1 grouping (int): 0 or 1
time_queries (str): "1, 7, 30, 0"
Returns: Returns:
json: json:
@ -2378,6 +2379,7 @@ Required parameters:
Optional parameters: Optional parameters:
grouping (int): 0 or 1 grouping (int): 0 or 1
time_queries (str): "1, 7, 30, 0"
Returns: Returns:
json: json:

View file

@ -812,16 +812,20 @@ class Libraries(object):
# If there is no library data we must return something # If there is no library data we must return something
return default_return return default_return
def get_watch_time_stats(self, section_id=None, grouping=None): def get_watch_time_stats(self, section_id=None, grouping=None, time_queries=None):
if not session.allow_session_library(section_id): if not session.allow_session_library(section_id):
return [] return []
if grouping is None: if grouping is None:
grouping = plexpy.CONFIG.GROUP_HISTORY_TABLES grouping = plexpy.CONFIG.GROUP_HISTORY_TABLES
if time_queries is not None:
time_queries = map(int, time_queries.split(","))
else:
time_queries = [1, 7, 30, 0]
monitor_db = database.MonitorDatabase() monitor_db = database.MonitorDatabase()
time_queries = [1, 7, 30, 0]
library_watch_time_stats = [] library_watch_time_stats = []
group_by = 'session_history.reference_id' if grouping else 'session_history.id' group_by = 'session_history.reference_id' if grouping else 'session_history.id'

View file

@ -434,16 +434,20 @@ class Users(object):
# Use "Local" user to retain compatibility with PlexWatch database value # Use "Local" user to retain compatibility with PlexWatch database value
return default_return return default_return
def get_watch_time_stats(self, user_id=None, grouping=None): def get_watch_time_stats(self, user_id=None, grouping=None, time_queries=None):
if not session.allow_session_user(user_id): if not session.allow_session_user(user_id):
return [] return []
if grouping is None: if grouping is None:
grouping = plexpy.CONFIG.GROUP_HISTORY_TABLES grouping = plexpy.CONFIG.GROUP_HISTORY_TABLES
if time_queries is not None:
time_queries = map(int, time_queries.split(","))
else:
time_queries = [1, 7, 30, 0]
monitor_db = database.MonitorDatabase() monitor_db = database.MonitorDatabase()
time_queries = [1, 7, 30, 0]
user_watch_time_stats = [] user_watch_time_stats = []
group_by = 'reference_id' if grouping else 'id' group_by = 'reference_id' if grouping else 'id'

View file

@ -812,7 +812,7 @@ class WebInterface(object):
@cherrypy.tools.json_out() @cherrypy.tools.json_out()
@requireAuth(member_of("admin")) @requireAuth(member_of("admin"))
@addtoapi() @addtoapi()
def get_library_watch_time_stats(self, section_id=None, grouping=None, **kwargs): def get_library_watch_time_stats(self, section_id=None, grouping=None, time_queries=None, **kwargs):
""" Get a library's watch time statistics. """ Get a library's watch time statistics.
``` ```
@ -821,6 +821,7 @@ class WebInterface(object):
Optional parameters: Optional parameters:
grouping (int): 0 or 1 grouping (int): 0 or 1
time_queries (str): "1, 7, 30, 0"
Returns: Returns:
json: json:
@ -847,7 +848,8 @@ class WebInterface(object):
if section_id: if section_id:
library_data = libraries.Libraries() library_data = libraries.Libraries()
result = library_data.get_watch_time_stats(section_id=section_id, grouping=grouping) result = library_data.get_watch_time_stats(section_id=section_id, grouping=grouping,
time_queries=time_queries)
if result: if result:
return result return result
else: else:
@ -1431,7 +1433,7 @@ class WebInterface(object):
@cherrypy.tools.json_out() @cherrypy.tools.json_out()
@requireAuth(member_of("admin")) @requireAuth(member_of("admin"))
@addtoapi() @addtoapi()
def get_user_watch_time_stats(self, user_id=None, grouping=None, **kwargs): def get_user_watch_time_stats(self, user_id=None, grouping=None, time_queries=None, **kwargs):
""" Get a user's watch time statistics. """ Get a user's watch time statistics.
``` ```
@ -1440,6 +1442,7 @@ class WebInterface(object):
Optional parameters: Optional parameters:
grouping (int): 0 or 1 grouping (int): 0 or 1
time_queries (str): "1, 7, 30, 0"
Returns: Returns:
json: json:
@ -1466,7 +1469,7 @@ class WebInterface(object):
if user_id: if user_id:
user_data = users.Users() user_data = users.Users()
result = user_data.get_watch_time_stats(user_id=user_id, grouping=grouping) result = user_data.get_watch_time_stats(user_id=user_id, grouping=grouping, time_queries=time_queries)
if result: if result:
return result return result
else: else: