58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
|
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
from ..utils import cast
|
||
|
from .. import timing, variables as v, app
|
||
|
|
||
|
|
||
|
class User(object):
|
||
|
def viewcount(self):
|
||
|
"""
|
||
|
Returns the play count for the item as an int or the int 0 if not found
|
||
|
"""
|
||
|
return cast(int, self.xml.get('viewCount')) or 0
|
||
|
|
||
|
def resume_point(self):
|
||
|
"""
|
||
|
Returns the resume point of time in seconds as float. 0.0 if not found
|
||
|
"""
|
||
|
resume = cast(float, self.xml.get('viewOffset')) or 0.0
|
||
|
return resume * v.PLEX_TO_KODI_TIMEFACTOR
|
||
|
|
||
|
def resume_point_plex(self):
|
||
|
"""
|
||
|
Returns the resume point of time in microseconds as float.
|
||
|
0.0 if not found
|
||
|
"""
|
||
|
return cast(float, self.xml.get('viewOffset')) or 0.0
|
||
|
|
||
|
def userrating(self):
|
||
|
"""
|
||
|
Returns the userRating [int].
|
||
|
If the user chose to replace user ratings with the number of different
|
||
|
file versions for a specific video, that number is returned instead
|
||
|
(at most 10)
|
||
|
|
||
|
0 is returned if something goes wrong
|
||
|
"""
|
||
|
if (app.SYNC.indicate_media_versions is True and
|
||
|
self.plex_type in (v.PLEX_TYPE_MOVIE, v.PLEX_TYPE_EPISODE)):
|
||
|
userrating = 0
|
||
|
for _ in self.xml.findall('./Media'):
|
||
|
userrating += 1
|
||
|
# Don't show a value of '1' - which we'll always have for normal
|
||
|
# Plex library items
|
||
|
return 0 if userrating == 1 else min(userrating, 10)
|
||
|
else:
|
||
|
return cast(int, self.xml.get('userRating')) or 0
|
||
|
|
||
|
def lastplayed(self):
|
||
|
"""
|
||
|
Returns the Kodi timestamp [unicode] for the last point of time, when
|
||
|
this item was played.
|
||
|
Returns None if this fails - item has never been played
|
||
|
"""
|
||
|
try:
|
||
|
return timing.plex_date_to_kodi(int(self.xml.get('lastViewedAt')))
|
||
|
except TypeError:
|
||
|
pass
|