mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-08-22 06:13:25 -07:00
random fixes
This commit is contained in:
parent
d91903610b
commit
837d71712e
5 changed files with 61 additions and 63 deletions
|
@ -490,8 +490,8 @@ def initialize_scheduler():
|
||||||
|
|
||||||
schedule_job(activity_pinger.connect_server, 'Check for server response',
|
schedule_job(activity_pinger.connect_server, 'Check for server response',
|
||||||
hours=0, minutes=0, seconds=0)
|
hours=0, minutes=0, seconds=0)
|
||||||
# schedule_job(web_socket.send_ping, 'Websocket ping',
|
schedule_job(web_socket.send_ping, 'Websocket ping',
|
||||||
# hours=0, minutes=0, seconds=10 * bool(CONFIG.WEBSOCKET_MONITOR_PING_PONG))
|
hours=0, minutes=0, seconds=10 * bool(CONFIG.WEBSOCKET_MONITOR_PING_PONG))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Cancel all jobs
|
# Cancel all jobs
|
||||||
|
@ -2762,7 +2762,6 @@ def shutdown(restart=False, update=False, checkout=False, reset=False):
|
||||||
webstart.stop()
|
webstart.stop()
|
||||||
|
|
||||||
# Shutdown the websocket connection
|
# Shutdown the websocket connection
|
||||||
if WEBSOCKET:
|
|
||||||
web_socket.shutdown()
|
web_socket.shutdown()
|
||||||
|
|
||||||
if SCHED.running:
|
if SCHED.running:
|
||||||
|
|
|
@ -1143,7 +1143,9 @@ class DataFactory(object):
|
||||||
if (parts[0] not in libraries):
|
if (parts[0] not in libraries):
|
||||||
libraries[parts[0]] = []
|
libraries[parts[0]] = []
|
||||||
libraries[parts[0]].append(parts[1])
|
libraries[parts[0]].append(parts[1])
|
||||||
|
if len(libraries) < 1:
|
||||||
|
logger.warn("Tautulli DataFactory :: Unable to execute database query for get_library_stats")
|
||||||
|
return None
|
||||||
try:
|
try:
|
||||||
query = "SELECT ls.id, ls.section_id, ls.section_name, ls.section_type, ls.thumb AS library_thumb, " \
|
query = "SELECT ls.id, ls.section_id, ls.section_name, ls.section_type, ls.thumb AS library_thumb, " \
|
||||||
"ls.custom_thumb_url AS custom_thumb, ls.art AS library_art, ls.custom_art_url AS custom_art, " \
|
"ls.custom_thumb_url AS custom_thumb, ls.art AS library_art, ls.custom_art_url AS custom_art, " \
|
||||||
|
@ -1153,17 +1155,17 @@ class DataFactory(object):
|
||||||
"sh.rating_key, shm.grandparent_rating_key, shm.thumb, shm.grandparent_thumb, " \
|
"sh.rating_key, shm.grandparent_rating_key, shm.thumb, shm.grandparent_thumb, " \
|
||||||
"sh.user, sh.user_id, sh.player, " \
|
"sh.user, sh.user_id, sh.player, " \
|
||||||
"shm.art, sh.media_type, shm.content_rating, shm.labels, shm.live, shm.guid, " \
|
"shm.art, sh.media_type, shm.content_rating, shm.labels, shm.live, shm.guid, " \
|
||||||
"MAX(sh.started) AS last_watch, ls.server_id as server_id " \
|
"ls.server_id as server_id " \
|
||||||
"FROM library_sections AS ls " \
|
"FROM library_sections AS ls " \
|
||||||
"LEFT OUTER JOIN session_history AS sh ON ls.section_id = sh.section_id AND ls.server_id = sh.server_id " \
|
"LEFT OUTER JOIN session_history AS sh ON ls.section_id = sh.section_id AND ls.server_id = sh.server_id " \
|
||||||
"LEFT OUTER JOIN session_history_metadata AS shm ON sh.id = shm.id AND sh.server_id = shm.server_id "
|
"LEFT OUTER JOIN session_history_metadata AS shm ON sh.id = shm.id AND sh.server_id = shm.server_id WHERE "
|
||||||
query_parts = []
|
query_parts = []
|
||||||
for library in libraries:
|
for library in libraries:
|
||||||
query_parts.append("(ls.section_id IN (" + ",".join(libraries[library]) + ") AND ls.deleted_section = 0 AND ls.server_id = '" + library +"' )")
|
query_parts.append("(ls.section_id IN (" + ",".join(libraries[library]) + ") AND ls.deleted_section = 0 AND ls.server_id = '" + library +"' )")
|
||||||
|
|
||||||
query +=(" or ").join(query_parts)
|
query +=(" or ").join(query_parts)
|
||||||
|
|
||||||
query += "ORDER BY ls.section_type, ls.count DESC, ls.parent_count DESC, ls.child_count DESC "
|
query += " GROUP BY ls.section_id, ls.server_id ORDER BY ls.section_type, ls.count DESC, ls.parent_count DESC, ls.child_count DESC "
|
||||||
result = monitor_db.select(query)
|
result = monitor_db.select(query)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warn("Tautulli DataFactory :: Unable to execute database query for get_library_stats: %s." % e)
|
logger.warn("Tautulli DataFactory :: Unable to execute database query for get_library_stats: %s." % e)
|
||||||
|
|
|
@ -2373,7 +2373,7 @@ class PmsConnect(object):
|
||||||
|
|
||||||
if session_id:
|
if session_id:
|
||||||
logger.info("Tautulli Pmsconnect :: Terminating session %s (session_id %s)." % (session_key, session_id))
|
logger.info("Tautulli Pmsconnect :: Terminating session %s (session_id %s)." % (session_key, session_id))
|
||||||
response = self.get_sessions_terminate(session_id=session_id, reason=message, server_id=self.server_id)
|
response = self.get_sessions_terminate(session_id=session_id, reason=message)
|
||||||
return response.ok
|
return response.ok
|
||||||
else:
|
else:
|
||||||
msg = 'Missing session_id'
|
msg = 'Missing session_id'
|
||||||
|
|
|
@ -55,13 +55,20 @@ pong_timer = None
|
||||||
pong_count = 0
|
pong_count = 0
|
||||||
ws_list = []
|
ws_list = []
|
||||||
|
|
||||||
|
|
||||||
def isServerUp():
|
def isServerUp():
|
||||||
for ws in ws_list:
|
for ws in ws_list:
|
||||||
if ws.WS_CONNECTED:
|
if ws.WS_CONNECTED:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def shutdown():
|
||||||
|
for ws in ws_list:
|
||||||
|
ws.shutdown()
|
||||||
|
|
||||||
|
def send_ping():
|
||||||
|
for ws in ws_list:
|
||||||
|
ws.send_ping()
|
||||||
|
|
||||||
def start_threads():
|
def start_threads():
|
||||||
try:
|
try:
|
||||||
# Check for any existing sessions on start up
|
# Check for any existing sessions on start up
|
||||||
|
@ -80,15 +87,13 @@ def start_threads():
|
||||||
for owned_server in owned_servers:
|
for owned_server in owned_servers:
|
||||||
for server in plex_servers:
|
for server in plex_servers:
|
||||||
if owned_server.server_id == server['pms_identifier']:
|
if owned_server.server_id == server['pms_identifier']:
|
||||||
for connection in server['connections']:
|
wss=WebSocketServer(server['connections'], owned_server.server_id)
|
||||||
if connection['local']:
|
|
||||||
wss=WebSocketServer(connection, owned_server.server_id)
|
|
||||||
ws_list.append(wss)
|
ws_list.append(wss)
|
||||||
thread = threading.Thread(target=wss.run)
|
thread = threading.Thread(target=wss.run)
|
||||||
thread.daemon = True
|
thread.daemon = True
|
||||||
thread.start()
|
thread.start()
|
||||||
break
|
|
||||||
break
|
continue
|
||||||
|
|
||||||
|
|
||||||
class WebSocketServer(object):
|
class WebSocketServer(object):
|
||||||
|
@ -193,29 +198,20 @@ class WebSocketServer(object):
|
||||||
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
# try local first
|
||||||
if plexpy.CONFIG.PMS_SSL:
|
|
||||||
uri = ""
|
|
||||||
if self.server:
|
if self.server:
|
||||||
uri = self.server['uri'].replace('https://', 'wss://') + '/:/websockets/notifications'
|
for connection in self.server:
|
||||||
else:
|
if plexpy.CONFIG.PMS_SSL:
|
||||||
uri = plexpy.CONFIG.PMS_URL.replace('https://', 'wss://') + '/:/websockets/notifications'
|
uri = connection['uri'].replace('https://', 'wss://') + '/:/websockets/notifications'
|
||||||
secure = 'secure '
|
secure = 'secure '
|
||||||
if plexpy.CONFIG.VERIFY_SSL_CERT:
|
if plexpy.CONFIG.VERIFY_SSL_CERT:
|
||||||
sslopt = {'ca_certs': certifi.where()}
|
sslopt = {'ca_certs': certifi.where()}
|
||||||
else:
|
else:
|
||||||
sslopt = {'cert_reqs': ssl.CERT_NONE}
|
sslopt = {'cert_reqs': ssl.CERT_NONE}
|
||||||
else:
|
else:
|
||||||
uri = ""
|
|
||||||
if self.server:
|
|
||||||
uri = 'ws://%s:%s/:/websockets/notifications' % (
|
uri = 'ws://%s:%s/:/websockets/notifications' % (
|
||||||
self.server['address'],
|
connection['address'],
|
||||||
self.server['port']
|
connection['port']
|
||||||
)
|
|
||||||
else:
|
|
||||||
uri = 'ws://%s:%s/:/websockets/notifications' % (
|
|
||||||
plexpy.CONFIG.PMS_IP,
|
|
||||||
plexpy.CONFIG.PMS_PORT
|
|
||||||
)
|
)
|
||||||
secure = ''
|
secure = ''
|
||||||
sslopt = None
|
sslopt = None
|
||||||
|
@ -238,6 +234,7 @@ class WebSocketServer(object):
|
||||||
self.WEBSOCKET = create_connection(uri, timeout=timeout, header=header, sslopt=sslopt)
|
self.WEBSOCKET = create_connection(uri, timeout=timeout, header=header, sslopt=sslopt)
|
||||||
logger.info("Tautulli WebSocket :: Ready")
|
logger.info("Tautulli WebSocket :: Ready")
|
||||||
self.WS_CONNECTED = True
|
self.WS_CONNECTED = True
|
||||||
|
break
|
||||||
except (websocket.WebSocketException, IOError, Exception) as e:
|
except (websocket.WebSocketException, IOError, Exception) as e:
|
||||||
logger.error("Tautulli WebSocket :: %s.", e)
|
logger.error("Tautulli WebSocket :: %s.", e)
|
||||||
|
|
||||||
|
|
|
@ -3375,7 +3375,7 @@ class WebInterface(object):
|
||||||
# Get new server URLs for SSL communications and get new server friendly name
|
# Get new server URLs for SSL communications and get new server friendly name
|
||||||
if server_changed:
|
if server_changed:
|
||||||
plextv.get_server_resources()
|
plextv.get_server_resources()
|
||||||
if plexpy.WS_CONNECTED:
|
if web_socket.isServerUp():
|
||||||
web_socket.reconnect()
|
web_socket.reconnect()
|
||||||
|
|
||||||
# If first run, start websocket
|
# If first run, start websocket
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue