mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-08 06:00:51 -07:00
Move activity processor code to the correct place.
This commit is contained in:
parent
6ee5eb13f0
commit
5595ef2e20
3 changed files with 78 additions and 87 deletions
|
@ -14,7 +14,7 @@
|
||||||
# along with PlexPy. If not, see <http://www.gnu.org/licenses/>.
|
# along with PlexPy. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import time
|
import time
|
||||||
from plexpy import logger, datafactory, pmsconnect, activity_processor, threading, notification_handler
|
from plexpy import logger, pmsconnect, activity_processor, threading, notification_handler
|
||||||
|
|
||||||
|
|
||||||
class ActivityHandler(object):
|
class ActivityHandler(object):
|
||||||
|
@ -66,16 +66,16 @@ class ActivityHandler(object):
|
||||||
logger.debug(u"PlexPy ActivityHandler :: Session %s has stopped." % str(self.get_session_key()))
|
logger.debug(u"PlexPy ActivityHandler :: Session %s has stopped." % str(self.get_session_key()))
|
||||||
|
|
||||||
# Set the session last_paused timestamp
|
# Set the session last_paused timestamp
|
||||||
data_factory = datafactory.DataFactory()
|
ap = activity_processor.ActivityProcessor()
|
||||||
data_factory.set_session_last_paused(session_key=self.get_session_key(), timestamp=None)
|
ap.set_session_last_paused(session_key=self.get_session_key(), timestamp=None)
|
||||||
|
|
||||||
# Update the session state and viewOffset
|
# Update the session state and viewOffset
|
||||||
data_factory.set_session_state(session_key=self.get_session_key(),
|
ap.set_session_state(session_key=self.get_session_key(),
|
||||||
state=self.timeline['state'],
|
state=self.timeline['state'],
|
||||||
view_offset=self.timeline['viewOffset'])
|
view_offset=self.timeline['viewOffset'])
|
||||||
|
|
||||||
# Retrieve the session data from our temp table
|
# Retrieve the session data from our temp table
|
||||||
db_session = data_factory.get_session_by_key(session_key=self.get_session_key())
|
db_session = ap.get_session_by_key(session_key=self.get_session_key())
|
||||||
|
|
||||||
# Fire off notifications
|
# Fire off notifications
|
||||||
threading.Thread(target=notification_handler.notify,
|
threading.Thread(target=notification_handler.notify,
|
||||||
|
@ -86,7 +86,7 @@ class ActivityHandler(object):
|
||||||
monitor_proc.write_session_history(session=db_session)
|
monitor_proc.write_session_history(session=db_session)
|
||||||
|
|
||||||
# Remove the session from our temp session table
|
# Remove the session from our temp session table
|
||||||
data_factory.delete_session(session_key=self.get_session_key())
|
ap.delete_session(session_key=self.get_session_key())
|
||||||
|
|
||||||
def on_buffer(self):
|
def on_buffer(self):
|
||||||
pass
|
pass
|
||||||
|
@ -96,16 +96,16 @@ class ActivityHandler(object):
|
||||||
logger.debug(u"PlexPy ActivityHandler :: Session %s has been paused." % str(self.get_session_key()))
|
logger.debug(u"PlexPy ActivityHandler :: Session %s has been paused." % str(self.get_session_key()))
|
||||||
|
|
||||||
# Set the session last_paused timestamp
|
# Set the session last_paused timestamp
|
||||||
data_factory = datafactory.DataFactory()
|
ap = activity_processor.ActivityProcessor()
|
||||||
data_factory.set_session_last_paused(session_key=self.get_session_key(), timestamp=int(time.time()))
|
ap.set_session_last_paused(session_key=self.get_session_key(), timestamp=int(time.time()))
|
||||||
|
|
||||||
# Update the session state and viewOffset
|
# Update the session state and viewOffset
|
||||||
data_factory.set_session_state(session_key=self.get_session_key(),
|
ap.set_session_state(session_key=self.get_session_key(),
|
||||||
state=self.timeline['state'],
|
state=self.timeline['state'],
|
||||||
view_offset=self.timeline['viewOffset'])
|
view_offset=self.timeline['viewOffset'])
|
||||||
|
|
||||||
# Retrieve the session data from our temp table
|
# Retrieve the session data from our temp table
|
||||||
db_session = data_factory.get_session_by_key(session_key=self.get_session_key())
|
db_session = ap.get_session_by_key(session_key=self.get_session_key())
|
||||||
|
|
||||||
# Fire off notifications
|
# Fire off notifications
|
||||||
threading.Thread(target=notification_handler.notify,
|
threading.Thread(target=notification_handler.notify,
|
||||||
|
@ -116,16 +116,16 @@ class ActivityHandler(object):
|
||||||
logger.debug(u"PlexPy ActivityHandler :: Session %s has been resumed." % str(self.get_session_key()))
|
logger.debug(u"PlexPy ActivityHandler :: Session %s has been resumed." % str(self.get_session_key()))
|
||||||
|
|
||||||
# Set the session last_paused timestamp
|
# Set the session last_paused timestamp
|
||||||
data_factory = datafactory.DataFactory()
|
ap = activity_processor.ActivityProcessor()
|
||||||
data_factory.set_session_last_paused(session_key=self.get_session_key(), timestamp=None)
|
ap.set_session_last_paused(session_key=self.get_session_key(), timestamp=None)
|
||||||
|
|
||||||
# Update the session state and viewOffset
|
# Update the session state and viewOffset
|
||||||
data_factory.set_session_state(session_key=self.get_session_key(),
|
ap.set_session_state(session_key=self.get_session_key(),
|
||||||
state=self.timeline['state'],
|
state=self.timeline['state'],
|
||||||
view_offset=self.timeline['viewOffset'])
|
view_offset=self.timeline['viewOffset'])
|
||||||
|
|
||||||
# Retrieve the session data from our temp table
|
# Retrieve the session data from our temp table
|
||||||
db_session = data_factory.get_session_by_key(session_key=self.get_session_key())
|
db_session = ap.get_session_by_key(session_key=self.get_session_key())
|
||||||
|
|
||||||
# Fire off notifications
|
# Fire off notifications
|
||||||
threading.Thread(target=notification_handler.notify,
|
threading.Thread(target=notification_handler.notify,
|
||||||
|
@ -134,8 +134,8 @@ class ActivityHandler(object):
|
||||||
# This function receives events from our websocket connection
|
# This function receives events from our websocket connection
|
||||||
def process(self):
|
def process(self):
|
||||||
if self.is_valid_session():
|
if self.is_valid_session():
|
||||||
data_factory = datafactory.DataFactory()
|
ap = activity_processor.ActivityProcessor()
|
||||||
db_session = data_factory.get_session_by_key(session_key=self.get_session_key())
|
db_session = ap.get_session_by_key(session_key=self.get_session_key())
|
||||||
|
|
||||||
# If we already have this session in the temp table, check for state changes
|
# If we already have this session in the temp table, check for state changes
|
||||||
if db_session:
|
if db_session:
|
||||||
|
|
|
@ -271,3 +271,59 @@ class ActivityProcessor(object):
|
||||||
logger.debug(u"PlexPy Monitor :: Unable to find IP address on fallback search. Not logging IP address.")
|
logger.debug(u"PlexPy Monitor :: Unable to find IP address on fallback search. Not logging IP address.")
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def get_session_by_key(self, session_key=None):
|
||||||
|
if str(session_key).isdigit():
|
||||||
|
result = self.db.select('SELECT started, session_key, rating_key, media_type, title, parent_title, '
|
||||||
|
'grandparent_title, user_id, user, friendly_name, ip_address, player, '
|
||||||
|
'platform, machine_id, parent_rating_key, grandparent_rating_key, state, '
|
||||||
|
'view_offset, duration, video_decision, audio_decision, width, height, '
|
||||||
|
'container, video_codec, audio_codec, bitrate, video_resolution, '
|
||||||
|
'video_framerate, aspect_ratio, audio_channels, transcode_protocol, '
|
||||||
|
'transcode_container, transcode_video_codec, transcode_audio_codec, '
|
||||||
|
'transcode_audio_channels, transcode_width, transcode_height, '
|
||||||
|
'paused_counter, last_paused '
|
||||||
|
'FROM sessions WHERE session_key = ? LIMIT 1', args=[session_key])
|
||||||
|
for session in result:
|
||||||
|
if session:
|
||||||
|
return session
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def set_session_state(self, session_key=None, state=None, view_offset=0):
|
||||||
|
if str(session_key).isdigit() and str(view_offset).isdigit():
|
||||||
|
values = {'view_offset': int(view_offset)}
|
||||||
|
if state:
|
||||||
|
values['state'] = state
|
||||||
|
|
||||||
|
keys = {'session_key': session_key}
|
||||||
|
result = self.db.upsert('sessions', values, keys)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def delete_session(self, session_key=None):
|
||||||
|
if str(session_key).isdigit():
|
||||||
|
self.db.action('DELETE FROM sessions WHERE session_key = ?', [session_key])
|
||||||
|
|
||||||
|
def set_session_last_paused(self, session_key=None, timestamp=None):
|
||||||
|
if str(session_key).isdigit():
|
||||||
|
result = self.db.select('SELECT last_paused, paused_counter '
|
||||||
|
'FROM sessions '
|
||||||
|
'WHERE session_key = ?', args=[session_key])
|
||||||
|
|
||||||
|
paused_counter = None
|
||||||
|
for session in result:
|
||||||
|
if session['last_paused']:
|
||||||
|
paused_offset = int(time.time()) - int(session['last_paused'])
|
||||||
|
paused_counter = int(session['paused_counter']) + int(paused_offset)
|
||||||
|
|
||||||
|
values = {'state': 'playing',
|
||||||
|
'last_paused': timestamp
|
||||||
|
}
|
||||||
|
if paused_counter:
|
||||||
|
values['paused_counter'] = paused_counter
|
||||||
|
|
||||||
|
keys = {'session_key': session_key}
|
||||||
|
self.db.upsert('sessions', values, keys)
|
||||||
|
|
|
@ -779,68 +779,3 @@ class DataFactory(object):
|
||||||
else:
|
else:
|
||||||
return 'Unable to delete items. Input user_id not valid.'
|
return 'Unable to delete items. Input user_id not valid.'
|
||||||
|
|
||||||
def get_session_by_key(self, session_key=None):
|
|
||||||
monitor_db = database.MonitorDatabase()
|
|
||||||
|
|
||||||
if str(session_key).isdigit():
|
|
||||||
result = monitor_db.select('SELECT started, session_key, rating_key, media_type, title, parent_title, '
|
|
||||||
'grandparent_title, user_id, user, friendly_name, ip_address, player, '
|
|
||||||
'platform, machine_id, parent_rating_key, grandparent_rating_key, state, '
|
|
||||||
'view_offset, duration, video_decision, audio_decision, width, height, '
|
|
||||||
'container, video_codec, audio_codec, bitrate, video_resolution, '
|
|
||||||
'video_framerate, aspect_ratio, audio_channels, transcode_protocol, '
|
|
||||||
'transcode_container, transcode_video_codec, transcode_audio_codec, '
|
|
||||||
'transcode_audio_channels, transcode_width, transcode_height, '
|
|
||||||
'paused_counter, last_paused '
|
|
||||||
'FROM sessions WHERE session_key = ? LIMIT 1', args=[session_key])
|
|
||||||
for session in result:
|
|
||||||
if session:
|
|
||||||
return session
|
|
||||||
|
|
||||||
return None
|
|
||||||
|
|
||||||
def set_session_state(self, session_key=None, state=None, view_offset=0):
|
|
||||||
monitor_db = database.MonitorDatabase()
|
|
||||||
|
|
||||||
if str(session_key).isdigit() and str(view_offset).isdigit():
|
|
||||||
values = {'view_offset': int(view_offset)}
|
|
||||||
if state:
|
|
||||||
values['state'] = state
|
|
||||||
|
|
||||||
keys = {'session_key': session_key}
|
|
||||||
result = monitor_db.upsert('sessions', values, keys)
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
return None
|
|
||||||
|
|
||||||
def delete_session(self, session_key=None):
|
|
||||||
monitor_db = database.MonitorDatabase()
|
|
||||||
|
|
||||||
if str(session_key).isdigit():
|
|
||||||
monitor_db.action('DELETE FROM sessions WHERE session_key = ?', [session_key])
|
|
||||||
|
|
||||||
def set_session_last_paused(self, session_key=None, timestamp=None):
|
|
||||||
import time
|
|
||||||
|
|
||||||
if str(session_key).isdigit():
|
|
||||||
monitor_db = database.MonitorDatabase()
|
|
||||||
|
|
||||||
result = monitor_db.select('SELECT last_paused, paused_counter '
|
|
||||||
'FROM sessions '
|
|
||||||
'WHERE session_key = ?', args=[session_key])
|
|
||||||
|
|
||||||
paused_counter = None
|
|
||||||
for session in result:
|
|
||||||
if session['last_paused']:
|
|
||||||
paused_offset = int(time.time()) - int(session['last_paused'])
|
|
||||||
paused_counter = int(session['paused_counter']) + int(paused_offset)
|
|
||||||
|
|
||||||
values = {'state': 'playing',
|
|
||||||
'last_paused': timestamp
|
|
||||||
}
|
|
||||||
if paused_counter:
|
|
||||||
values['paused_counter'] = paused_counter
|
|
||||||
|
|
||||||
keys = {'session_key': session_key}
|
|
||||||
monitor_db.upsert('sessions', values, keys)
|
|
Loading…
Add table
Add a link
Reference in a new issue