mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-08 06:00:51 -07:00
Add server uptime
This commit is contained in:
parent
c3ea35806e
commit
4fffbf8a0c
5 changed files with 78 additions and 5 deletions
|
@ -902,6 +902,10 @@ available_notification_agents = sorted(notifiers.available_notification_agents()
|
||||||
<td width="150"><strong>{server_name}</strong></td>
|
<td width="150"><strong>{server_name}</strong></td>
|
||||||
<td>The name of your Plex Server.</td>
|
<td>The name of your Plex Server.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="150"><strong>{server_uptime}</strong></td>
|
||||||
|
<td>The uptime (in days, hours, mins, secs) of your Plex Server.</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150"><strong>{user}</strong></td>
|
<td width="150"><strong>{user}</strong></td>
|
||||||
<td>The username of the person streaming.</td>
|
<td>The username of the person streaming.</td>
|
||||||
|
|
|
@ -26,6 +26,8 @@ ping_count = 0
|
||||||
def check_active_sessions(ws_request=False):
|
def check_active_sessions(ws_request=False):
|
||||||
|
|
||||||
with monitor_lock:
|
with monitor_lock:
|
||||||
|
global ping_count
|
||||||
|
|
||||||
pms_connect = pmsconnect.PmsConnect()
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
session_list = pms_connect.get_current_activity()
|
session_list = pms_connect.get_current_activity()
|
||||||
monitor_db = database.MonitorDatabase()
|
monitor_db = database.MonitorDatabase()
|
||||||
|
@ -33,6 +35,7 @@ def check_active_sessions(ws_request=False):
|
||||||
# logger.debug(u"PlexPy Monitor :: Checking for active streams.")
|
# logger.debug(u"PlexPy Monitor :: Checking for active streams.")
|
||||||
|
|
||||||
if session_list:
|
if session_list:
|
||||||
|
ping_count = 0
|
||||||
media_container = session_list['sessions']
|
media_container = session_list['sessions']
|
||||||
|
|
||||||
# Check our temp table for what we must do with the new streams
|
# Check our temp table for what we must do with the new streams
|
||||||
|
@ -164,7 +167,6 @@ def check_active_sessions(ws_request=False):
|
||||||
else:
|
else:
|
||||||
logger.debug(u"PlexPy Monitor :: Unable to read session list.")
|
logger.debug(u"PlexPy Monitor :: Unable to read session list.")
|
||||||
response = pms_connect.get_server_response()
|
response = pms_connect.get_server_response()
|
||||||
global ping_count
|
|
||||||
|
|
||||||
if not response:
|
if not response:
|
||||||
ping_count += 1
|
ping_count += 1
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# This file is part of PlexPy.
|
# This file is part of PlexPy.
|
||||||
#
|
#
|
||||||
# PlexPy is free software: you can redistribute it and/or modify
|
# PlexPy is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -144,6 +144,31 @@ def now():
|
||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
return now.strftime("%Y-%m-%d %H:%M:%S")
|
return now.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
|
def human_duration(s):
|
||||||
|
|
||||||
|
hd = ''
|
||||||
|
|
||||||
|
if str(s).isdigit():
|
||||||
|
d = int(s / 84600)
|
||||||
|
h = int((s % 84600) / 3600)
|
||||||
|
m = int(((s % 84600) % 3600) / 60)
|
||||||
|
s = int(((s % 84600) % 3600) % 60)
|
||||||
|
|
||||||
|
hd_list = []
|
||||||
|
if d > 0:
|
||||||
|
hd_list.append(str(d) + ' days')
|
||||||
|
if h > 0:
|
||||||
|
hd_list.append(str(h) + ' hrs')
|
||||||
|
if m > 0:
|
||||||
|
hd_list.append(str(m) + ' mins')
|
||||||
|
if s > 0:
|
||||||
|
hd_list.append(str(s) + ' secs')
|
||||||
|
|
||||||
|
hd = ' '.join(hd_list)
|
||||||
|
|
||||||
|
return hd
|
||||||
|
else:
|
||||||
|
return hd
|
||||||
|
|
||||||
def get_age(date):
|
def get_age(date):
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with PlexPy. If not, see <http://www.gnu.org/licenses/>.
|
# along with PlexPy. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from plexpy import logger, config, notifiers, database, helpers
|
from plexpy import logger, config, notifiers, database, helpers, plextv, pmsconnect
|
||||||
|
|
||||||
import plexpy
|
import plexpy
|
||||||
import time
|
import time
|
||||||
|
@ -269,12 +269,22 @@ def set_notify_state(session, state, agent_info):
|
||||||
|
|
||||||
|
|
||||||
def build_notify_text(session=None, timeline=None, state=None):
|
def build_notify_text(session=None, timeline=None, state=None):
|
||||||
from plexpy import pmsconnect
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
# Get the server name
|
# Get the server name
|
||||||
server_name = plexpy.CONFIG.PMS_NAME
|
server_name = plexpy.CONFIG.PMS_NAME
|
||||||
|
|
||||||
|
# Get the server uptime
|
||||||
|
plex_tv = plextv.PlexTV()
|
||||||
|
server_times = plex_tv.get_server_times()
|
||||||
|
|
||||||
|
if server_times:
|
||||||
|
updated_at = server_times[0]['updated_at']
|
||||||
|
server_uptime = helpers.human_duration(int(time.time() - helpers.cast_to_float(updated_at)))
|
||||||
|
else:
|
||||||
|
logger.error(u"PlexPy Notifier :: Unable to retrieve server uptime.")
|
||||||
|
server_uptime = 'N/A'
|
||||||
|
|
||||||
# Get metadata feed for item
|
# Get metadata feed for item
|
||||||
if session:
|
if session:
|
||||||
rating_key = session['rating_key']
|
rating_key = session['rating_key']
|
||||||
|
@ -388,6 +398,7 @@ def build_notify_text(session=None, timeline=None, state=None):
|
||||||
progress_percent = helpers.get_percent(view_offset, duration)
|
progress_percent = helpers.get_percent(view_offset, duration)
|
||||||
|
|
||||||
available_params = {'server_name': server_name,
|
available_params = {'server_name': server_name,
|
||||||
|
'server_uptime': server_uptime,
|
||||||
'user': user,
|
'user': user,
|
||||||
'platform': platform,
|
'platform': platform,
|
||||||
'player': player,
|
'player': player,
|
||||||
|
@ -597,10 +608,22 @@ def build_server_notify_text(state=None):
|
||||||
# Get the server name
|
# Get the server name
|
||||||
server_name = plexpy.CONFIG.PMS_NAME
|
server_name = plexpy.CONFIG.PMS_NAME
|
||||||
|
|
||||||
|
# Get the server uptime
|
||||||
|
plex_tv = plextv.PlexTV()
|
||||||
|
server_times = plex_tv.get_server_times()
|
||||||
|
|
||||||
|
if server_times:
|
||||||
|
updated_at = server_times[0]['updated_at']
|
||||||
|
server_uptime = helpers.human_duration(int(time.time() - helpers.cast_to_float(updated_at)))
|
||||||
|
else:
|
||||||
|
logger.error(u"PlexPy Notifier :: Unable to retrieve server uptime.")
|
||||||
|
server_uptime = 'N/A'
|
||||||
|
|
||||||
on_down_subject = plexpy.CONFIG.NOTIFY_ON_DOWN_SUBJECT_TEXT
|
on_down_subject = plexpy.CONFIG.NOTIFY_ON_DOWN_SUBJECT_TEXT
|
||||||
on_down_body = plexpy.CONFIG.NOTIFY_ON_DOWN_BODY_TEXT
|
on_down_body = plexpy.CONFIG.NOTIFY_ON_DOWN_BODY_TEXT
|
||||||
|
|
||||||
available_params = {'server_name': server_name}
|
available_params = {'server_name': server_name,
|
||||||
|
'server_uptime': server_uptime}
|
||||||
|
|
||||||
# Default text
|
# Default text
|
||||||
subject_text = 'PlexPy (%s)' % server_name
|
subject_text = 'PlexPy (%s)' % server_name
|
||||||
|
|
|
@ -444,3 +444,22 @@ class PlexTV(object):
|
||||||
return clean_servers
|
return clean_servers
|
||||||
|
|
||||||
return json.dumps(clean_servers, indent=4)
|
return json.dumps(clean_servers, indent=4)
|
||||||
|
|
||||||
|
def get_server_times(self):
|
||||||
|
servers = self.get_plextv_server_list(output_format='xml')
|
||||||
|
server_times = []
|
||||||
|
|
||||||
|
try:
|
||||||
|
xml_head = servers.getElementsByTagName('Server')
|
||||||
|
except:
|
||||||
|
logger.warn("Error parsing XML for Plex servers.")
|
||||||
|
return []
|
||||||
|
|
||||||
|
for a in xml_head:
|
||||||
|
if helpers.get_xml_attr(a, 'machineIdentifier') == plexpy.CONFIG.PMS_IDENTIFIER:
|
||||||
|
server_times.append({"created_at": helpers.get_xml_attr(a, 'createdAt'),
|
||||||
|
"updated_at": helpers.get_xml_attr(a, 'updatedAt')
|
||||||
|
})
|
||||||
|
break
|
||||||
|
|
||||||
|
return server_times
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue