Increase amount of logging

This commit is contained in:
Odd Stråbø 2019-07-09 22:05:28 +02:00
parent c321b266f0
commit 9ae99de8dd
30 changed files with 641 additions and 620 deletions

View file

@ -138,6 +138,7 @@ class Database(object):
try:
loaded = self._get_database(databases[file]) if file in databases else file
except Exception as error:
LOG.exception(error)
for i in range(1, 10):
alt_file = "%s-%s" % (file, i)
@ -150,8 +151,8 @@ class Database(object):
loaded = None
break
except Exception:
pass
except Exception as error:
LOG.exception(error)
if discovered and discovered != loaded:

View file

@ -15,7 +15,6 @@ LOG = logging.getLogger("JELLYFIN."+__name__)
class JellyfinDatabase():
def __init__(self, cursor):
self.cursor = cursor
@ -105,7 +104,6 @@ class JellyfinDatabase():
def remove_wild_item(self, item_id):
self.cursor.execute(QU.delete_item_by_wild, (item_id + "%",))
def get_view_name(self, item_id):
try:
@ -113,6 +111,7 @@ class JellyfinDatabase():
return self.cursor.fetchone()[0]
except Exception as error:
LOG.exception(error)
return
def get_view(self, *args):
@ -159,7 +158,6 @@ class JellyfinDatabase():
self.cursor.execute(QU.get_version)
version = self.cursor.fetchone()[0]
except Exception as error:
pass
LOG.exception(error)
return version

View file

@ -73,7 +73,8 @@ def validate_view(library_id, item_id):
'Recursive': True,
'Ids': item_id
})
except Exception:
except Exception as error:
LOG.exception(error)
return False
return True if len(result['Items']) else False
@ -257,7 +258,7 @@ def _get_items(query, server_id=None):
items['TotalRecordCount'] = _get(url, test_params, server_id=server_id)['TotalRecordCount']
except Exception as error:
LOG.error("Failed to retrieve the server response %s: %s params:%s", url, error, params)
LOG.exception("Failed to retrieve the server response %s: %s params:%s", url, error, params)
else:
index = params.get('StartIndex', 0)
@ -397,8 +398,6 @@ def get_objects(src, filename):
LOG.error(error)
response = requests.get(src, stream=True, verify=False)
except Exception:
raise
dl = xbmcvfs.File(path, 'w')
dl.write(response.content)

View file

@ -137,7 +137,7 @@ class Service(xbmc.Monitor):
self.connect.register()
setup.Setup()
except Exception as error:
LOG.error(error)
LOG.exception(error)
def stop_default(self):
@ -361,7 +361,7 @@ class Service(xbmc.Monitor):
try:
self.connect.register()
except Exception as error:
LOG.error(error)
LOG.exception(error)
elif method == 'GUI.OnScreensaverDeactivated':

View file

@ -248,8 +248,9 @@ class FullSync(object):
raise
except Exception as error:
LOG.exception(error)
if not 'Failed to validate path' in error:
if 'Failed to validate path' not in error:
dialog("ok", heading="{jellyfin}", line1=_(33119))
LOG.error("full sync exited unexpectedly")

View file

@ -484,7 +484,7 @@ class PlayUtils(object):
try:
subs.append(self.download_external_subs(url, filename))
except Exception as error:
LOG.error(error)
LOG.exception(error)
subs.append(url)
else:
subs.append(url)
@ -512,7 +512,8 @@ class PlayUtils(object):
try:
response = requests.get(src, stream=True, verify=False)
response.raise_for_status()
except Exception as e:
except Exception as error:
LOG.exception(error)
raise
else:
response.encoding = 'utf-8'

View file

@ -266,7 +266,8 @@ def indent(elem, level=0):
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
except Exception:
except Exception as error:
LOG.exception(error)
return
def write_xml(content, file):
@ -447,6 +448,6 @@ def convert_to_local(date):
return date.strftime('%Y-%m-%dT%H:%M:%S')
except Exception as error:
LOG.error(error)
LOG.exception(error)
return str(date)

View file

@ -84,10 +84,11 @@ def stop(default=None):
def wrapper(*args, **kwargs):
try:
if should_stop():
if should_stop(): # ??? TODO: Fixme
raise Exception
except Exception as error:
LOG.exception(error)
if default is not None:
return default
@ -142,7 +143,8 @@ def library_check():
try:
views = self.jellyfin_db.get_views_by_media('music')[0]
except Exception:
except Exception as error:
LOG.exception(error)
return
view = {'Id': views[0], 'Name': views[1]}

View file

@ -112,6 +112,7 @@ class Jellyfin(object):
@ensure_client()
def __getitem__(self, key):
LOG.debug("__getitem__(%r)", key)
return self.client[self.server_id][key]
def construct(self):
@ -123,4 +124,5 @@ class Jellyfin(object):
else:
LOG.info("---[ START JELLYFINCLIENT: %s ]---", self.server_id)
config()

View file

@ -83,6 +83,7 @@ class JellyfinClient(object):
self.http.stop_session()
def __getitem__(self, key):
LOG.debug("__getitem__(%r)", key)
if key.startswith('config'):
return self.config[key.replace('config/', "", 1)] if "/" in key else self.config

View file

@ -334,6 +334,3 @@ class API(object):
return self._delete("Videos/ActiveEncodings", params={
'DeviceId': device_id
})
def delete_item(self, item_id):
return self.items("/%s" % item_id, "DELETE")

View file

@ -16,6 +16,7 @@ LOG = logging.getLogger('JELLYFIN.'+__name__)
#################################################################################################
class Config(object):
def __init__(self):
@ -25,6 +26,7 @@ class Config(object):
self.http()
def __shortcuts__(self, key):
LOG.debug("__shortcuts__(%r)", key)
if key == "auth":
return self.auth
@ -38,14 +40,16 @@ class Config(object):
return
def __getitem__(self, key):
LOG.debug("__getitem__(%r)", key)
return self.data.get(key, self.__shortcuts__(key))
def __setitem__(self, key, value):
self.data[key] = value
def app(self, name, version, device_name, device_id, capabilities=None, device_pixel_ratio=None):
LOG.info("Begin app constructor.")
# import traceback
# LOG.debug(''.join(['\n'] + traceback.format_stack()))
self.data['app.name'] = name
self.data['app.version'] = version

View file

@ -60,6 +60,7 @@ class ConnectionManager(object):
self.http = HTTP(client)
def __shortcuts__(self, key):
LOG.debug("__shortcuts__(%r)", key)
if key == "clear":
return self.clear_data
@ -97,6 +98,7 @@ class ConnectionManager(object):
return
def __getitem__(self, key):
LOG.debug("__getitem__(%r)", key)
return self.__shortcuts__(key)
def clear_data(self):
@ -164,7 +166,7 @@ class ConnectionManager(object):
result = self._request_url(request, False)
except Exception as error: # Failed to login
LOG.error(error)
LOG.exception(error)
return False
else:
self._on_authenticated(result, options)
@ -184,7 +186,8 @@ class ConnectionManager(object):
try:
public_info = self._try_connect(address, options=options)
except Exception:
except Exception as error:
LOG.exception(error)
return _on_fail()
else:
LOG.info("connectToAddress %s succeeded", address)
@ -258,7 +261,7 @@ class ConnectionManager(object):
try:
return self.http.request(request)
except Exception as error:
LOG.error(error)
LOG.exception(error)
raise
def _add_app_info(self):
@ -352,7 +355,7 @@ class ConnectionManager(object):
result = self._try_connect(address, timeout, options)
except Exception:
LOG.error("test failed for connection mode %s with server %s", mode, server.get('Name'))
LOG.exception("test failed for connection mode %s with server %s", mode, server.get('Name'))
if enable_retry:
# TODO: wake on lan and retry
@ -428,7 +431,7 @@ class ConnectionManager(object):
try:
sock.sendto(MESSAGE, MULTI_GROUP)
except Exception as error:
LOG.error(error)
LOG.exception(error)
return servers
while True:
@ -441,7 +444,7 @@ class ConnectionManager(object):
return servers
except Exception as e:
LOG.error("Error trying to find servers: %s", e)
LOG.exception("Error trying to find servers: %s", e)
return servers
def _get_last_used_server(self):
@ -579,6 +582,7 @@ class ConnectionManager(object):
})
self._update_server_info(server, system_info)
except Exception as error:
LOG.exception(error)
server['UserId'] = None
server['AccessToken'] = None

View file

