mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-15 17:52:59 -07:00
Add watch time and user stats to info pages (#1471)
* watch time stats for show * watch time stats for movie * User Stats for movies and shows * implementation for missing media types * cleanup * no data + rescrict guest access implementation Co-authored-by: herby2212 <jannes.nagel@gmx.de>
This commit is contained in:
parent
22f4b33087
commit
c6ff8940b4
3 changed files with 322 additions and 1 deletions
|
@ -458,7 +458,6 @@ class WebInterface(object):
|
|||
else:
|
||||
return {'result': 'error', 'message': 'Flush recently added failed.'}
|
||||
|
||||
|
||||
##### Libraries #####
|
||||
|
||||
@cherrypy.expose
|
||||
|
@ -4486,6 +4485,136 @@ class WebInterface(object):
|
|||
else:
|
||||
return serve_template(templatename="info_collection_list.html", data=None, title=title)
|
||||
|
||||
@cherrypy.expose
|
||||
@requireAuth()
|
||||
def item_watch_time_stats(self, rating_key=None, media_type=None, **kwargs):
|
||||
if rating_key:
|
||||
item_data = datafactory.DataFactory()
|
||||
result = item_data.get_watch_time_stats(rating_key=rating_key, media_type=media_type)
|
||||
else:
|
||||
result = None
|
||||
|
||||
if result:
|
||||
return serve_template(templatename="user_watch_time_stats.html", data=result, title="Watch Stats")
|
||||
else:
|
||||
logger.warn("Unable to retrieve data for item_watch_time_stats.")
|
||||
return serve_template(templatename="user_watch_time_stats.html", data=None, title="Watch Stats")
|
||||
|
||||
@cherrypy.expose
|
||||
@cherrypy.tools.json_out()
|
||||
@requireAuth(member_of("admin"))
|
||||
@addtoapi()
|
||||
def get_item_watch_time_stats(self, rating_key=None, media_type=None, **kwargs):
|
||||
""" Get the watch time stats for the media item.
|
||||
|
||||
```
|
||||
Required parameters:
|
||||
rating_key (str): Rating key of the item
|
||||
media_type (str): Media type of the item
|
||||
|
||||
Optional parameters:
|
||||
None
|
||||
|
||||
Returns:
|
||||
json:
|
||||
[
|
||||
{
|
||||
"query_days": 1,
|
||||
"total_time": 0,
|
||||
"total_plays": 0
|
||||
},
|
||||
{
|
||||
"query_days": 7,
|
||||
"total_time": 0,
|
||||
"total_plays": 0
|
||||
},
|
||||
{
|
||||
"query_days": 30,
|
||||
"total_time": 0,
|
||||
"total_plays": 0
|
||||
},
|
||||
{
|
||||
"query_days": 0,
|
||||
"total_time": 57776,
|
||||
"total_plays": 13
|
||||
}
|
||||
]
|
||||
```
|
||||
"""
|
||||
if rating_key:
|
||||
item_data = datafactory.DataFactory()
|
||||
stats = item_data.get_watch_time_stats(rating_key=rating_key, media_type=media_type)
|
||||
else:
|
||||
stats = None
|
||||
|
||||
if stats:
|
||||
return stats
|
||||
else:
|
||||
logger.warn("Unable to retrieve data for get_item_watch_time_stats.")
|
||||
return stats
|
||||
|
||||
@cherrypy.expose
|
||||
@requireAuth()
|
||||
def item_user_stats(self, rating_key=None, media_type=None, **kwargs):
|
||||
if rating_key:
|
||||
item_data = datafactory.DataFactory()
|
||||
result = item_data.get_user_stats(rating_key=rating_key, media_type=media_type)
|
||||
else:
|
||||
result = None
|
||||
|
||||
if result:
|
||||
return serve_template(templatename="library_user_stats.html", data=result, title="Player Stats")
|
||||
else:
|
||||
logger.warn("Unable to retrieve data for item_user_stats.")
|
||||
return serve_template(templatename="library_user_stats.html", data=None, title="Player Stats")
|
||||
|
||||
@cherrypy.expose
|
||||
@cherrypy.tools.json_out()
|
||||
@requireAuth(member_of("admin"))
|
||||
@addtoapi()
|
||||
def get_item_user_stats(self, rating_key=None, media_type=None, **kwargs):
|
||||
""" Get the user stats for the media item.
|
||||
|
||||
```
|
||||
Required parameters:
|
||||
rating_key (str): Rating key of the item
|
||||
media_type (str): Media type of the item
|
||||
|
||||
Optional parameters:
|
||||
None
|
||||
|
||||
Returns:
|
||||
json:
|
||||
[
|
||||
{
|
||||
"friendly_name": "Jon Snow",
|
||||
"user_id": 1601089,
|
||||
"user_thumb": "",
|
||||
"username": "jsnow@thewinteriscoming.com",
|
||||
"total_plays": 6
|
||||
},
|
||||
{
|
||||
"friendly_name": "DanyKhaleesi69",
|
||||
"user_id": 8008135,
|
||||
"user_thumb": "",
|
||||
"username": "DanyKhaleesi69",
|
||||
"total_plays": 5
|
||||
}
|
||||
]
|
||||
```
|
||||
"""
|
||||
if rating_key:
|
||||
item_data = datafactory.DataFactory()
|
||||
stats = item_data.get_user_stats(rating_key=rating_key, media_type=media_type)
|
||||
else:
|
||||
stats = None
|
||||
|
||||
if stats:
|
||||
return stats
|
||||
else:
|
||||
logger.warn("Unable to retrieve data for get_item_user_stats.")
|
||||
return stats
|
||||
|
||||
@cherrypy.expose
|
||||
@cherrypy.tools.json_out()
|
||||
@requireAuth(member_of("admin"))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue