diff --git a/SickBeard.py b/SickBeard.py index 41a03f743ba39db4d13fb4b41fcb81c6a2b485f3..a6662d489a0fb7620141214d64f18f487b039e1d 100755 --- a/SickBeard.py +++ b/SickBeard.py @@ -390,7 +390,7 @@ class SickRage(object): pid = os.fork() # @UndefinedVariable - only available in UNIX if pid != 0: os._exit(0) - except OSError, e: + except OSError as e: sys.stderr.write(u"fork #1 failed: %d (%s)\n" % (e.errno, e.strerror)) sys.exit(1) @@ -408,7 +408,7 @@ class SickRage(object): pid = os.fork() # @UndefinedVariable - only available in UNIX if pid != 0: os._exit(0) - except OSError, e: + except OSError as e: sys.stderr.write(u"fork #2 failed: %d (%s)\n" % (e.errno, e.strerror)) sys.exit(1) @@ -419,7 +419,7 @@ class SickRage(object): try: file(self.PIDFILE, 'w').write("%s\n" % pid) - except IOError, e: + except IOError as e: logger.log_error_and_exit( u"Unable to write PID file: " + self.PIDFILE + " Error: " + str(e.strerror) + " [" + str( e.errno) + "]") @@ -463,7 +463,7 @@ class SickRage(object): curShow = TVShow(int(sqlShow["indexer"]), int(sqlShow["indexer_id"])) curShow.nextEpisode() sickbeard.showList.append(curShow) - except Exception, e: + except Exception as e: logger.log( u"There was an error creating the show in " + sqlShow["location"] + ": " + str(e).decode('utf-8'), logger.ERROR) diff --git a/sickbeard/browser.py b/sickbeard/browser.py index 021adc81c76fa8e063d450141b1f737cae20afb9..7cba8f7927a1e41fb5d46a35ff907616770600d2 100644 --- a/sickbeard/browser.py +++ b/sickbeard/browser.py @@ -106,7 +106,7 @@ def foldersAtPath(path, includeParent=False, includeFiles=False): try: fileList = getFileList(path, includeFiles) - except OSError, e: + except OSError as e: logger.log(u"Unable to open " + path + ": " + repr(e) + " / " + str(e), logger.WARNING) fileList = getFileList(parentPath, includeFiles) diff --git a/sickbeard/clients/generic.py b/sickbeard/clients/generic.py index ca74035d81149482073f0585d87d4cc1fa635937..34a5d7ee08f5dce9432bcaa141435dfaa283b8b3 100644 --- a/sickbeard/clients/generic.py +++ b/sickbeard/clients/generic.py @@ -45,19 +45,19 @@ class GenericClient(object): try: self.response = self.session.__getattribute__(method)(self.url, params=params, data=data, files=files, timeout=120, verify=False) - except requests.exceptions.ConnectionError, e: + except requests.exceptions.ConnectionError as e: logger.log(self.name + u': Unable to connect ' + str(e), logger.ERROR) return False except (requests.exceptions.MissingSchema, requests.exceptions.InvalidURL): logger.log(self.name + u': Invalid Host', logger.ERROR) return False - except requests.exceptions.HTTPError, e: + except requests.exceptions.HTTPError as e: logger.log(self.name + u': Invalid HTTP Request ' + str(e), logger.ERROR) return False - except requests.exceptions.Timeout, e: + except requests.exceptions.Timeout as e: logger.log(self.name + u': Connection Timeout ' + str(e), logger.WARNING) return False - except Exception, e: + except Exception as e: logger.log(self.name + u': Unknown exception raised when send torrent to ' + self.name + ': ' + str(e), logger.ERROR) return False @@ -208,7 +208,7 @@ class GenericClient(object): if result.priority != 0 and not self._set_torrent_priority(result): logger.log(self.name + u': Unable to set priority for Torrent', logger.ERROR) - except Exception, e: + except Exception as e: logger.log(self.name + u': Failed Sending Torrent', logger.ERROR) logger.log(self.name + u': Exception raised when sending torrent: ' + str(result) + u'. Error: ' + str(e), logger.DEBUG) return r_code diff --git a/sickbeard/db.py b/sickbeard/db.py index 92d5e08189b2a6bcfe2717286c783a42941ed56a..ee4924fc34a76ac1871eb97eecf495db7f1682cc 100644 --- a/sickbeard/db.py +++ b/sickbeard/db.py @@ -151,7 +151,7 @@ class DBConnection(object): # finished break - except sqlite3.OperationalError, e: + except sqlite3.OperationalError as e: sqlResult = [] if self.connection: self.connection.rollback() @@ -162,7 +162,7 @@ class DBConnection(object): else: logger.log(u"DB error: " + ex(e), logger.ERROR) raise - except sqlite3.DatabaseError, e: + except sqlite3.DatabaseError as e: sqlResult = [] if self.connection: self.connection.rollback() @@ -202,7 +202,7 @@ class DBConnection(object): # get out of the connection attempt loop since we were successful break - except sqlite3.OperationalError, e: + except sqlite3.OperationalError as e: if "unable to open database file" in e.args[0] or "database is locked" in e.args[0]: logger.log(u"DB error: " + ex(e), logger.WARNING) attempt += 1 @@ -210,7 +210,7 @@ class DBConnection(object): else: logger.log(u"DB error: " + ex(e), logger.ERROR) raise - except sqlite3.DatabaseError, e: + except sqlite3.DatabaseError as e: logger.log(u"Fatal error executing query: " + ex(e), logger.ERROR) raise @@ -389,7 +389,7 @@ def _processUpgrade(connection, upgradeClass): logger.log(u"Database upgrade required: " + prettyName(upgradeClass.__name__), logger.DEBUG) try: instance.execute() - except sqlite3.DatabaseError, e: + except sqlite3.DatabaseError as e: # attemping to restore previous DB backup and perform upgrade try: instance.execute() diff --git a/sickbeard/event_queue.py b/sickbeard/event_queue.py index a2a56e93cedac640f64da6b4d7a2df35a1829b6e..8f60d3f4e2d859456933c0f00958c52554e2e4f8 100644 --- a/sickbeard/event_queue.py +++ b/sickbeard/event_queue.py @@ -46,7 +46,7 @@ class Events(threading.Thread): # exiting thread self.stop.clear() - except Exception, e: + except Exception as e: logger.log(u"Exception generated in thread " + self.name + ": " + ex(e), logger.ERROR) logger.log(repr(traceback.format_exc()), logger.DEBUG) diff --git a/sickbeard/failed_history.py b/sickbeard/failed_history.py index 47c53365e56e6a20ea1c493acdc76ce92f48d236..f504558cd7fa0866f696d02e2dd7db94815ff07a 100644 --- a/sickbeard/failed_history.py +++ b/sickbeard/failed_history.py @@ -137,7 +137,7 @@ def revertEpisode(epObj): epObj.status = WANTED epObj.saveToDB() - except EpisodeNotFoundException, e: + except EpisodeNotFoundException as e: logger.log(u"Unable to create episode, please set its status manually: " + ex(e), logger.WARNING) @@ -157,7 +157,7 @@ def markFailed(epObj): epObj.status = Quality.compositeStatus(FAILED, quality) epObj.saveToDB() - except EpisodeNotFoundException, e: + except EpisodeNotFoundException as e: logger.log(u"Unable to get episode, please set its status manually: " + ex(e), logger.WARNING) return log_str diff --git a/sickbeard/metadata/generic.py b/sickbeard/metadata/generic.py index c4d22bc051a73f2f11846c96e02d5ba3baefafaf..b2e11566c16344220b5f9302d0fbcb9f551c8a2d 100644 --- a/sickbeard/metadata/generic.py +++ b/sickbeard/metadata/generic.py @@ -288,7 +288,7 @@ class GenericMetadata(object): helpers.chmodAsParent(nfo_file_path) return True - except IOError, e: + except IOError as e: logger.log( u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e), logger.ERROR) @@ -415,7 +415,7 @@ class GenericMetadata(object): data.write(nfo_file, encoding='UTF-8') nfo_file.close() helpers.chmodAsParent(nfo_file_path) - except IOError, e: + except IOError as e: logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e), logger.ERROR) return False @@ -459,7 +459,7 @@ class GenericMetadata(object): data.write(nfo_file, encoding='UTF-8') nfo_file.close() helpers.chmodAsParent(nfo_file_path) - except IOError, e: + except IOError as e: logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e), logger.ERROR) return False @@ -707,7 +707,7 @@ class GenericMetadata(object): outFile.write(image_data) outFile.close() helpers.chmodAsParent(image_path) - except IOError, e: + except IOError as e: logger.log( u"Unable to write image to " + image_path + " - are you sure the show folder is writable? " + ex(e), logger.ERROR) @@ -743,7 +743,7 @@ class GenericMetadata(object): t = sickbeard.indexerApi(show_obj.indexer).indexer(**lINDEXER_API_PARMS) indexer_show_obj = t[show_obj.indexerid] - except (sickbeard.indexer_error, IOError), e: + except (sickbeard.indexer_error, IOError) as e: logger.log(u"Unable to look up show on " + sickbeard.indexerApi( show_obj.indexer).name + ", not downloading images: " + ex(e), logger.WARNING) logger.log(u"Indexer " + sickbeard.indexerApi(show_obj.indexer).name + "maybe experiencing some problems. Try again later", logger.DEBUG) @@ -813,7 +813,7 @@ class GenericMetadata(object): t = sickbeard.indexerApi(show_obj.indexer).indexer(**lINDEXER_API_PARMS) indexer_show_obj = t[show_obj.indexerid] - except (sickbeard.indexer_error, IOError), e: + except (sickbeard.indexer_error, IOError) as e: logger.log(u"Unable to look up show on " + sickbeard.indexerApi( show_obj.indexer).name + ", not downloading images: " + ex(e), logger.WARNING) logger.log(u"Indexer " + sickbeard.indexerApi(show_obj.indexer).name + "maybe experiencing some problems. Try again later", logger.DEBUG) @@ -867,7 +867,7 @@ class GenericMetadata(object): t = sickbeard.indexerApi(show_obj.indexer).indexer(**lINDEXER_API_PARMS) indexer_show_obj = t[show_obj.indexerid] - except (sickbeard.indexer_error, IOError), e: + except (sickbeard.indexer_error, IOError) as e: logger.log(u"Unable to look up show on " + sickbeard.indexerApi( show_obj.indexer).name + ", not downloading images: " + ex(e), logger.WARNING) logger.log(u"Indexer " + sickbeard.indexerApi(show_obj.indexer).name + "maybe experiencing some problems. Try again later", logger.DEBUG) @@ -946,7 +946,7 @@ class GenericMetadata(object): logger.log(u"Invalid Indexer ID (" + str(indexer_id) + "), not using metadata file because it has TVRage info", logger.WARNING) return empty_return - except Exception, e: + except Exception as e: logger.log( u"There was an error parsing your existing metadata file: '" + metadata_path + "' error: " + ex(e), logger.WARNING) diff --git a/sickbeard/metadata/kodi_12plus.py b/sickbeard/metadata/kodi_12plus.py index 2b1eda1500957a013d68517727595a8ad3903683..673c1faa6ffb15a226888ca3f90fe789a956a594 100644 --- a/sickbeard/metadata/kodi_12plus.py +++ b/sickbeard/metadata/kodi_12plus.py @@ -256,9 +256,9 @@ class KODI_12PlusMetadata(generic.GenericMetadata): try: t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS) myShow = t[ep_obj.show.indexerid] - except sickbeard.indexer_shownotfound, e: + except sickbeard.indexer_shownotfound as e: raise ShowNotFoundException(e.message) - except sickbeard.indexer_error, e: + except sickbeard.indexer_error as e: logger.log(u"Unable to connect to " + sickbeard.indexerApi( ep_obj.show.indexer).name + " while creating meta files - skipping - " + ex(e), logger.ERROR) return diff --git a/sickbeard/metadata/mede8er.py b/sickbeard/metadata/mede8er.py index f24e5f14c8cca9b570b043a63abab6b94692ae14..2f924f982f5628c569a1d346ab3a13af31d834ca 100644 --- a/sickbeard/metadata/mede8er.py +++ b/sickbeard/metadata/mede8er.py @@ -231,9 +231,9 @@ class Mede8erMetadata(mediabrowser.MediaBrowserMetadata): t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS) myShow = t[ep_obj.show.indexerid] - except sickbeard.indexer_shownotfound, e: + except sickbeard.indexer_shownotfound as e: raise ShowNotFoundException(e.message) - except sickbeard.indexer_error, e: + except sickbeard.indexer_error as e: logger.log(u"Unable to connect to TVDB while creating meta files - skipping - " + ex(e), logger.ERROR) return False @@ -384,7 +384,7 @@ class Mede8erMetadata(mediabrowser.MediaBrowserMetadata): data.write(nfo_file) nfo_file.close() helpers.chmodAsParent(nfo_file_path) - except IOError, e: + except IOError as e: logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e), logger.ERROR) return False @@ -429,7 +429,7 @@ class Mede8erMetadata(mediabrowser.MediaBrowserMetadata): data.write(nfo_file) nfo_file.close() helpers.chmodAsParent(nfo_file_path) - except IOError, e: + except IOError as e: logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e), logger.ERROR) return False diff --git a/sickbeard/metadata/mediabrowser.py b/sickbeard/metadata/mediabrowser.py index a917a4b47aa3354d0438e35710f72e89aa7de445..f053d00e51ce559c6409ef5c30b9f8cd90074f8a 100644 --- a/sickbeard/metadata/mediabrowser.py +++ b/sickbeard/metadata/mediabrowser.py @@ -424,9 +424,9 @@ class MediaBrowserMetadata(generic.GenericMetadata): t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS) myShow = t[ep_obj.show.indexerid] - except sickbeard.indexer_shownotfound, e: + except sickbeard.indexer_shownotfound as e: raise ShowNotFoundException(e.message) - except sickbeard.indexer_error, e: + except sickbeard.indexer_error as e: logger.log(u"Unable to connect to " + sickbeard.indexerApi( ep_obj.show.indexer).name + " while creating meta files - skipping - " + ex(e), logger.ERROR) return False diff --git a/sickbeard/metadata/tivo.py b/sickbeard/metadata/tivo.py index 2d8051db37fa8bd0f0ea398a8e2cb22be99808b9..0fe70790143f6645a8c5129df5f1eaf19b08bdbb 100644 --- a/sickbeard/metadata/tivo.py +++ b/sickbeard/metadata/tivo.py @@ -183,9 +183,9 @@ class TIVOMetadata(generic.GenericMetadata): t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS) myShow = t[ep_obj.show.indexerid] - except sickbeard.indexer_shownotfound, e: + except sickbeard.indexer_shownotfound as e: raise ShowNotFoundException(str(e)) - except sickbeard.indexer_error, e: + except sickbeard.indexer_error as e: logger.log(u"Unable to connect to " + sickbeard.indexerApi( ep_obj.show.indexer).name + " while creating meta files - skipping - " + str(e), logger.ERROR) return False @@ -327,7 +327,7 @@ class TIVOMetadata(generic.GenericMetadata): helpers.chmodAsParent(nfo_file_path) - except EnvironmentError, e: + except EnvironmentError as e: logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e), logger.ERROR) return False diff --git a/sickbeard/metadata/wdtv.py b/sickbeard/metadata/wdtv.py index 34c9cb539ab1d263eba6a890a92a11784bc5d9cc..1fea81914b1b6507f352416c5c4df85aa70ca7a8 100644 --- a/sickbeard/metadata/wdtv.py +++ b/sickbeard/metadata/wdtv.py @@ -199,9 +199,9 @@ class WDTVMetadata(generic.GenericMetadata): t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS) myShow = t[ep_obj.show.indexerid] - except sickbeard.indexer_shownotfound, e: + except sickbeard.indexer_shownotfound as e: raise ShowNotFoundException(e.message) - except sickbeard.indexer_error, e: + except sickbeard.indexer_error as e: logger.log(u"Unable to connect to " + sickbeard.indexerApi( ep_obj.show.indexer).name + " while creating meta files - skipping - " + ex(e), logger.ERROR) return False diff --git a/sickbeard/name_parser/parser.py b/sickbeard/name_parser/parser.py index 5284c09d8c28149ea91e898213952c1d5d55d64a..83f8becad1670c47401689c3d80f0225ac8daeb7 100644 --- a/sickbeard/name_parser/parser.py +++ b/sickbeard/name_parser/parser.py @@ -245,7 +245,7 @@ class NameParser(object): except sickbeard.indexer_episodenotfound: logger.log(u"Unable to find episode with date " + str(bestResult.air_date) + " for show " + bestResult.show.name + ", skipping", logger.WARNING) episode_numbers = [] - except sickbeard.indexer_error, e: + except sickbeard.indexer_error as e: logger.log(u"Unable to contact " + sickbeard.indexerApi(bestResult.show.indexer).name + ": " + ex(e), logger.WARNING) episode_numbers = [] diff --git a/sickbeard/notifiers/emby.py b/sickbeard/notifiers/emby.py index f233ed75d538b1d824f058bc9df6e5b141f8826a..acfbcc300a187bee6a49d061d30c9772c2b6b7d6 100644 --- a/sickbeard/notifiers/emby.py +++ b/sickbeard/notifiers/emby.py @@ -63,7 +63,7 @@ class EMBYNotifier(object): logger.log(u'EMBY: HTTP response: ' + result.replace('\n', ''), logger.DEBUG) return True - except (urllib2.URLError, IOError), e: + except (urllib2.URLError, IOError) as e: logger.log(u'EMBY: Warning: Couldn\'t contact Emby at ' + url + ' ' + ex(e), logger.WARNING) return False @@ -116,7 +116,7 @@ class EMBYNotifier(object): logger.log(u'EMBY: HTTP response: ' + result.replace('\n', ''), logger.DEBUG) return True - except (urllib2.URLError, IOError), e: + except (urllib2.URLError, IOError) as e: logger.log(u'EMBY: Warning: Couldn\'t contact Emby at ' + url + ' ' + ex(e), logger.WARNING) return False diff --git a/sickbeard/notifiers/freemobile.py b/sickbeard/notifiers/freemobile.py index bf9ac00b4bb0ae5a85aaad1c0adb145ec60a281d..75c42df2e4d4d506833c497f5ca6e38d8293ed3f 100644 --- a/sickbeard/notifiers/freemobile.py +++ b/sickbeard/notifiers/freemobile.py @@ -57,7 +57,7 @@ class FreeMobileNotifier(object): # send the request to Free Mobile try: urllib2.urlopen(req) - except IOError, e: + except IOError as e: if hasattr(e, 'code'): if e.code == 400: message = "Missing parameter(s)." @@ -75,7 +75,7 @@ class FreeMobileNotifier(object): message = "Server error. Please retry in few moment." logger.log(message, logger.ERROR) return False, message - except Exception, e: + except Exception as e: message = u"Error while sending SMS: {0}".format(e) logger.log(message, logger.ERROR) return False, message diff --git a/sickbeard/notifiers/growl.py b/sickbeard/notifiers/growl.py index aa86c8aa6ec2672083679d0a1471d0920427f08a..94742af06023ea780ab7d448e93f45b071646ff7 100644 --- a/sickbeard/notifiers/growl.py +++ b/sickbeard/notifiers/growl.py @@ -148,7 +148,7 @@ class GrowlNotifier(object): return self._send_growl(opts, message) else: return False - except Exception, e: + except Exception as e: logger.log(u"GROWL: Unable to send growl to " + opts['host'] + ":" + str(opts['port']) + " - " + ex(e), logger.WARNING) return False @@ -191,7 +191,7 @@ class GrowlNotifier(object): try: return self._send(opts['host'], opts['port'], register.encode(), opts['debug']) - except Exception, e: + except Exception as e: logger.log(u"GROWL: Unable to send growl to " + opts['host'] + ":" + str(opts['port']) + " - " + ex(e), logger.WARNING) return False diff --git a/sickbeard/notifiers/kodi.py b/sickbeard/notifiers/kodi.py index 2e9f36b022b508a27d5c2d6e43b1e88865ec5a13..2e5bd4ede13c97b534e7e50f3427df175c940e76 100644 --- a/sickbeard/notifiers/kodi.py +++ b/sickbeard/notifiers/kodi.py @@ -306,7 +306,7 @@ class KODINotifier(object): encSqlXML = urllib.quote(sqlXML, ':\\/<>') try: et = etree.fromstring(encSqlXML) - except SyntaxError, e: + except SyntaxError as e: logger.log(u"Unable to parse XML returned from KODI: " + ex(e), logger.ERROR) return False @@ -386,7 +386,7 @@ class KODINotifier(object): try: response = urllib2.urlopen(req) - except (httplib.BadStatusLine, urllib2.URLError), e: + except (httplib.BadStatusLine, urllib2.URLError) as e: if sickbeard.KODI_ALWAYS_ON: logger.log(u"Error while trying to retrieve KODI API version for " + host + ": " + ex(e), logger.WARNING) return False @@ -397,11 +397,11 @@ class KODINotifier(object): response.close() logger.log(u"KODI JSON response: " + str(result), logger.DEBUG) return result # need to return response for parsing - except ValueError, e: + except ValueError as e: logger.log(u"Unable to decode JSON: " + str(response.read()), logger.WARNING) return False - except IOError, e: + except IOError as e: if sickbeard.KODI_ALWAYS_ON: logger.log(u"Warning: Couldn't contact KODI JSON API at " + ss(url) + " " + ex(e), logger.WARNING) return False diff --git a/sickbeard/notifiers/libnotify.py b/sickbeard/notifiers/libnotify.py index 40a6c1c69ba63425362a224bcc35fec518412fd2..16e5d57941ff6982abcc2f18c7255c25de06486e 100644 --- a/sickbeard/notifiers/libnotify.py +++ b/sickbeard/notifiers/libnotify.py @@ -47,13 +47,13 @@ def diagnose(): else: try: bus = dbus.SessionBus() - except dbus.DBusException, e: + except dbus.DBusException as e: return (u"<p>Error: unable to connect to D-Bus session bus: <code>%s</code>." u"<p>Are you running SickRage in a desktop session?") % (cgi.escape(e),) try: bus.get_object('org.freedesktop.Notifications', '/org/freedesktop/Notifications') - except dbus.DBusException, e: + except dbus.DBusException as e: return (u"<p>Error: there doesn't seem to be a notification daemon available: <code>%s</code> " u"<p>Try installing notification-daemon or notify-osd.") % (cgi.escape(e),) return u"<p>Error: Unable to send notification." diff --git a/sickbeard/notifiers/nmj.py b/sickbeard/notifiers/nmj.py index 47e8309f1b927d96704f6edc19861ad5802f958e..c9ddbda4a096e2bbf387f2d8d45097aefdb42576 100644 --- a/sickbeard/notifiers/nmj.py +++ b/sickbeard/notifiers/nmj.py @@ -124,13 +124,13 @@ class NMJNotifier(object): req = urllib2.Request(mount) logger.log(u"Try to mount network drive via url: %s" % mount, logger.DEBUG) handle = urllib2.urlopen(req) - except IOError, e: + except IOError as e: if hasattr(e, 'reason'): logger.log(u"NMJ: Could not contact Popcorn Hour on host %s: %s" % (host, e.reason), logger.WARNING) elif hasattr(e, 'code'): logger.log(u"NMJ: Problem with Popcorn Hour on host %s: %s" % (host, e.code), logger.WARNING) return False - except Exception, e: + except Exception as e: logger.log(u"NMJ: Unknown exception: " + ex(e), logger.ERROR) return False @@ -151,13 +151,13 @@ class NMJNotifier(object): logger.log(u"Sending NMJ scan update command via url: %s" % updateUrl, logger.DEBUG) handle = urllib2.urlopen(req) response = handle.read() - except IOError, e: + except IOError as e: if hasattr(e, 'reason'): logger.log(u"NMJ: Could not contact Popcorn Hour on host %s: %s" % (host, e.reason), logger.WARNING) elif hasattr(e, 'code'): logger.log(u"NMJ: Problem with Popcorn Hour on host %s: %s" % (host, e.code), logger.WARNING) return False - except Exception, e: + except Exception as e: logger.log(u"NMJ: Unknown exception: " + ex(e), logger.ERROR) return False @@ -165,7 +165,7 @@ class NMJNotifier(object): try: et = etree.fromstring(response) result = et.findtext("returnValue") - except SyntaxError, e: + except SyntaxError as e: logger.log(u"Unable to parse XML returned from the Popcorn Hour: %s" % e, logger.ERROR) return False diff --git a/sickbeard/notifiers/nmjv2.py b/sickbeard/notifiers/nmjv2.py index 9a4d57fddefb1db3d5d630cb4acb4f8faee31954..5ac7bfc3b9ee3039296ac8916909646769f9134d 100644 --- a/sickbeard/notifiers/nmjv2.py +++ b/sickbeard/notifiers/nmjv2.py @@ -93,7 +93,7 @@ class NMJv2Notifier(object): sickbeard.NMJv2_DATABASE = DB_path return True - except IOError, e: + except IOError as e: logger.log(u"Warning: Couldn't contact popcorn hour on host %s: %s" % (host, e), logger.WARNING) return False return False @@ -122,19 +122,19 @@ class NMJv2Notifier(object): time.sleep(300.0 / 1000.0) handle2 = urllib2.urlopen(req) response2 = handle2.read() - except IOError, e: + except IOError as e: logger.log(u"Warning: Couldn't contact popcorn hour on host %s: %s" % (host, e), logger.WARNING) return False try: et = etree.fromstring(response1) result1 = et.findtext("returnValue") - except SyntaxError, e: + except SyntaxError as e: logger.log(u"Unable to parse XML returned from the Popcorn Hour: update_scandir, %s" % e, logger.ERROR) return False try: et = etree.fromstring(response2) result2 = et.findtext("returnValue") - except SyntaxError, e: + except SyntaxError as e: logger.log(u"Unable to parse XML returned from the Popcorn Hour: scanner_start, %s" % e, logger.ERROR) return False diff --git a/sickbeard/notifiers/plex.py b/sickbeard/notifiers/plex.py index e0e0987b182e3d554b5dd2faeef01e9e085e9b1d..0202013f215365381fc22c902f5d2e78297dca25 100644 --- a/sickbeard/notifiers/plex.py +++ b/sickbeard/notifiers/plex.py @@ -89,7 +89,7 @@ class PLEXNotifier(object): # could return result response = re.compile('<html><li>(.+\w)</html>').findall(result) return 'OK' - except (urllib2.URLError, IOError), e: + except (urllib2.URLError, IOError) as e: logger.log(u'PLEX: Warning: Couldn\'t contact Plex at ' + url + ' ' + ex(e), logger.WARNING) return False @@ -232,7 +232,7 @@ class PLEXNotifier(object): try: xml_tree = etree.parse(urllib.urlopen(url)) media_container = xml_tree.getroot() - except IOError, e: + except IOError as e: logger.log(u'PLEX: Error while trying to contact Plex Media Server: ' + ex(e), logger.WARNING) hosts_failed.append(cur_host) continue @@ -274,7 +274,7 @@ class PLEXNotifier(object): try: force and urllib.urlopen(url) host_list.append(cur_host) - except Exception, e: + except Exception as e: logger.log(u'PLEX: Error updating library section for Plex Media Server: ' + ex(e), logger.WARNING) hosts_failed.append(cur_host) diff --git a/sickbeard/notifiers/pushover.py b/sickbeard/notifiers/pushover.py index 6c3e22a4ed2933c8290506b61d857b48a1ab9711..064ac46f3f89318306b8188c9646d2973498ae08 100644 --- a/sickbeard/notifiers/pushover.py +++ b/sickbeard/notifiers/pushover.py @@ -94,7 +94,7 @@ class PushoverNotifier(object): conn.request("POST", "/1/messages.json", urllib.urlencode(args), {"Content-type": "application/x-www-form-urlencoded"}) - except urllib2.HTTPError, e: + except urllib2.HTTPError as e: # if we get an error back that doesn't have an error code then who knows what's really happening if not hasattr(e, 'code'): logger.log(u"Pushover notification failed." + ex(e), logger.ERROR) diff --git a/sickbeard/notifiers/pytivo.py b/sickbeard/notifiers/pytivo.py index c6fd68d6151ee4757a02edfc4cef7b58e9483d92..1c28eccfc322c8392c412e8004a5a5c85b235f1f 100644 --- a/sickbeard/notifiers/pytivo.py +++ b/sickbeard/notifiers/pytivo.py @@ -94,14 +94,14 @@ class pyTivoNotifier(object): try: response = urlopen(request) # @UnusedVariable - except HTTPError, e: + except HTTPError as e: if hasattr(e, 'reason'): logger.log(u"pyTivo notification: Error, failed to reach a server - " + e.reason, logger.ERROR) return False elif hasattr(e, 'code'): logger.log(u"pyTivo notification: Error, the server couldn't fulfill the request - " + e.code, logger.ERROR) return False - except Exception, e: + except Exception as e: logger.log(u"PYTIVO: Unknown exception: " + ex(e), logger.ERROR) return False else: diff --git a/sickbeard/notifiers/synoindex.py b/sickbeard/notifiers/synoindex.py index 30c844feb5af6443a79466015a5bc64c986412ee..abdee673a4f06c4137a84fc93443c8274c49ed04 100644 --- a/sickbeard/notifiers/synoindex.py +++ b/sickbeard/notifiers/synoindex.py @@ -61,7 +61,7 @@ class synoIndexNotifier(object): cwd=sickbeard.PROG_DIR) out, err = p.communicate() # @UnusedVariable logger.log(u"Script result: " + str(out), logger.DEBUG) - except OSError, e: + except OSError as e: logger.log(u"Unable to run synoindex: " + ex(e), logger.ERROR) def deleteFolder(self, cur_path): @@ -86,7 +86,7 @@ class synoIndexNotifier(object): cwd=sickbeard.PROG_DIR) out, err = p.communicate() # @UnusedVariable logger.log(u"Script result: " + str(out), logger.DEBUG) - except OSError, e: + except OSError as e: logger.log(u"Unable to run synoindex: " + ex(e), logger.ERROR) diff --git a/sickbeard/notifiers/synologynotifier.py b/sickbeard/notifiers/synologynotifier.py index cadac287d19021cbd7402695b9fc88fac1d9a191..bbdcfbb82cd238da5d0d5691419d76c35c4f51a4 100644 --- a/sickbeard/notifiers/synologynotifier.py +++ b/sickbeard/notifiers/synologynotifier.py @@ -62,7 +62,7 @@ class synologyNotifier(object): cwd=sickbeard.PROG_DIR) out, err = p.communicate() # @UnusedVariable logger.log(u"Script result: " + str(out), logger.DEBUG) - except OSError, e: + except OSError as e: logger.log(u"Unable to run synodsmnotify: " + ex(e)) diff --git a/sickbeard/notifiers/tweet.py b/sickbeard/notifiers/tweet.py index 0f114758019cda43527390b51191f5e54a28bfe3..9005a66411aee1e91356572bfdb094d6d30c657c 100644 --- a/sickbeard/notifiers/tweet.py +++ b/sickbeard/notifiers/tweet.py @@ -136,7 +136,7 @@ class TwitterNotifier(object): try: api.PostUpdate(message.encode('utf8')[:139]) - except Exception, e: + except Exception as e: logger.log(u"Error Sending Tweet: " + ex(e), logger.ERROR) return False @@ -156,7 +156,7 @@ class TwitterNotifier(object): try: api.PostDirectMessage(dmdest, message.encode('utf8')[:139]) - except Exception, e: + except Exception as e: logger.log(u"Error Sending Tweet (DM): " + ex(e), logger.ERROR) return False diff --git a/sickbeard/nzbget.py b/sickbeard/nzbget.py index 2f14ad625dc350ab887b9152563af9dc012e2f93..b8bc568eb9f8d380aa11e21ebaa0c8a232a3a8e1 100644 --- a/sickbeard/nzbget.py +++ b/sickbeard/nzbget.py @@ -67,7 +67,7 @@ def sendNZB(nzb, proper=False): logger.WARNING) return False - except xmlrpclib.ProtocolError, e: + except xmlrpclib.ProtocolError as e: if e.errmsg == "Unauthorized": logger.log(u"NZBget username or password is incorrect.", logger.WARNING) else: diff --git a/sickbeard/postProcessor.py b/sickbeard/postProcessor.py index 470fdbc697c7f2ca623c1563e82465e5e723d2a8..8b0343b1e9c336d5ee0007bb906472baf26d38f8 100644 --- a/sickbeard/postProcessor.py +++ b/sickbeard/postProcessor.py @@ -390,7 +390,7 @@ class PostProcessor(object): try: helpers.moveFile(cur_file_path, new_file_path) helpers.chmodAsParent(new_file_path) - except (IOError, OSError), e: + except (IOError, OSError) as e: self._log("Unable to move file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR) raise @@ -413,7 +413,7 @@ class PostProcessor(object): try: helpers.copyFile(cur_file_path, new_file_path) helpers.chmodAsParent(new_file_path) - except (IOError, OSError), e: + except (IOError, OSError) as e: logger.log(u"Unable to copy file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR) raise @@ -436,7 +436,7 @@ class PostProcessor(object): try: helpers.hardlinkFile(cur_file_path, new_file_path) helpers.chmodAsParent(new_file_path) - except (IOError, OSError), e: + except (IOError, OSError) as e: self._log("Unable to link file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR) raise @@ -458,7 +458,7 @@ class PostProcessor(object): try: helpers.moveAndSymlinkFile(cur_file_path, new_file_path) helpers.chmodAsParent(new_file_path) - except (IOError, OSError), e: + except (IOError, OSError) as e: self._log("Unable to link file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR) raise @@ -611,7 +611,7 @@ class PostProcessor(object): self._log(u"Adding the file to the anidb mylist", logger.DEBUG) try: self.anidbEpisode.add_to_mylist(status=1) # status = 1 sets the status of the file to "internal HDD" - except Exception, e: + except Exception as e: self._log(u"exception msg: " + str(e)) def _find_info(self): @@ -649,7 +649,7 @@ class PostProcessor(object): try: (cur_show, cur_season, cur_episodes, cur_quality, cur_version) = cur_attempt() - except (InvalidNameException, InvalidShowException), e: + except (InvalidNameException, InvalidShowException) as e: logger.log(u"Unable to parse, skipping: " + ex(e), logger.DEBUG) continue @@ -739,7 +739,7 @@ class PostProcessor(object): curEp = show.getEpisode(season, cur_episode) if not curEp: raise EpisodeNotFoundException() - except EpisodeNotFoundException, e: + except EpisodeNotFoundException as e: self._log(u"Unable to create episode: " + ex(e), logger.DEBUG) raise EpisodePostProcessingFailedException() @@ -838,10 +838,10 @@ class PostProcessor(object): out, _ = p.communicate() # @UnusedVariable self._log(u"Script result: " + str(out), logger.DEBUG) - except OSError, e: + except OSError as e: self._log(u"Unable to run extra_script: " + ex(e)) - except Exception, e: + except Exception as e: self._log(u"Unable to run extra_script: " + ex(e)) def _is_priority(self, ep_obj, new_ep_quality): diff --git a/sickbeard/processTV.py b/sickbeard/processTV.py index 7943e1b53d226e67d7411af900b9d2a289b4867a..fd69dadf753391d432fef39f089ec6c2498b1f80 100644 --- a/sickbeard/processTV.py +++ b/sickbeard/processTV.py @@ -80,14 +80,14 @@ def delete_folder(folder, check_empty=True): try: logger.log(u"Deleting folder (if it's empty): " + folder) ek(os.rmdir, folder) - except (OSError, IOError), e: + except (OSError, IOError) as e: logger.log(u"Warning: unable to delete folder: " + folder + ": " + ex(e), logger.WARNING) return False else: try: logger.log(u"Deleting folder: " + folder) shutil.rmtree(folder) - except (OSError, IOError), e: + except (OSError, IOError) as e: logger.log(u"Warning: unable to delete folder: " + folder + ": " + ex(e), logger.WARNING) return False @@ -126,11 +126,11 @@ def delete_files(processPath, notwantedFiles, result, force=False): result.output += logHelper(u"Changing ReadOnly Flag for file " + cur_file, logger.DEBUG) try: ek(os.chmod, cur_file_path, stat.S_IWRITE) - except OSError, e: + except OSError as e: result.output += logHelper(u"Cannot change permissions of " + cur_file_path + ': ' + ex(e), logger.DEBUG) try: ek(os.remove, cur_file_path) - except OSError, e: + except OSError as e: result.output += logHelper(u"Unable to delete file " + cur_file + ': ' + str(e.strerror), logger.DEBUG) @@ -464,7 +464,7 @@ def unRAR(path, rarFiles, force, result): # pylint: disable=too-many-branches,t result.result = False result.missedfiles.append(archive + " : Unpacking Failed with an Invalid Rar Archive Error") continue - except Exception, e: + except Exception as e: result.output += logHelper(u"Failed Unrar archive " + archive + ': ' + ex(e), logger.ERROR) result.result = False result.missedfiles.append(archive + " : Unpacking failed for an unknown reason") @@ -553,7 +553,7 @@ def process_media(processPath, videoFiles, nzbName, process_method, force, is_pr result.result = processor.process() process_fail_message = "" - except EpisodePostProcessingFailedException, e: + except EpisodePostProcessingFailedException as e: result.result = False process_fail_message = ex(e) @@ -607,7 +607,7 @@ def process_failed(dirName, nzbName, result): processor = failedProcessor.FailedProcessor(dirName, nzbName) result.result = processor.process() process_fail_message = "" - except FailedPostProcessingFailedException, e: + except FailedPostProcessingFailedException as e: result.result = False process_fail_message = ex(e) diff --git a/sickbeard/properFinder.py b/sickbeard/properFinder.py index 183608d342b36ca87156f1c796686ead2cf961ea..44cec35c625731947a9bce4a4efcaf53fbd7d748 100644 --- a/sickbeard/properFinder.py +++ b/sickbeard/properFinder.py @@ -87,10 +87,10 @@ class ProperFinder: try: curPropers = curProvider.find_propers(search_date) - except AuthException, e: + except AuthException as e: logger.log(u"Authentication error: " + ex(e), logger.DEBUG) continue - except Exception, e: + except Exception as e: logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.DEBUG) logger.log(traceback.format_exc(), logger.DEBUG) continue diff --git a/sickbeard/providers/bluetigers.py b/sickbeard/providers/bluetigers.py index c3af540e1150240bac584fef9cecae73de518369..d17bb8027e9574061c9cba44d53cc72610acc089 100644 --- a/sickbeard/providers/bluetigers.py +++ b/sickbeard/providers/bluetigers.py @@ -133,7 +133,7 @@ class BLUETIGERSProvider(TorrentProvider): items[mode].append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR) # For each search mode sort all the items by seeders if available diff --git a/sickbeard/providers/cpasbien.py b/sickbeard/providers/cpasbien.py index c826b9411be36254824d069af424e835218b3cc2..3c1c1f91ee3ffc210a65297e80198b2d16248736 100644 --- a/sickbeard/providers/cpasbien.py +++ b/sickbeard/providers/cpasbien.py @@ -105,7 +105,7 @@ class CpasbienProvider(TorrentProvider): items[mode].append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR) # For each search mode sort all the items by seeders if available diff --git a/sickbeard/providers/fnt.py b/sickbeard/providers/fnt.py index 95a78a1a8c8640f7e41fd63d8f8422724fcaf7c1..29629b46bd5ca749a0fe956f7a8d62fd6e21d470 100644 --- a/sickbeard/providers/fnt.py +++ b/sickbeard/providers/fnt.py @@ -143,7 +143,7 @@ class FNTProvider(TorrentProvider): items[mode].append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR) # For each search mode sort all the items by seeders if available diff --git a/sickbeard/providers/gftracker.py b/sickbeard/providers/gftracker.py index c2fecc7148f0c0a525988adab96dc8fdb80167f2..1a154a24073b989f1e51486ec421075eb910ae3a 100644 --- a/sickbeard/providers/gftracker.py +++ b/sickbeard/providers/gftracker.py @@ -154,7 +154,7 @@ class GFTrackerProvider(TorrentProvider): items[mode].append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR) # For each search mode sort all the items by seeders if available diff --git a/sickbeard/providers/iptorrents.py b/sickbeard/providers/iptorrents.py index 9043e86fabdc0342959e9018fa989da7a3ef4ed5..8f1541ab502ca6ce2c73d5f64dbeaba9845bc5b9 100644 --- a/sickbeard/providers/iptorrents.py +++ b/sickbeard/providers/iptorrents.py @@ -144,7 +144,7 @@ class IPTorrentsProvider(TorrentProvider): items[mode].append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Error: %r" % ex(e), logger.ERROR) # For each search mode sort all the items by seeders if available diff --git a/sickbeard/providers/morethantv.py b/sickbeard/providers/morethantv.py index 13f885a5c60cf9e9060ec4b0b7c08f658cf96880..3163a0c0c267f1a22ae9d04325d5661ddefaa229 100644 --- a/sickbeard/providers/morethantv.py +++ b/sickbeard/providers/morethantv.py @@ -170,7 +170,7 @@ class MoreThanTVProvider(TorrentProvider): items[mode].append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR) # For each search mode sort all the items by seeders if available diff --git a/sickbeard/providers/pretome.py b/sickbeard/providers/pretome.py index 87430198ee523e70a5c464365490683dd1b92782..e37dbbed98afac949a7c9582ccb604eeb49f5357 100644 --- a/sickbeard/providers/pretome.py +++ b/sickbeard/providers/pretome.py @@ -156,7 +156,7 @@ class PretomeProvider(TorrentProvider): items[mode].append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR) # For each search mode sort all the items by seeders if available diff --git a/sickbeard/providers/rsstorrent.py b/sickbeard/providers/rsstorrent.py index bb3d72ed7317664fb0580b6ca9201d1ae2c5c0e9..b53f5f2a5cdd4e1f1d6903943a5e58452c1ee39a 100644 --- a/sickbeard/providers/rsstorrent.py +++ b/sickbeard/providers/rsstorrent.py @@ -122,13 +122,13 @@ class TorrentRssProvider(TorrentProvider): torrent_file = self.get_url(url) try: bdecode(torrent_file) - except Exception, e: + except Exception as e: self.dumpHTML(torrent_file) return (False, 'Torrent link is not a valid torrent file: ' + ex(e)) return (True, 'RSS feed Parsed correctly') - except Exception, e: + except Exception as e: return (False, 'Error when trying to load RSS: ' + ex(e)) @staticmethod @@ -140,7 +140,7 @@ class TorrentRssProvider(TorrentProvider): fileOut.write(data) fileOut.close() helpers.chmodAsParent(dumpName) - except IOError, e: + except IOError as e: logger.log(u"Unable to save the file: %s " % repr(e), logger.ERROR) return False logger.log(u"Saved custom_torrent html dump %s " % dumpName, logger.INFO) diff --git a/sickbeard/providers/scenetime.py b/sickbeard/providers/scenetime.py index c8d7fdd080aa9af734653517b464d77ca4b51368..77e6673c25870cd04b7f136a2f571b50038fb4d4 100644 --- a/sickbeard/providers/scenetime.py +++ b/sickbeard/providers/scenetime.py @@ -139,7 +139,7 @@ class SceneTimeProvider(TorrentProvider): items[mode].append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR) # For each search mode sort all the items by seeders if available diff --git a/sickbeard/providers/tokyotoshokan.py b/sickbeard/providers/tokyotoshokan.py index f2cac0fcafd77ebf53a7e57cd8d7c728c57714c1..57227bc0915ea9dc02cc89225004d38c09fe52b0 100644 --- a/sickbeard/providers/tokyotoshokan.py +++ b/sickbeard/providers/tokyotoshokan.py @@ -102,7 +102,7 @@ class TokyoToshokanProvider(TorrentProvider): results.append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR) # FIXME SORTING diff --git a/sickbeard/providers/torrentbytes.py b/sickbeard/providers/torrentbytes.py index 7601a7b615f33bc74beeb75c8eba48b28c2ed691..e9bf8d02dfb61b928276acf77de253cbc1e61de2 100644 --- a/sickbeard/providers/torrentbytes.py +++ b/sickbeard/providers/torrentbytes.py @@ -155,7 +155,7 @@ class TorrentBytesProvider(TorrentProvider): items[mode].append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR) # For each search mode sort all the items by seeders if available diff --git a/sickbeard/providers/torrentleech.py b/sickbeard/providers/torrentleech.py index bf069c022d4e011d173371ccddc1db4f355e0581..7602e39595e8fc23f0c4340e95b9796eb6e2a422 100644 --- a/sickbeard/providers/torrentleech.py +++ b/sickbeard/providers/torrentleech.py @@ -133,7 +133,7 @@ class TorrentLeechProvider(TorrentProvider): items[mode].append(item) - except Exception, e: + except Exception as e: logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR) # For each search mode sort all the items by seeders if available diff --git a/sickbeard/sab.py b/sickbeard/sab.py index de8687383d4299d46ef41c3e1e8c213dfb05c43f..cd64cd767112b1548ab7b942b7366c79879fd071 100644 --- a/sickbeard/sab.py +++ b/sickbeard/sab.py @@ -111,11 +111,11 @@ def sendNZB(nzb): f = opener.open(req) - except (EOFError, IOError), e: + except (EOFError, IOError) as e: logger.log(u"Unable to connect to SAB: " + ex(e), logger.ERROR) return False - except httplib.InvalidURL, e: + except httplib.InvalidURL as e: logger.log(u"Invalid SAB host, check your config: " + ex(e), logger.ERROR) return False @@ -127,7 +127,7 @@ def sendNZB(nzb): # if we opened the URL connection then read the result from SAB try: result = f.readlines() - except Exception, e: + except Exception as e: logger.log(u"Error trying to get result from SAB, NZB not sent: " + ex(e), logger.ERROR) return False @@ -162,7 +162,7 @@ def _checkSabResponse(f): """ try: result = f.readlines() - except Exception, e: + except Exception as e: logger.log(u"Error trying to get result from SAB" + ex(e), logger.ERROR) return False, "Error from SAB" @@ -174,7 +174,7 @@ def _checkSabResponse(f): sabJson = {} try: sabJson = json.loads(sabText) - except ValueError, e: + except ValueError as e: pass if sabText == "Missing authentication": @@ -196,10 +196,10 @@ def _sabURLOpenSimple(url): """ try: f = urllib.urlopen(url) - except (EOFError, IOError), e: + except (EOFError, IOError) as e: logger.log(u"Unable to connect to SAB: " + ex(e), logger.ERROR) return False, "Unable to connect" - except httplib.InvalidURL, e: + except httplib.InvalidURL as e: logger.log(u"Invalid SAB host, check your config: " + ex(e), logger.ERROR) return False, "Invalid SAB host" if f is None: diff --git a/sickbeard/scene_numbering.py b/sickbeard/scene_numbering.py index 23ba5f06c53477973a852cad0cc4817f54039453..8f73628fe8b864b5b76fbf6c03e5ae7f7012b07f 100644 --- a/sickbeard/scene_numbering.py +++ b/sickbeard/scene_numbering.py @@ -530,7 +530,7 @@ def xem_refresh(indexer_id, indexer, force=False): myDB = db.DBConnection() myDB.mass_action(cl) - except Exception, e: + except Exception as e: logger.log( u"Exception while refreshing XEM data for show " + str(indexer_id) + " on " + sickbeard.indexerApi( indexer).name + ": " + ex(e), logger.WARNING) diff --git a/sickbeard/scheduler.py b/sickbeard/scheduler.py index 627351ab6d5abee7e6d6d3266a3cde3fa32329cd..a6907af2b7a616fa774542127d3ed34bd589c2d9 100644 --- a/sickbeard/scheduler.py +++ b/sickbeard/scheduler.py @@ -110,6 +110,6 @@ class Scheduler(threading.Thread): time.sleep(1) # exiting thread self.stop.clear() - except Exception, e: + except Exception as e: logger.log(u"Exception generated in thread " + self.name + ": " + ex(e), logger.ERROR) logger.log(repr(traceback.format_exc()), logger.DEBUG) diff --git a/sickbeard/search.py b/sickbeard/search.py index ab4411f83bbfb87f9cd884402334c30448a692f1..5059cf1125230e6cc423a3ca4ca9434e90d2e2be 100644 --- a/sickbeard/search.py +++ b/sickbeard/search.py @@ -75,7 +75,7 @@ def _downloadResult(result): helpers.chmodAsParent(fileName) - except EnvironmentError, e: + except EnvironmentError as e: logger.log(u"Error trying to save NZB to black hole: " + ex(e), logger.ERROR) newResult = False elif result.resultType == "torrent": @@ -389,10 +389,10 @@ def searchForNeededEpisodes(): curFoundResults = {} try: curFoundResults = curProvider.search_rss(episodes) - except AuthException, e: + except AuthException as e: logger.log(u"Authentication error: " + ex(e), logger.ERROR) continue - except Exception, e: + except Exception as e: logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) continue @@ -481,10 +481,10 @@ def searchProviders(show, episodes, manualSearch=False, downCurQuality=False): try: searchResults = curProvider.find_search_results(show, episodes, search_mode, manualSearch, downCurQuality) - except AuthException, e: + except AuthException as e: logger.log(u"Authentication error: " + ex(e), logger.ERROR) break - except Exception, e: + except Exception as e: logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) break diff --git a/sickbeard/showUpdater.py b/sickbeard/showUpdater.py index b1bac12f516d822cbfd1d4ee483adc8a3fbf1c9d..17e725e1738cdd50b7f2950f8a462775d148f798 100644 --- a/sickbeard/showUpdater.py +++ b/sickbeard/showUpdater.py @@ -116,7 +116,7 @@ class ShowUpdater: u"Not updating episodes for show " + cur_show.name + " because it's last/next episode is not within the grace period.", logger.DEBUG) # pi_list.append(sickbeard.showQueueScheduler.action.refreshShow(cur_show, True)) - except (CantUpdateShowException, CantRefreshShowException), e: + except (CantUpdateShowException, CantRefreshShowException) as e: logger.log(u"Automatic update failed: " + ex(e), logger.ERROR) ui.ProgressIndicators.setIndicator('dailyUpdate', ui.QueueProgressIndicator("Daily Update", pi_list)) diff --git a/sickbeard/show_queue.py b/sickbeard/show_queue.py index 457b6f8ed5da22b3de640cbbcbcb3af2defa75b6..af60180bc5cfd02ec2a2f06676c005e8dbdaaa1a 100644 --- a/sickbeard/show_queue.py +++ b/sickbeard/show_queue.py @@ -309,7 +309,7 @@ class QueueItemAdd(ShowQueueItem): self.indexer).name) + " but contains no season/episode data.") self._finishEarly() return - except Exception, e: + except Exception as e: logger.log(u"%s Error while loading information from indexer %s. Error: %r" % (self.indexer_id, sickbeard.indexerApi(self.indexer).name, ex(e)), logger.ERROR) # logger.log(u"Show name with ID %s doesn't exist on %s anymore. If you are using trakt, it will be removed from your TRAKT watchlist. If you are adding manually, try removing the nfo and adding again" % # (self.indexer_id, sickbeard.indexerApi(self.indexer).name), logger.WARNING) @@ -379,7 +379,7 @@ class QueueItemAdd(ShowQueueItem): # if self.show.classification and "sports" in self.show.classification.lower(): # self.show.sports = 1 - except sickbeard.indexer_exception, e: + except sickbeard.indexer_exception as e: logger.log( u"Unable to add show due to an error with " + sickbeard.indexerApi(self.indexer).name + ": " + ex(e), logger.ERROR) @@ -399,7 +399,7 @@ class QueueItemAdd(ShowQueueItem): self._finishEarly() return - except Exception, e: + except Exception as e: logger.log(u"Error trying to add show: " + ex(e), logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) self._finishEarly() @@ -408,14 +408,14 @@ class QueueItemAdd(ShowQueueItem): logger.log(u"Retrieving show info from IMDb", logger.DEBUG) try: self.show.loadIMDbInfo() - except imdb_exceptions.IMDbError, e: + except imdb_exceptions.IMDbError as e: logger.log(u" Something wrong on IMDb api: " + ex(e), logger.WARNING) - except Exception, e: + except Exception as e: logger.log(u"Error loading IMDb info: " + ex(e), logger.ERROR) try: self.show.saveToDB() - except Exception, e: + except Exception as e: logger.log(u"Error saving the show to the database: " + ex(e), logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) self._finishEarly() @@ -426,7 +426,7 @@ class QueueItemAdd(ShowQueueItem): try: self.show.loadEpisodesFromIndexer() - except Exception, e: + except Exception as e: logger.log( u"Error with " + sickbeard.indexerApi(self.show.indexer).name + ", not creating episode list: " + ex(e), logger.ERROR) @@ -437,7 +437,7 @@ class QueueItemAdd(ShowQueueItem): try: self.show.loadEpisodesFromDir() - except Exception, e: + except Exception as e: logger.log(u"Error searching dir for episodes: " + ex(e), logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) @@ -577,11 +577,11 @@ class QueueItemUpdate(ShowQueueItem): logger.log(u"Retrieving show info from " + sickbeard.indexerApi(self.show.indexer).name + "", logger.DEBUG) try: self.show.loadFromIndexer(cache=not self.force) - except sickbeard.indexer_error, e: + except sickbeard.indexer_error as e: logger.log(u"Unable to contact " + sickbeard.indexerApi(self.show.indexer).name + ", aborting: " + ex(e), logger.WARNING) return - except sickbeard.indexer_attributenotfound, e: + except sickbeard.indexer_attributenotfound as e: logger.log(u"Data retrieved from " + sickbeard.indexerApi( self.show.indexer).name + " was incomplete, aborting: " + ex(e), logger.ERROR) return @@ -589,16 +589,16 @@ class QueueItemUpdate(ShowQueueItem): logger.log(u"Retrieving show info from IMDb", logger.DEBUG) try: self.show.loadIMDbInfo() - except imdb_exceptions.IMDbError, e: + except imdb_exceptions.IMDbError as e: logger.log(u" Something wrong on IMDb api: " + ex(e), logger.WARNING) - except Exception, e: + except Exception as e: logger.log(u"Error loading IMDb info: " + ex(e), logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) # have to save show before reading episodes from db try: self.show.saveToDB() - except Exception, e: + except Exception as e: logger.log(u"Error saving show info to the database: " + ex(e), logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) @@ -610,7 +610,7 @@ class QueueItemUpdate(ShowQueueItem): logger.log(u"Loading all episodes from " + sickbeard.indexerApi(self.show.indexer).name + "", logger.DEBUG) try: IndexerEpList = self.show.loadEpisodesFromIndexer(cache=not self.force) - except sickbeard.indexer_exception, e: + except sickbeard.indexer_exception as e: logger.log(u"Unable to get info from " + sickbeard.indexerApi( self.show.indexer).name + ", the show info will not be refreshed: " + ex(e), logger.ERROR) IndexerEpList = None @@ -642,7 +642,7 @@ class QueueItemUpdate(ShowQueueItem): # save show again, in case episodes have changed try: self.show.saveToDB() - except Exception, e: + except Exception as e: logger.log(u"Error saving show info to the database: " + ex(e), logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) diff --git a/sickbeard/tv.py b/sickbeard/tv.py index 4136255b89c1944d5b4965dba4b0d442bcbb03f0..bdaac1d4689b7e20ac92b178892e94d3b7eb4452 100644 --- a/sickbeard/tv.py +++ b/sickbeard/tv.py @@ -419,7 +419,7 @@ class TVShow(object): logger.log(str(self.indexerid) + u": Creating episode from " + mediaFile, logger.DEBUG) try: curEpisode = self.makeEpFromFile(ek(os.path.join, self._location, mediaFile)) - except (ShowNotFoundException, EpisodeNotFoundException), e: + except (ShowNotFoundException, EpisodeNotFoundException) as e: logger.log(u"Episode " + mediaFile + " returned an exception: " + ex(e), logger.ERROR) continue except EpisodeDeletedException: @@ -1012,7 +1012,7 @@ class TVShow(object): else: ek(os.remove, cache_file) - except OSError, e: + except OSError as e: logger.log(u'Unable to %s %s: %s / %s' % (action, cache_file, repr(e), str(e)), logger.WARNING) # remove entire show folder @@ -1040,7 +1040,7 @@ class TVShow(object): except ShowDirectoryNotFoundException: logger.log(u"Show folder does not exist, no need to %s %s" % (action, self._location), logger.WARNING) - except OSError, e: + except OSError as e: logger.log(u'Unable to %s %s: %s / %s' % (action, self._location, repr(e), str(e)), logger.WARNING) if sickbeard.USE_TRAKT and sickbeard.TRAKT_SYNC_WATCHLIST: @@ -1621,7 +1621,7 @@ class TVEpisode(object): else: myEp = cachedSeason[episode] - except (sickbeard.indexer_error, IOError), e: + except (sickbeard.indexer_error, IOError) as e: logger.log(u"" + sickbeard.indexerApi(self.indexer).name + " threw up an error: " + ex(e), logger.DEBUG) # if the episode is already valid just log it, if not throw it up if self.name: @@ -1758,11 +1758,11 @@ class TVEpisode(object): if ek(os.path.isfile, nfoFile): try: showXML = etree.ElementTree(file=nfoFile) - except (SyntaxError, ValueError), e: + except (SyntaxError, ValueError) as e: logger.log(u"Error loading the NFO, backing up the NFO and skipping for now: " + ex(e), logger.ERROR) try: ek(os.rename, nfoFile, nfoFile + ".old") - except Exception, e: + except Exception as e: logger.log( u"Failed to rename your episode's NFO file - you need to delete it or fix it: " + ex(e), logger.ERROR) raise NoNFOException("Error in NFO format") @@ -2093,7 +2093,7 @@ class TVEpisode(object): try: np = NameParser(name, showObj=show, naming_pattern=True) parse_result = np.parse(name) - except (InvalidNameException, InvalidShowException), e: + except (InvalidNameException, InvalidShowException) as e: logger.log(u"Unable to get parse release_group: " + ex(e), logger.DEBUG) return '' diff --git a/sickbeard/tvcache.py b/sickbeard/tvcache.py index f01d187a39cff0de59d4e894c439cf2e394c48e0..9ed63c1d1e0cec1e8df3ce3e7125f1fd3f64d5d2 100644 --- a/sickbeard/tvcache.py +++ b/sickbeard/tvcache.py @@ -59,7 +59,7 @@ class CacheDBConnection(db.DBConnection): if not self.hasColumn(providerName, 'version'): self.addColumn(providerName, 'version', "NUMERIC", "-1") - except Exception, e: + except Exception as e: if str(e) != "table [" + providerName + "] already exists": raise @@ -67,7 +67,7 @@ class CacheDBConnection(db.DBConnection): try: if not self.hasTable('lastUpdate'): self.action("CREATE TABLE lastUpdate (provider TEXT, time NUMERIC)") - except Exception, e: + except Exception as e: if str(e) != "table lastUpdate already exists": raise @@ -127,9 +127,9 @@ class TVCache(object): myDB = self._getDB() myDB.mass_action(cl) - except AuthException, e: + except AuthException as e: logger.log(u"Authentication error: " + ex(e), logger.ERROR) - except Exception, e: + except Exception as e: logger.log(u"Error while searching " + self.provider.name + ", skipping: " + repr(e), logger.DEBUG) def getRSSFeed(self, url): diff --git a/sickbeard/versionChecker.py b/sickbeard/versionChecker.py index 40ee5ffe0bd8289ee7e7b21380e413f719f17f87..79cb9949b15a845c4f7ed52c4891d952eb9d9fdd 100644 --- a/sickbeard/versionChecker.py +++ b/sickbeard/versionChecker.py @@ -605,7 +605,7 @@ class GitUpdateManager(UpdateManager): else: try: self._check_github_for_update() - except Exception, e: + except Exception as e: logger.log(u"Unable to contact github, can't check for update: " + repr(e), logger.WARNING) return False @@ -728,7 +728,7 @@ class SourceUpdateManager(UpdateManager): # need this to run first to set self._newest_commit_hash try: self._check_github_for_update() - except Exception, e: + except Exception as e: logger.log(u"Unable to contact github, can't check for update: " + repr(e), logger.WARNING) return False @@ -869,7 +869,7 @@ class SourceUpdateManager(UpdateManager): ek(os.chmod, new_path, stat.S_IWRITE) ek(os.remove, new_path) ek(os.renames, old_path, new_path) - except Exception, e: + except Exception as e: logger.log(u"Unable to update " + new_path + ': ' + ex(e), logger.DEBUG) ek(os.remove, old_path) # Trash the updated file without moving in new path continue @@ -881,7 +881,7 @@ class SourceUpdateManager(UpdateManager): sickbeard.CUR_COMMIT_HASH = self._newest_commit_hash sickbeard.CUR_COMMIT_BRANCH = self.branch - except Exception, e: + except Exception as e: logger.log(u"Error while trying to update: " + ex(e), logger.ERROR) logger.log(u"Traceback: " + traceback.format_exc(), logger.DEBUG) return False diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py index ce6ef6d165cafddc6c8bd0781e62b8e5ecc1ad41..29cf2c25d8110b99ba98b0a616144bdaecdae8bb 100644 --- a/sickbeard/webapi.py +++ b/sickbeard/webapi.py @@ -134,7 +134,7 @@ class ApiHandler(RequestHandler): try: out_dict = _call_dispatcher(args, kwargs) - except Exception, e: # real internal error oohhh nooo :( + except Exception as e: # real internal error oohhh nooo :( logger.log(u"API :: " + ex(e), logger.ERROR) error_data = { "error_msg": ex(e), @@ -165,7 +165,7 @@ class ApiHandler(RequestHandler): callback = self.get_query_argument('callback', None) or self.get_query_argument('jsonp', None) if callback: out = callback + '(' + out + ');' # wrap with JSONP call if requested - except Exception, e: # if we fail to generate the output fake an error + except Exception as e: # if we fail to generate the output fake an error logger.log(u"API :: " + traceback.format_exc(), logger.DEBUG) out = '{"result": "%s", "message": "error while composing output: %s"}' % \ (result_type_map[RESULT_ERROR], ex(e)) diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index 8f6d76f65bfe6a72895d4a93d5abbdc77041bfca..82bd3dccad2c8c947790cc81804f6e0f62ec4921 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -1483,7 +1483,7 @@ class Home(WebRoot): showObj.flatten_folders = flatten_folders try: sickbeard.showQueueScheduler.action.refreshShow(showObj) - except CantRefreshShowException, e: + except CantRefreshShowException as e: errors.append("Unable to refresh this show: " + ex(e)) showObj.paused = paused @@ -1514,7 +1514,7 @@ class Home(WebRoot): showObj.location = location try: sickbeard.showQueueScheduler.action.refreshShow(showObj) - except CantRefreshShowException, e: + except CantRefreshShowException as e: errors.append("Unable to refresh this show:" + ex(e)) # grab updated info from TVDB # showObj.loadEpisodesFromIndexer() @@ -1538,14 +1538,14 @@ class Home(WebRoot): try: sickbeard.scene_exceptions.update_scene_exceptions(showObj.indexerid, exceptions_list) # @UndefinedVdexerid) time.sleep(cpu_presets[sickbeard.CPU_PRESET]) - except CantUpdateShowException, e: + except CantUpdateShowException as e: errors.append("Unable to force an update on scene exceptions of the show.") if do_update_scene_numbering: try: sickbeard.scene_numbering.xem_refresh(showObj.indexerid, showObj.indexer) time.sleep(cpu_presets[sickbeard.CPU_PRESET]) - except CantUpdateShowException, e: + except CantUpdateShowException as e: errors.append("Unable to force an update on scene numbering of the show.") if directCall: @@ -1616,7 +1616,7 @@ class Home(WebRoot): # force the update try: sickbeard.showQueueScheduler.action.updateShow(showObj, bool(force)) - except CantUpdateShowException, e: + except CantUpdateShowException as e: ui.notifications.error("Unable to update this show.", ex(e)) # just give it some time @@ -3427,7 +3427,7 @@ class Manage(Home, WebRoot): try: sickbeard.showQueueScheduler.action.updateShow(showObj, True) updates.append(showObj.name) - except CantUpdateShowException, e: + except CantUpdateShowException as e: errors.append("Unable to update show: {0}".format(str(e))) # don't bother refreshing shows that were updated anyway @@ -3435,7 +3435,7 @@ class Manage(Home, WebRoot): try: sickbeard.showQueueScheduler.action.refreshShow(showObj) refreshes.append(showObj.name) - except CantRefreshShowException, e: + except CantRefreshShowException as e: errors.append("Unable to refresh show " + showObj.name + ": " + ex(e)) if curShowID in toRename: @@ -4231,7 +4231,7 @@ class ConfigPostProcessing(Config): return 'supported' logger.log(u'Rar Not Supported: Can not read the content of test file', logger.ERROR) return 'not supported' - except Exception, e: + except Exception as e: logger.log(u'Rar Not Supported: ' + ex(e), logger.ERROR) return 'not supported'