@ -15,6 +15,7 @@ LOG = logging.getLogger('Jellyfin.'+__name__)
#################################################################################################
class HTTP(object):
session = None
@ -26,6 +27,7 @@ class HTTP(object):
self.config = client['config']
def __shortcuts__(self, key):
LOG.debug("__shortcuts__(%r)", key)
if key == "request":
return self.request

View file

@ -31,6 +31,7 @@ class WSClient(threading.Thread):
threading.Thread.__init__(self)
def __shortcuts__(self, key):
LOG.debug("__shortcuts__(%r)", key)
if key == "send":
return self.send

View file

@ -746,6 +746,7 @@ class WebSocket(object):
except socket.timeout as e:
raise WebSocketTimeoutException(e.args[0])
except Exception as e:
logger.exception(e)
if "timed out" in e.args[0]:
raise WebSocketTimeoutException(e.args[0])
else:
@ -893,12 +894,13 @@ class WebSocketApp(object):
break
self._callback(self.on_message, data)
except Exception, e:
#print str(e.args[0])
except Exception as e:
if "timed out" not in e.args[0]:
logger.exception(e)
raise e
except Exception, e:
except Exception as e:
logger.exception(e)
self._callback(self.on_error, e)
finally:
if thread:
@ -911,11 +913,8 @@ class WebSocketApp(object):
if callback:
try:
callback(self, *args)
except Exception, e:
logger.error(e)
if True:#logger.isEnabledFor(logging.DEBUG):
_, _, tb = sys.exc_info()
traceback.print_tb(tb)
except Exception as e:
logger.exception(e)
if __name__ == "__main__":

View file

@ -334,7 +334,7 @@ class Library(threading.Thread):
Views().get_nodes()
except Exception as error:
LOG.error(error)
LOG.exception(error)
elif not settings('SyncInstallRunDone.bool'):
@ -459,7 +459,7 @@ class Library(threading.Thread):
time_now = datetime.strptime(self.server['config/server-time'].split(', ', 1)[1], '%d %b %Y %H:%M:%S GMT') - timedelta(minutes=2)
except Exception as error:
LOG.error(error)
LOG.exception(error)
time_now = datetime.utcnow() - timedelta(minutes=2)
last_sync = time_now.strftime('%Y-%m-%dT%H:%M:%Sz')
@ -703,7 +703,9 @@ class SortWorker(threading.Thread):
try:
media = database.get_media_by_id(item_id)
self.output[media].put({'Id': item_id, 'Type': media})
except Exception:
except Exception as error:
LOG.exception(error)
items = database.get_media_by_parent_id(item_id)
if not items:

View file

@ -113,13 +113,14 @@ class Monitor(xbmc.Monitor):
self.server_instance(data['ServerId'])
except Exception as error:
LOG.error(error)
LOG.exception(error)
dialog("ok", heading="{jellyfin}", line1=_(33142))
return
server = Jellyfin(data['ServerId'])
except Exception:
except Exception as error:
LOG.exception(error)
server = Jellyfin()
if method == 'GetItem':
@ -328,7 +329,7 @@ class Monitor(xbmc.Monitor):
try:
session = server['api'].get_device(self.device_id)
except Exception as error:
LOG.error(error)
LOG.exception(error)
return

View file

@ -765,7 +765,7 @@ def on_play(data, server):
try:
file = player.getPlayingFile()
except Exception as error:
LOG.error(error)
LOG.exception(error)
return

View file

@ -211,8 +211,8 @@ class GetArtworkWorker(threading.Thread):
prep.url = "http://%s:%s/image/image://%s" % (self.kodi['host'], self.kodi['port'], url)
s.send(prep, timeout=(0.01, 0.01))
s.content # release the connection
except Exception:
pass
except Exception as error:
LOG.exception(error)
self.queue.task_done()

View file

@ -35,6 +35,7 @@ class Movies(KodiDb):
KodiDb.__init__(self, videodb.cursor)
def __getitem__(self, key):
LOG.debug("__getitem__(%r)", key)
if key == 'Movie':
return self.movie
@ -175,7 +176,7 @@ class Movies(KodiDb):
obj['Trailer'] = "plugin://plugin.video.youtube/play/?video_id=%s" % obj['Trailer'].rsplit('=', 1)[1]
except Exception as error:
LOG.error("Failed to get trailer: %s", error)
LOG.exception("Failed to get trailer: %s", error)
obj['Trailer'] = None
def get_path_filename(self, obj):

View file

@ -35,6 +35,7 @@ class Music(KodiDb):
KodiDb.__init__(self, musicdb.cursor)
def __getitem__(self, key):
LOG.debug("__getitem__(%r)", key)
if key in ('MusicArtist', 'AlbumArtist'):
return self.artist
@ -219,7 +220,7 @@ class Music(KodiDb):
self.artist(self.server['api'].get_item(temp_obj['Id']), library=None)
temp_obj['ArtistId'] = self.jellyfin_db.get_item_by_id(*values(temp_obj, QUEM.get_item_obj))[0]
except Exception as error:
LOG.error(error)
LOG.exception(error)
continue
self.update_artist_name(*values(temp_obj, QU.update_artist_name_obj))
@ -375,7 +376,7 @@ class Music(KodiDb):
self.artist(self.server['api'].get_item(temp_obj['Id']), library=None)
temp_obj['ArtistId'] = self.jellyfin_db.get_item_by_id(*values(temp_obj, QUEM.get_item_obj))[0]
except Exception as error:
LOG.error(error)
LOG.exception(error)
continue
self.link(*values(temp_obj, QU.update_link_obj))
@ -409,7 +410,7 @@ class Music(KodiDb):
self.artist(self.server['api'].get_item(temp_obj['Id']), library=None)
temp_obj['ArtistId'] = self.jellyfin_db.get_item_by_id(*values(temp_obj, QUEM.get_item_obj))[0]
except Exception as error:
LOG.error(error)
LOG.exception(error)
continue
self.link_song_artist(*values(temp_obj, QU.update_song_artist_obj))

View file

@ -35,6 +35,7 @@ class MusicVideos(KodiDb):
KodiDb.__init__(self, videodb.cursor)
def __getitem__(self, key):
LOG.debug("__getitem__(%r)", key)
if key == 'MusicVideo':
return self.musicvideo

View file

@ -38,6 +38,7 @@ class TVShows(KodiDb):
KodiDb.__init__(self, videodb.cursor)
def __getitem__(self, key):
LOG.debug("__getitem__(%r)", key)
if key == 'Series':
return self.tvshow

View file

@ -12,6 +12,7 @@ LOG = logging.getLogger("JELLYFIN."+__name__)
#################################################################################################
def get_play_action():
''' I could not figure out a way to listen to kodi setting changes?
@ -22,16 +23,14 @@ def get_play_action():
try:
return options[result['result']['value']]
except Exception as error:
log.error("Returning play action due to error: %s", error)
LOG.exception("Returning play action due to error: %s", error)
return options[1]
def get_grouped_set():
''' Get if boxsets should be grouped
'''
result = JSONRPC('Settings.GetSettingValue').execute({'setting': "videolibrary.groupmoviesets"})
try:
return result['result']['value']
except Exception as error:
return False
return result.get('result', {}).get('value', False)

View file

@ -193,7 +193,7 @@ class Player(xbmc.Player):
params = {
'playerid': 1,
'properties': ["currentsubtitle","currentaudiostream","subtitleenabled"]
'properties': ["currentsubtitle", "currentaudiostream", "subtitleenabled"]
}
result = JSONRPC('Player.GetProperties').execute(params)
result = result.get('result')

View file

@ -33,7 +33,7 @@ class WebService(threading.Thread):
conn.request("QUIT", "/")
conn.getresponse()
except Exception as error:
pass
LOG.exception(error)
def run(self):
@ -132,13 +132,13 @@ class requestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
self.wfile.write(path)
except IndexError as error:
LOG.exception(error)
xbmc.log(str(error), xbmc.LOGWARNING)
self.send_error(404, "Exception occurred: %s" % error)
except Exception as error:
LOG.exception(error)
xbmc.log(str(error), xbmc.LOGWARNING)
self.send_error(500, "Exception occurred: %s" % error)
return

View file

@ -64,10 +64,11 @@ class ServiceManager(threading.Thread):
service.service()
except Exception as error:
LOG.exception(error)
if service is not None:
if not 'ExitService' in error:
if 'ExitService' not in error:
service.shutdown()
if 'RestartService' in error:

View file

@ -1,3 +1,4 @@
[flake8]
max-line-length = 9999
import-order-style = pep8
exclude = ./.git,./.vscode,./libraries