Merge pull request #172 from Supremicus/feature/LoggingTweaks

Logging message tweaks and minor PEP8 tweaks
This commit is contained in:
JackDandy 2015-02-10 05:16:00 +00:00
commit b0dab902d2
29 changed files with 111 additions and 104 deletions

View file

@ -20,6 +20,9 @@
* Change displayShow scene exception separator to a comma for neater appearance * Change displayShow scene exception separator to a comma for neater appearance
* Remove non english subtitle providers * Remove non english subtitle providers
* Fix rename of excluded metadata * Fix rename of excluded metadata
* Change corrected spelling & better clarified various log messages
* Change minor PEP8 tweaks in sab.py
* Add api disabled error code for newznab providers
[develop changelog] [develop changelog]

View file

@ -62,7 +62,7 @@ class GenericClient(object):
logger.log(self.name + u': Connection Timeout ' + ex(e), logger.ERROR) logger.log(self.name + u': Connection Timeout ' + ex(e), logger.ERROR)
return False return False
except Exception, e: except Exception, e:
logger.log(self.name + u': Unknown exception raised when send torrent to ' + self.name + ': ' + ex(e), logger.log(self.name + u': Unknown exception raised when sending torrent to ' + self.name + ': ' + ex(e),
logger.ERROR) logger.ERROR)
return False return False

View file

@ -483,7 +483,7 @@ class AddShowidTvdbidIndex(db.SchemaUpgrade):
def execute(self): def execute(self):
backup_database(self.checkDBVersion()) backup_database(self.checkDBVersion())
logger.log(u'Check for duplicate shows before adding unique index.') logger.log(u'Checking for duplicate shows before adding unique index.')
MainSanityCheck(self.connection).fix_duplicate_shows('tvdb_id') MainSanityCheck(self.connection).fix_duplicate_shows('tvdb_id')
logger.log(u'Adding index on tvdb_id (tv_shows) and showid (tv_episodes) to speed up searches/queries.') logger.log(u'Adding index on tvdb_id (tv_shows) and showid (tv_episodes) to speed up searches/queries.')

View file

@ -416,7 +416,7 @@ def make_dirs(path):
# Windows, create all missing folders # Windows, create all missing folders
if os.name == 'nt' or os.name == 'ce': if os.name == 'nt' or os.name == 'ce':
try: try:
logger.log(u"Folder " + path + " didn't exist, creating it", logger.DEBUG) logger.log(u"Folder " + path + " doesn't exist, creating it", logger.DEBUG)
ek.ek(os.makedirs, path) ek.ek(os.makedirs, path)
except (OSError, IOError), e: except (OSError, IOError), e:
logger.log(u"Failed creating " + path + " : " + ex(e), logger.ERROR) logger.log(u"Failed creating " + path + " : " + ex(e), logger.ERROR)
@ -436,7 +436,7 @@ def make_dirs(path):
continue continue
try: try:
logger.log(u"Folder " + sofar + " didn't exist, creating it", logger.DEBUG) logger.log(u"Folder " + sofar + " doesn't exist, creating it", logger.DEBUG)
ek.ek(os.mkdir, sofar) ek.ek(os.mkdir, sofar)
# use normpath to remove end separator, otherwise checks permissions against itself # use normpath to remove end separator, otherwise checks permissions against itself
chmodAsParent(ek.ek(os.path.normpath, sofar)) chmodAsParent(ek.ek(os.path.normpath, sofar))
@ -1464,7 +1464,7 @@ def wait_for_free_port(host, port):
else: else:
return return
raise IOError("Port %r not free on %r" % (port, host)) raise IOError("Port %r is not free on %r" % (port, host))
def check_port(host, port, timeout=1.0): def check_port(host, port, timeout=1.0):

View file

@ -188,11 +188,11 @@ class ImageCache:
# make sure the cache folder exists before we try copying to it # make sure the cache folder exists before we try copying to it
if not ek.ek(os.path.isdir, self._cache_dir()): if not ek.ek(os.path.isdir, self._cache_dir()):
logger.log(u"Image cache dir didn't exist, creating it at " + str(self._cache_dir())) logger.log(u"Image cache directory doesn't exist, creating it at " + str(self._cache_dir()))
ek.ek(os.makedirs, self._cache_dir()) ek.ek(os.makedirs, self._cache_dir())
if not ek.ek(os.path.isdir, self._thumbnails_dir()): if not ek.ek(os.path.isdir, self._thumbnails_dir()):
logger.log(u"Thumbnails cache dir didn't exist, creating it at " + str(self._thumbnails_dir())) logger.log(u"Thumbnails cache directory doesn't exist, creating it at " + str(self._thumbnails_dir()))
ek.ek(os.makedirs, self._thumbnails_dir()) ek.ek(os.makedirs, self._thumbnails_dir())
logger.log(u"Copying from " + image_path + " to " + dest_path) logger.log(u"Copying from " + image_path + " to " + dest_path)
@ -276,12 +276,12 @@ class ImageCache:
if cur_file_type in need_images and need_images[cur_file_type]: if cur_file_type in need_images and need_images[cur_file_type]:
logger.log( logger.log(
u"Found an image in the show dir that doesn't exist in the cache, caching it: " + cur_file_name + ", type " + str( u"Found an image in the show directory that doesn't exist in the cache, caching it: " + cur_file_name + ", type " + str(
cur_file_type), logger.DEBUG) cur_file_type), logger.DEBUG)
self._cache_image_from_file(cur_file_name, cur_file_type, show_obj.indexerid) self._cache_image_from_file(cur_file_name, cur_file_type, show_obj.indexerid)
need_images[cur_file_type] = False need_images[cur_file_type] = False
except exceptions.ShowDirNotFoundException: except exceptions.ShowDirNotFoundException:
logger.log(u"Unable to search for images in show dir because it doesn't exist", logger.WARNING) logger.log(u"Unable to search for images in show directory because it doesn't exist", logger.WARNING)
# download from indexer for missing ones # download from indexer for missing ones
for cur_image_type in [self.POSTER, self.BANNER, self.POSTER_THUMB, self.BANNER_THUMB]: for cur_image_type in [self.POSTER, self.BANNER, self.POSTER_THUMB, self.BANNER_THUMB]:

View file

@ -78,7 +78,7 @@ class Boxcar2Notifier:
# If you receive an HTTP status code of 400, it is because you failed to send the proper parameters # If you receive an HTTP status code of 400, it is because you failed to send the proper parameters
elif e.code == 400: elif e.code == 400:
logger.log("Wrong data send to boxcar2", logger.ERROR) logger.log("Wrong data sent to boxcar2", logger.ERROR)
return False return False
logger.log("Boxcar2 notification successful.", logger.DEBUG) logger.log("Boxcar2 notification successful.", logger.DEBUG)

View file

@ -56,7 +56,7 @@ class EmailNotifier:
show = self._parseEp(ep_name) show = self._parseEp(ep_name)
to = self._generate_recepients(show) to = self._generate_recepients(show)
if len(to) == 0: if len(to) == 0:
logger.log('Skipping email notify because there are no configured recepients', logger.WARNING) logger.log('Skipping email notification because there are no configured recepients', logger.WARNING)
else: else:
try: try:
msg = MIMEMultipart('alternative') msg = MIMEMultipart('alternative')
@ -91,7 +91,7 @@ class EmailNotifier:
show = self._parseEp(ep_name) show = self._parseEp(ep_name)
to = self._generate_recepients(show) to = self._generate_recepients(show)
if len(to) == 0: if len(to) == 0:
logger.log('Skipping email notify because there are no configured recepients', logger.WARNING) logger.log('Skipping email notification because there are no configured recepients', logger.WARNING)
else: else:
try: try:
msg = MIMEMultipart('alternative') msg = MIMEMultipart('alternative')
@ -126,7 +126,7 @@ class EmailNotifier:
show = self._parseEp(ep_name) show = self._parseEp(ep_name)
to = self._generate_recepients(show) to = self._generate_recepients(show)
if len(to) == 0: if len(to) == 0:
logger.log('Skipping email notify because there are no configured recepients', logger.WARNING) logger.log('Skipping email notification because there are no configured recepients', logger.WARNING)
else: else:
try: try:
msg = MIMEMultipart('alternative') msg = MIMEMultipart('alternative')

View file

@ -98,7 +98,7 @@ class ProwlNotifier:
logger.log(u"Prowl notifications sent.", logger.MESSAGE) logger.log(u"Prowl notifications sent.", logger.MESSAGE)
return True return True
elif request_status == 401: elif request_status == 401:
logger.log(u"Prowl auth failed: %s" % response.reason, logger.ERROR) logger.log(u"Prowl authentication failed: %s" % response.reason, logger.ERROR)
return False return False
else: else:
logger.log(u"Prowl notification failed.", logger.ERROR) logger.log(u"Prowl notification failed.", logger.ERROR)

View file

@ -88,7 +88,7 @@ class PushalotNotifier:
logger.log(u"Pushalot notifications sent.", logger.DEBUG) logger.log(u"Pushalot notifications sent.", logger.DEBUG)
return True return True
elif request_status == 410: elif request_status == 410:
logger.log(u"Pushalot auth failed: %s" % response.reason, logger.ERROR) logger.log(u"Pushalot authentication failed: %s" % response.reason, logger.ERROR)
return False return False
else: else:
logger.log(u"Pushalot notification failed.", logger.ERROR) logger.log(u"Pushalot notification failed.", logger.ERROR)

View file

@ -114,7 +114,7 @@ class PushbulletNotifier:
logger.log(u"Pushbullet notifications sent.", logger.DEBUG) logger.log(u"Pushbullet notifications sent.", logger.DEBUG)
return True return True
elif request_status == 410: elif request_status == 410:
logger.log(u"Pushbullet auth failed: %s" % response.reason, logger.ERROR) logger.log(u"Pushbullet authentication failed: %s" % response.reason, logger.ERROR)
return False return False
else: else:
logger.log(u"Pushbullet notification failed.", logger.ERROR) logger.log(u"Pushbullet notification failed.", logger.ERROR)

View file

@ -52,10 +52,10 @@ def sendNZB(nzb, proper=False):
nzbGetRPC = xmlrpclib.ServerProxy(url) nzbGetRPC = xmlrpclib.ServerProxy(url)
try: try:
if nzbGetRPC.writelog("INFO", "SickGear connected to drop of %s any moment now." % (nzb.name + ".nzb")): if nzbGetRPC.writelog("INFO", "SickGear connected to drop off %s any moment now." % (nzb.name + ".nzb")):
logger.log(u"Successful connected to NZBget", logger.DEBUG) logger.log(u"Successfully connected to NZBget", logger.DEBUG)
else: else:
logger.log(u"Successful connected to NZBget, but unable to send a message", logger.ERROR) logger.log(u"Successfully connected to NZBget, but unable to send a message", logger.ERROR)
except httplib.socket.error: except httplib.socket.error:
logger.log( logger.log(
@ -94,8 +94,8 @@ def sendNZB(nzb, proper=False):
data = nzb.extraInfo[0] data = nzb.extraInfo[0]
nzbcontent64 = standard_b64encode(data) nzbcontent64 = standard_b64encode(data)
logger.log(u"Sending NZB to NZBget") logger.log(u"Sending NZB to NZBGet: %s" % nzb.name)
logger.log(u"URL: " + url, logger.DEBUG) logger.log(u"NZBGet URL: " + url, logger.DEBUG)
try: try:
# Find out if nzbget supports priority (Version 9.0+), old versions beginning with a 0.x will use the old command # Find out if nzbget supports priority (Version 9.0+), old versions beginning with a 0.x will use the old command

View file

@ -98,7 +98,7 @@ class BitSoupProvider(generic.TorrentProvider):
return False return False
if re.search('Username or password incorrect', response.text): if re.search('Username or password incorrect', response.text):
logger.log(u'Invalid username or password for ' + self.name + ' Check your settings', logger.ERROR) logger.log(u'Your authentication credentials for ' + self.name + ' are incorrect, check your config.', logger.ERROR)
return False return False
return True return True
@ -180,7 +180,7 @@ class BitSoupProvider(generic.TorrentProvider):
#Continue only if one Release is found #Continue only if one Release is found
if len(torrent_rows) < 2: if len(torrent_rows) < 2:
logger.log(u"The Data returned from " + self.name + " do not contains any torrent", logger.log(u"The data returned from " + self.name + " does not contain any torrents",
logger.DEBUG) logger.DEBUG)
continue continue

View file

@ -89,7 +89,7 @@ class Fanzub(generic.NZBProvider):
results.append(curItem) results.append(curItem)
else: else:
logger.log( logger.log(
u"The data returned from the " + self.name + " is incomplete, this result is unusable", u"The data returned from " + self.name + " is incomplete, this result is unusable",
logger.DEBUG) logger.DEBUG)
return results return results

View file

@ -109,7 +109,7 @@ class FreshOnTVProvider(generic.TorrentProvider):
return False return False
if re.search('Username does not exist in the userbase or the account is not confirmed yet.', response.text): if re.search('Username does not exist in the userbase or the account is not confirmed yet.', response.text):
logger.log(u'Invalid username or password for ' + self.name + ' Check your settings', logger.ERROR) logger.log(u'Your authentication credentials for ' + self.name + ' are incorrect, check your config.', logger.ERROR)
return False return False
if requests.utils.dict_from_cookiejar(self.session.cookies)['uid'] and requests.utils.dict_from_cookiejar(self.session.cookies)['pass']: if requests.utils.dict_from_cookiejar(self.session.cookies)['uid'] and requests.utils.dict_from_cookiejar(self.session.cookies)['pass']:
@ -205,7 +205,7 @@ class FreshOnTVProvider(generic.TorrentProvider):
#Continue only if one Release is found #Continue only if one Release is found
if len(torrent_rows) < 2: if len(torrent_rows) < 2:
logger.log(u"The Data returned from " + self.name + " do not contains any torrent", logger.log(u"The data returned from " + self.name + " does not contain any torrents",
logger.DEBUG) logger.DEBUG)
continue continue

View file

@ -113,7 +113,7 @@ class HDTorrentsProvider(generic.TorrentProvider):
if re.search('You need cookies enabled to log in.', response.text) \ if re.search('You need cookies enabled to log in.', response.text) \
or response.status_code == 401: or response.status_code == 401:
logger.log(u'Invalid username or password for ' + self.name + ' Check your settings', logger.ERROR) logger.log(u'Your authentication credentials for ' + self.name + ' are incorrect, check your config.', logger.ERROR)
return False return False
self._uid = requests.utils.dict_from_cookiejar(self.session.cookies)['uid'] self._uid = requests.utils.dict_from_cookiejar(self.session.cookies)['uid']
@ -212,7 +212,7 @@ class HDTorrentsProvider(generic.TorrentProvider):
continue continue
if not entries: if not entries:
logger.log(u"The Data returned from " + self.name + " do not contains any torrent", logger.log(u"The data returned from " + self.name + " does not contain any torrents",
logger.DEBUG) logger.DEBUG)
continue continue

View file

@ -97,7 +97,7 @@ class IPTorrentsProvider(generic.TorrentProvider):
if re.search('tries left', response.text) \ if re.search('tries left', response.text) \
or re.search('<title>IPT</title>', response.text) \ or re.search('<title>IPT</title>', response.text) \
or response.status_code == 401: or response.status_code == 401:
logger.log(u'Invalid username or password for ' + self.name + ', Check your settings!', logger.ERROR) logger.log(u'Your authentication credentials for ' + self.name + ' are incorrect, check your config.', logger.ERROR)
return False return False
return True return True
@ -189,7 +189,7 @@ class IPTorrentsProvider(generic.TorrentProvider):
#Continue only if one Release is found #Continue only if one Release is found
if len(torrents) < 2: if len(torrents) < 2:
logger.log(u"The Data returned from " + self.name + " do not contains any torrent", logger.log(u"The data returned from " + self.name + " does not contain any torrents",
logger.WARNING) logger.WARNING)
continue continue

View file

@ -250,6 +250,9 @@ class NewznabProvider(generic.NZBProvider):
elif code == '102': elif code == '102':
raise AuthException( raise AuthException(
"Your account isn't allowed to use the API on " + self.name + ", contact the administrator") "Your account isn't allowed to use the API on " + self.name + ", contact the administrator")
elif code == '910':
logger.log(u"" + self.name + " currently has their API disabled, please check with provider.", logger.WARNING)
return False
else: else:
logger.log(u"Unknown error given from " + self.name + ": " + data.feed['error']['description'], logger.log(u"Unknown error given from " + self.name + ": " + data.feed['error']['description'],
logger.ERROR) logger.ERROR)
@ -308,7 +311,7 @@ class NewznabProvider(generic.NZBProvider):
results.append(item) results.append(item)
else: else:
logger.log( logger.log(
u"The data returned from the " + self.name + " is incomplete, this result is unusable", u"The data returned from " + self.name + " is incomplete, this result is unusable",
logger.DEBUG) logger.DEBUG)
# get total and offset attribs # get total and offset attribs
@ -336,7 +339,7 @@ class NewznabProvider(generic.NZBProvider):
params['limit']) + " items.", logger.DEBUG) params['limit']) + " items.", logger.DEBUG)
else: else:
logger.log(str( logger.log(str(
total - int(params['offset'])) + " No more searches needed, could find anything I was looking for! " + str( total - int(params['offset'])) + " No more searches needed, couldn't find anything I was looking for! " + str(
params['limit']) + " items.", logger.DEBUG) params['limit']) + " items.", logger.DEBUG)
break break

View file

@ -208,7 +208,7 @@ class NextGenProvider(generic.TorrentProvider):
resultsTable = html.find('div', attrs={'id': 'torrent-table-wrapper'}) resultsTable = html.find('div', attrs={'id': 'torrent-table-wrapper'})
if not resultsTable: if not resultsTable:
logger.log(u"The Data returned from " + self.name + " do not contains any torrent", logger.log(u"The data returned from " + self.name + " does not contain any torrents",
logger.DEBUG) logger.DEBUG)
continue continue
@ -253,7 +253,7 @@ class NextGenProvider(generic.TorrentProvider):
items[mode].append(item) items[mode].append(item)
else: else:
logger.log(u"The Data returned from " + self.name + " do not contains any torrent", logger.log(u"The data returned from " + self.name + " does not contain any torrents",
logger.WARNING) logger.WARNING)
continue continue

View file

@ -96,7 +96,7 @@ class NyaaProvider(generic.TorrentProvider):
results.append(curItem) results.append(curItem)
else: else:
logger.log( logger.log(
u"The data returned from the " + self.name + " is incomplete, this result is unusable", u"The data returned from " + self.name + " is incomplete, this result is unusable",
logger.DEBUG) logger.DEBUG)
return results return results

View file

@ -98,7 +98,7 @@ class SCCProvider(generic.TorrentProvider):
if re.search('Username or password incorrect', response.text) \ if re.search('Username or password incorrect', response.text) \
or re.search('<title>SceneAccess \| Login</title>', response.text) \ or re.search('<title>SceneAccess \| Login</title>', response.text) \
or response.status_code == 401: or response.status_code == 401:
logger.log(u'Invalid username or password for ' + self.name + ' Check your settings', logger.ERROR) logger.log(u'Your authentication credentials for ' + self.name + ' are incorrect, check your config.', logger.ERROR)
return False return False
return True return True
@ -204,7 +204,7 @@ class SCCProvider(generic.TorrentProvider):
source = self.name + " (" + html.title.string + ")" source = self.name + " (" + html.title.string + ")"
else: else:
source = self.name source = self.name
logger.log(u"The Data returned from " + source + " does not contain any torrent", logger.DEBUG) logger.log(u"The data returned from " + source + " does not contain any torrents", logger.DEBUG)
continue continue
for result in torrent_table.find_all('tr')[1:]: for result in torrent_table.find_all('tr')[1:]:

View file

@ -91,7 +91,7 @@ class SpeedCDProvider(generic.TorrentProvider):
if re.search('Incorrect username or Password. Please try again.', response.text) \ if re.search('Incorrect username or Password. Please try again.', response.text) \
or response.status_code == 401: or response.status_code == 401:
logger.log(u'Invalid username or password for ' + self.name + ' Check your settings', logger.ERROR) logger.log(u'Your authentication credentials for ' + self.name + ' are incorrect, check your config.', logger.ERROR)
return False return False
return True return True

View file

@ -92,7 +92,7 @@ class TorrentBytesProvider(generic.TorrentProvider):
return False return False
if re.search('Username or password incorrect', response.text): if re.search('Username or password incorrect', response.text):
logger.log(u'Invalid username or password for ' + self.name + ' Check your settings', logger.ERROR) logger.log(u'Your authentication credentials for ' + self.name + ' are incorrect, check your config.', logger.ERROR)
return False return False
return True return True
@ -174,7 +174,7 @@ class TorrentBytesProvider(generic.TorrentProvider):
#Continue only if one Release is found #Continue only if one Release is found
if len(torrent_rows) < 2: if len(torrent_rows) < 2:
logger.log(u"The Data returned from " + self.name + " do not contains any torrent", logger.log(u"The data returned from " + self.name + " does not contain any torrents",
logger.DEBUG) logger.DEBUG)
continue continue

View file

@ -101,11 +101,11 @@ class TorrentDayProvider(generic.TorrentProvider):
return False return False
if re.search('You tried too often', response.text): if re.search('You tried too often', response.text):
logger.log(u'Too many login access for ' + self.name + ', can''t retrive any data', logger.ERROR) logger.log(u'Too many login attempts for ' + self.name + ', can\'t retrive any data', logger.ERROR)
return False return False
if response.status_code == 401: if response.status_code == 401:
logger.log(u'Invalid username or password for ' + self.name + ', Check your settings!', logger.ERROR) logger.log(u'Your authentication credentials for ' + self.name + ' are incorrect, check your config.', logger.ERROR)
return False return False
if requests.utils.dict_from_cookiejar(self.session.cookies)['uid'] and requests.utils.dict_from_cookiejar(self.session.cookies)['pass']: if requests.utils.dict_from_cookiejar(self.session.cookies)['uid'] and requests.utils.dict_from_cookiejar(self.session.cookies)['pass']:
@ -118,7 +118,7 @@ class TorrentDayProvider(generic.TorrentProvider):
return True return True
else: else:
logger.log(u'Unable to obtain cookie for TorrentDay', logger.ERROR) logger.log(u'Unable to obtain a cookie for TorrentDay', logger.ERROR)
return False return False

View file

@ -97,7 +97,7 @@ class TorrentLeechProvider(generic.TorrentProvider):
if re.search('Invalid Username/password', response.text) \ if re.search('Invalid Username/password', response.text) \
or re.search('<title>Login :: TorrentLeech.org</title>', response.text) \ or re.search('<title>Login :: TorrentLeech.org</title>', response.text) \
or response.status_code == 401: or response.status_code == 401:
logger.log(u'Invalid username or password for ' + self.name + ' Check your settings', logger.ERROR) logger.log(u'Your authentication credentials for ' + self.name + ' are incorrect, check your config.', logger.ERROR)
return False return False
return True return True
@ -182,7 +182,7 @@ class TorrentLeechProvider(generic.TorrentProvider):
#Continue only if one Release is found #Continue only if one Release is found
if len(torrent_rows) < 2: if len(torrent_rows) < 2:
logger.log(u"The Data returned from " + self.name + " do not contains any torrent", logger.log(u"The data returned from " + self.name + " does not contain any torrents",
logger.DEBUG) logger.DEBUG)
continue continue

View file

@ -17,14 +17,15 @@
# along with SickGear. If not, see <http://www.gnu.org/licenses/>. # along with SickGear. If not, see <http://www.gnu.org/licenses/>.
import urllib
import urllib, httplib import httplib
import datetime import datetime
import sickbeard import sickbeard
from lib import MultipartPostHandler from lib import MultipartPostHandler
import urllib2, cookielib import urllib2
import cookielib
try: try:
import json import json
@ -45,13 +46,13 @@ def sendNZB(nzb):
# set up a dict with the URL params in it # set up a dict with the URL params in it
params = {} params = {}
if sickbeard.SAB_USERNAME != None: if sickbeard.SAB_USERNAME is not None:
params['ma_username'] = sickbeard.SAB_USERNAME params['ma_username'] = sickbeard.SAB_USERNAME
if sickbeard.SAB_PASSWORD != None: if sickbeard.SAB_PASSWORD is not None:
params['ma_password'] = sickbeard.SAB_PASSWORD params['ma_password'] = sickbeard.SAB_PASSWORD
if sickbeard.SAB_APIKEY != None: if sickbeard.SAB_APIKEY is not None:
params['apikey'] = sickbeard.SAB_APIKEY params['apikey'] = sickbeard.SAB_APIKEY
if sickbeard.SAB_CATEGORY != None: if sickbeard.SAB_CATEGORY is not None:
params['cat'] = sickbeard.SAB_CATEGORY params['cat'] = sickbeard.SAB_CATEGORY
# use high priority if specified (recently aired episode) # use high priority if specified (recently aired episode)
@ -64,7 +65,7 @@ def sendNZB(nzb):
if nzb.provider.getID() == 'newzbin': if nzb.provider.getID() == 'newzbin':
id = nzb.provider.getIDFromURL(nzb.url) id = nzb.provider.getIDFromURL(nzb.url)
if not id: if not id:
logger.log("Unable to send NZB to sab, can't find ID in URL " + str(nzb.url), logger.ERROR) logger.log("Unable to send NZB to SABnzbd, can't find ID in URL " + str(nzb.url), logger.ERROR)
return False return False
params['mode'] = 'addid' params['mode'] = 'addid'
params['name'] = id params['name'] = id
@ -79,8 +80,8 @@ def sendNZB(nzb):
url = sickbeard.SAB_HOST + "api?" + urllib.urlencode(params) url = sickbeard.SAB_HOST + "api?" + urllib.urlencode(params)
logger.log(u"Sending NZB to SABnzbd") logger.log(u"Sending NZB to SABnzbd: %s" % nzb.name)
logger.log(u"URL: " + url, logger.DEBUG) logger.log(u"SABnzbd URL: " + url, logger.DEBUG)
try: try:
# if we have the URL to an NZB then we've built up the SAB API URL already so just call it # if we have the URL to an NZB then we've built up the SAB API URL already so just call it
@ -99,15 +100,15 @@ def sendNZB(nzb):
f = opener.open(req) f = opener.open(req)
except (EOFError, IOError), e: except (EOFError, IOError), e:
logger.log(u"Unable to connect to SAB: " + ex(e), logger.ERROR) logger.log(u"Unable to connect to SABnzbd: " + ex(e), logger.ERROR)
return False return False
except httplib.InvalidURL, e: except httplib.InvalidURL, e:
logger.log(u"Invalid SAB host, check your config: " + ex(e), logger.ERROR) logger.log(u"Invalid SABnzbd host, check your config: " + ex(e), logger.ERROR)
return False return False
# this means we couldn't open the connection or something just as bad # this means we couldn't open the connection or something just as bad
if f == None: if f is None:
logger.log(u"No data returned from SABnzbd, NZB not sent", logger.ERROR) logger.log(u"No data returned from SABnzbd, NZB not sent", logger.ERROR)
return False return False
@ -115,7 +116,7 @@ def sendNZB(nzb):
try: try:
result = f.readlines() result = f.readlines()
except Exception, e: except Exception, e:
logger.log(u"Error trying to get result from SAB, NZB not sent: " + ex(e), logger.ERROR) logger.log(u"Error trying to get result from SABnzbd, NZB not sent: " + ex(e), logger.ERROR)
return False return False
# SAB shouldn't return a blank result, this most likely (but not always) means that it timed out and didn't recieve the NZB # SAB shouldn't return a blank result, this most likely (but not always) means that it timed out and didn't recieve the NZB
@ -126,17 +127,17 @@ def sendNZB(nzb):
# massage the result a little bit # massage the result a little bit
sabText = result[0].strip() sabText = result[0].strip()
logger.log(u"Result text from SAB: " + sabText, logger.DEBUG) logger.log(u"Result text from SABnzbd: " + sabText, logger.DEBUG)
# do some crude parsing of the result text to determine what SAB said # do some crude parsing of the result text to determine what SAB said
if sabText == "ok": if sabText == "ok":
logger.log(u"NZB sent to SAB successfully", logger.DEBUG) logger.log(u"NZB sent to SABnzbd successfully", logger.DEBUG)
return True return True
elif sabText == "Missing authentication": elif sabText == "Missing authentication":
logger.log(u"Incorrect username/password sent to SAB, NZB not sent", logger.ERROR) logger.log(u"Incorrect username/password sent to SABnzbd, NZB not sent", logger.ERROR)
return False return False
else: else:
logger.log(u"Unknown failure sending NZB to sab. Return text is: " + sabText, logger.ERROR) logger.log(u"Unknown failure sending NZB to SABnzbd. Return text is: " + sabText, logger.ERROR)
return False return False
@ -144,12 +145,12 @@ def _checkSabResponse(f):
try: try:
result = f.readlines() result = f.readlines()
except Exception, e: except Exception, e:
logger.log(u"Error trying to get result from SAB" + ex(e), logger.ERROR) logger.log(u"Error trying to get result from SABnzbd" + ex(e), logger.ERROR)
return False, "Error from SAB" return False, "Error from SABnzbd"
if len(result) == 0: if len(result) == 0:
logger.log(u"No data returned from SABnzbd, NZB not sent", logger.ERROR) logger.log(u"No data returned from SABnzbd, NZB not sent", logger.ERROR)
return False, "No data from SAB" return False, "No data from SABnzbd"
sabText = result[0].strip() sabText = result[0].strip()
sabJson = {} sabJson = {}
@ -159,8 +160,8 @@ def _checkSabResponse(f):
pass pass
if sabText == "Missing authentication": if sabText == "Missing authentication":
logger.log(u"Incorrect username/password sent to SAB", logger.ERROR) logger.log(u"Incorrect username/password sent to SABnzbd", logger.ERROR)
return False, "Incorrect username/password sent to SAB" return False, "Incorrect username/password sent to SABnzbd"
elif 'error' in sabJson: elif 'error' in sabJson:
logger.log(sabJson['error'], logger.ERROR) logger.log(sabJson['error'], logger.ERROR)
return False, sabJson['error'] return False, sabJson['error']
@ -172,12 +173,12 @@ def _sabURLOpenSimple(url):
try: try:
f = urllib.urlopen(url) f = urllib.urlopen(url)
except (EOFError, IOError), e: except (EOFError, IOError), e:
logger.log(u"Unable to connect to SAB: " + ex(e), logger.ERROR) logger.log(u"Unable to connect to SABnzbd: " + ex(e), logger.ERROR)
return False, "Unable to connect" return False, "Unable to connect"
except httplib.InvalidURL, e: except httplib.InvalidURL, e:
logger.log(u"Invalid SAB host, check your config: " + ex(e), logger.ERROR) logger.log(u"Invalid SABnzbd host, check your config: " + ex(e), logger.ERROR)
return False, "Invalid SAB host" return False, "Invalid SABnzbd host"
if f == None: if f is None:
logger.log(u"No data returned from SABnzbd", logger.ERROR) logger.log(u"No data returned from SABnzbd", logger.ERROR)
return False, "No data returned from SABnzbd" return False, "No data returned from SABnzbd"
else: else:

View file

@ -481,7 +481,7 @@ def xem_refresh(indexer_id, indexer, force=False):
if refresh or force: if refresh or force:
logger.log( logger.log(
u'Looking up XEM scene mapping using for show %s on %s' % (indexer_id, sickbeard.indexerApi(indexer).name,), u'Looking up XEM scene mapping for show %s on %s' % (indexer_id, sickbeard.indexerApi(indexer).name,),
logger.DEBUG) logger.DEBUG)
# mark refreshed # mark refreshed
@ -493,7 +493,7 @@ def xem_refresh(indexer_id, indexer, force=False):
try: try:
parsedJSON = sickbeard.helpers.getURL(url, json=True) parsedJSON = sickbeard.helpers.getURL(url, json=True)
if not parsedJSON or parsedJSON == '': if not parsedJSON or parsedJSON == '':
logger.log(u'No XEN data for show "%s on %s"' % (indexer_id, sickbeard.indexerApi(indexer).name,), logger.MESSAGE) logger.log(u'No XEM data for show "%s on %s"' % (indexer_id, sickbeard.indexerApi(indexer).name,), logger.MESSAGE)
return return
if 'success' in parsedJSON['result']: if 'success' in parsedJSON['result']:

View file

@ -296,7 +296,7 @@ def isFirstBestMatch(result):
Checks if the given result is a best quality match and if we want to archive the episode on first match. Checks if the given result is a best quality match and if we want to archive the episode on first match.
""" """
logger.log(u"Checking if we should archive our first best quality match for for episode " + result.name, logger.log(u"Checking if we should archive our first best quality match for episode " + result.name,
logger.DEBUG) logger.DEBUG)
show_obj = result.episodes[0].show show_obj = result.episodes[0].show
@ -550,7 +550,7 @@ def searchProviders(show, episodes, manualSearch=False):
# if we need every ep in the season and there's nothing better then just download this and be done with it (unless single episodes are preferred) # if we need every ep in the season and there's nothing better then just download this and be done with it (unless single episodes are preferred)
if allWanted and bestSeasonResult.quality == highest_quality_overall: if allWanted and bestSeasonResult.quality == highest_quality_overall:
logger.log( logger.log(
u"Every ep in this season is needed, downloading the whole " + bestSeasonResult.provider.providerType + " " + bestSeasonResult.name) u"Every episode in this season is needed, downloading the whole " + bestSeasonResult.provider.providerType + " " + bestSeasonResult.name)
epObjs = [] epObjs = []
for curEpNum in allEps: for curEpNum in allEps:
epObjs.append(show.getEpisode(season, curEpNum)) epObjs.append(show.getEpisode(season, curEpNum))
@ -560,7 +560,7 @@ def searchProviders(show, episodes, manualSearch=False):
elif not anyWanted: elif not anyWanted:
logger.log( logger.log(
u"No eps from this season are wanted at this quality, ignoring the result of " + bestSeasonResult.name, u"No episodes from this season are wanted at this quality, ignoring the result of " + bestSeasonResult.name,
logger.DEBUG) logger.DEBUG)
else: else:
@ -590,7 +590,7 @@ def searchProviders(show, episodes, manualSearch=False):
# Season result from Torrent Provider must be a full-season torrent, creating multi-ep result for it. # Season result from Torrent Provider must be a full-season torrent, creating multi-ep result for it.
logger.log( logger.log(
u"Adding multi-ep result for full-season torrent. Set the episodes you don't want to 'don't download' in your torrent client if desired!") u"Adding multi episode result for full season torrent. Set the episodes you don't want to 'don't download' in your torrent client if desired!")
epObjs = [] epObjs = []
for curEpNum in allEps: for curEpNum in allEps:
epObjs.append(show.getEpisode(season, curEpNum)) epObjs.append(show.getEpisode(season, curEpNum))
@ -607,11 +607,11 @@ def searchProviders(show, episodes, manualSearch=False):
if MULTI_EP_RESULT in foundResults[curProvider.name]: if MULTI_EP_RESULT in foundResults[curProvider.name]:
for multiResult in foundResults[curProvider.name][MULTI_EP_RESULT]: for multiResult in foundResults[curProvider.name][MULTI_EP_RESULT]:
logger.log(u"Seeing if we want to bother with multi-episode result " + multiResult.name, logger.DEBUG) logger.log(u"Seeing if we want to bother with multi episode result " + multiResult.name, logger.DEBUG)
if sickbeard.USE_FAILED_DOWNLOADS and failed_history.hasFailed(multiResult.name, multiResult.size, if sickbeard.USE_FAILED_DOWNLOADS and failed_history.hasFailed(multiResult.name, multiResult.size,
multiResult.provider.name): multiResult.provider.name):
logger.log(multiResult.name + u" has previously failed, rejecting this multi-ep result") logger.log(multiResult.name + u" has previously failed, rejecting this multi episode result")
continue continue
# see how many of the eps that this result covers aren't covered by single results # see how many of the eps that this result covers aren't covered by single results
@ -626,11 +626,11 @@ def searchProviders(show, episodes, manualSearch=False):
notNeededEps.append(epNum) notNeededEps.append(epNum)
logger.log( logger.log(
u"Single-ep check result is neededEps: " + str(neededEps) + ", notNeededEps: " + str(notNeededEps), u"Single episode check result is needed episodes: " + str(neededEps) + ", not needed episodes: " + str(notNeededEps),
logger.DEBUG) logger.DEBUG)
if not notNeededEps: if not notNeededEps:
logger.log(u"All of these episodes were covered by single episode results, ignoring this multi-episode result", logger.DEBUG) logger.log(u"All of these episodes were covered by single episode results, ignoring this multi episode result", logger.DEBUG)
continue continue
# check if these eps are already covered by another multi-result # check if these eps are already covered by another multi-result
@ -644,12 +644,12 @@ def searchProviders(show, episodes, manualSearch=False):
multiNeededEps.append(epNum) multiNeededEps.append(epNum)
logger.log( logger.log(
u"Multi-ep check result is multiNeededEps: " + str(multiNeededEps) + ", multiNotNeededEps: " + str( u"Multi episode check result is multi needed episodes: " + str(multiNeededEps) + ", multi not needed episodes: " + str(
multiNotNeededEps), logger.DEBUG) multiNotNeededEps), logger.DEBUG)
if not multiNeededEps: if not multiNeededEps:
logger.log( logger.log(
u"All of these episodes were covered by another multi-episode nzbs, ignoring this multi-ep result", u"All of these episodes were covered by another multi episode nzb, ignoring this multi episode result",
logger.DEBUG) logger.DEBUG)
continue continue
@ -662,8 +662,8 @@ def searchProviders(show, episodes, manualSearch=False):
epNum = epObj.episode epNum = epObj.episode
if epNum in foundResults[curProvider.name]: if epNum in foundResults[curProvider.name]:
logger.log( logger.log(
u"A needed multi-episode result overlaps with a single-episode result for ep #" + str( u"A needed multi episode result overlaps with a single episode result for episode #" + str(
epNum) + ", removing the single-episode results from the list", logger.DEBUG) epNum) + ", removing the single episode results from the list", logger.DEBUG)
del foundResults[curProvider.name][epNum] del foundResults[curProvider.name][epNum]
# of all the single ep results narrow it down to the best one for each episode # of all the single ep results narrow it down to the best one for each episode

View file

@ -106,7 +106,7 @@ class ShowQueue(generic_queue.GenericQueue):
if (self.isBeingUpdated(show) or self.isInUpdateQueue(show)) and not force: if (self.isBeingUpdated(show) or self.isInUpdateQueue(show)) and not force:
logger.log( logger.log(
u"A refresh was attempted but there is already an update queued or in progress. Since updates do a refres at the end anyway I'm skipping this request.", u"A refresh was attempted but there is already an update queued or in progress. Since updates do a refresh at the end anyway I'm skipping this request.",
logger.DEBUG) logger.DEBUG)
return return
@ -336,7 +336,7 @@ class QueueItemAdd(ShowQueueItem):
self.show.loadIMDbInfo() self.show.loadIMDbInfo()
except imdb_exceptions.IMDbError, e: except imdb_exceptions.IMDbError, e:
#todo Insert UI notification #todo Insert UI notification
logger.log(u" Something wrong on IMDb api: " + ex(e), logger.WARNING) logger.log(u"Something is wrong with IMDb api: " + ex(e), logger.WARNING)
except Exception, e: except Exception, e:
logger.log(u"Error loading IMDb info: " + ex(e), logger.ERROR) logger.log(u"Error loading IMDb info: " + ex(e), logger.ERROR)
@ -365,7 +365,7 @@ class QueueItemAdd(ShowQueueItem):
try: try:
self.show.loadEpisodesFromDir() self.show.loadEpisodesFromDir()
except Exception, e: except Exception, e:
logger.log(u"Error searching dir for episodes: " + ex(e), logger.ERROR) logger.log(u"Error searching directory for episodes: " + ex(e), logger.ERROR)
logger.log(traceback.format_exc(), logger.DEBUG) logger.log(traceback.format_exc(), logger.DEBUG)
# if they gave a custom status then change all the eps to it # if they gave a custom status then change all the eps to it
@ -450,7 +450,7 @@ class QueueItemRename(ShowQueueItem):
try: try:
show_loc = self.show.location show_loc = self.show.location
except exceptions.ShowDirNotFoundException: except exceptions.ShowDirNotFoundException:
logger.log(u"Can't perform rename on " + self.show.name + " when the show dir is missing.", logger.WARNING) logger.log(u"Can't perform rename on " + self.show.name + " when the show directory is missing.", logger.WARNING)
return return
ep_obj_rename_list = [] ep_obj_rename_list = []
@ -519,7 +519,7 @@ class QueueItemUpdate(ShowQueueItem):
try: try:
self.show.loadIMDbInfo() self.show.loadIMDbInfo()
except imdb_exceptions.IMDbError, e: except imdb_exceptions.IMDbError, e:
logger.log(u" Something wrong on IMDb api: " + ex(e), logger.WARNING) logger.log(u"Something is wrong with IMDb api: " + ex(e), logger.WARNING)
except Exception, e: except Exception, e:
logger.log(u"Error loading IMDb info: " + ex(e), logger.ERROR) logger.log(u"Error loading IMDb info: " + ex(e), logger.ERROR)
logger.log(traceback.format_exc(), logger.DEBUG) logger.log(traceback.format_exc(), logger.DEBUG)

View file

@ -333,7 +333,7 @@ class TVShow(object):
result = False result = False
if not ek.ek(os.path.isdir, self._location): if not ek.ek(os.path.isdir, self._location):
logger.log(str(self.indexerid) + u": Show dir doesn't exist, skipping NFO generation") logger.log(str(self.indexerid) + u": Show directory doesn't exist, skipping NFO generation")
return False return False
logger.log(str(self.indexerid) + u": Writing NFOs for show") logger.log(str(self.indexerid) + u": Writing NFOs for show")
@ -345,7 +345,7 @@ class TVShow(object):
def writeMetadata(self, show_only=False): def writeMetadata(self, show_only=False):
if not ek.ek(os.path.isdir, self._location): if not ek.ek(os.path.isdir, self._location):
logger.log(str(self.indexerid) + u": Show dir doesn't exist, skipping NFO generation") logger.log(str(self.indexerid) + u": Show directory doesn't exist, skipping NFO generation")
return return
self.getImages() self.getImages()
@ -358,7 +358,7 @@ class TVShow(object):
def writeEpisodeNFOs(self): def writeEpisodeNFOs(self):
if not ek.ek(os.path.isdir, self._location): if not ek.ek(os.path.isdir, self._location):
logger.log(str(self.indexerid) + u": Show dir doesn't exist, skipping NFO generation") logger.log(str(self.indexerid) + u": Show directory doesn't exist, skipping NFO generation")
return return
logger.log(str(self.indexerid) + u": Writing NFOs for all episodes") logger.log(str(self.indexerid) + u": Writing NFOs for all episodes")
@ -376,7 +376,7 @@ class TVShow(object):
def updateMetadata(self): def updateMetadata(self):
if not ek.ek(os.path.isdir, self._location): if not ek.ek(os.path.isdir, self._location):
logger.log(str(self.indexerid) + u": Show dir doesn't exist, skipping NFO generation") logger.log(str(self.indexerid) + u": Show directory doesn't exist, skipping NFO generation")
return return
self.updateShowNFO() self.updateShowNFO()
@ -386,7 +386,7 @@ class TVShow(object):
result = False result = False
if not ek.ek(os.path.isdir, self._location): if not ek.ek(os.path.isdir, self._location):
logger.log(str(self.indexerid) + u": Show dir doesn't exist, skipping NFO generation") logger.log(str(self.indexerid) + u": Show directory doesn't exist, skipping NFO generation")
return False return False
logger.log(str(self.indexerid) + u": Updating NFOs for show with new indexer info") logger.log(str(self.indexerid) + u": Updating NFOs for show with new indexer info")
@ -399,7 +399,7 @@ class TVShow(object):
def loadEpisodesFromDir(self): def loadEpisodesFromDir(self):
if not ek.ek(os.path.isdir, self._location): if not ek.ek(os.path.isdir, self._location):
logger.log(str(self.indexerid) + u": Show dir doesn't exist, not loading episodes from disk") logger.log(str(self.indexerid) + u": Show directory doesn't exist, not loading episodes from disk")
return return
logger.log(str(self.indexerid) + u": Loading all episodes from the show directory " + self._location) logger.log(str(self.indexerid) + u": Loading all episodes from the show directory " + self._location)
@ -706,14 +706,14 @@ class TVShow(object):
# if it was snatched and now exists then set the status correctly # if it was snatched and now exists then set the status correctly
if oldStatus == SNATCHED and oldQuality <= newQuality: if oldStatus == SNATCHED and oldQuality <= newQuality:
logger.log(u"STATUS: this ep used to be snatched with quality " + Quality.qualityStrings[ logger.log(u"STATUS: this episode used to be snatched with quality " + Quality.qualityStrings[
oldQuality] + u" but a file exists with quality " + Quality.qualityStrings[ oldQuality] + u" but a file exists with quality " + Quality.qualityStrings[
newQuality] + u" so I'm setting the status to DOWNLOADED", logger.DEBUG) newQuality] + u" so I'm setting the status to DOWNLOADED", logger.DEBUG)
newStatus = DOWNLOADED newStatus = DOWNLOADED
# if it was snatched proper and we found a higher quality one then allow the status change # if it was snatched proper and we found a higher quality one then allow the status change
elif oldStatus == SNATCHED_PROPER and oldQuality < newQuality: elif oldStatus == SNATCHED_PROPER and oldQuality < newQuality:
logger.log(u"STATUS: this ep used to be snatched proper with quality " + Quality.qualityStrings[ logger.log(u"STATUS: this episode used to be snatched proper with quality " + Quality.qualityStrings[
oldQuality] + u" but a file exists with quality " + Quality.qualityStrings[ oldQuality] + u" but a file exists with quality " + Quality.qualityStrings[
newQuality] + u" so I'm setting the status to DOWNLOADED", logger.DEBUG) newQuality] + u" so I'm setting the status to DOWNLOADED", logger.DEBUG)
newStatus = DOWNLOADED newStatus = DOWNLOADED
@ -1110,7 +1110,7 @@ class TVShow(object):
def downloadSubtitles(self, force=False): def downloadSubtitles(self, force=False):
# TODO: Add support for force option # TODO: Add support for force option
if not ek.ek(os.path.isdir, self._location): if not ek.ek(os.path.isdir, self._location):
logger.log(str(self.indexerid) + ": Show dir doesn't exist, can't download subtitles", logger.DEBUG) logger.log(str(self.indexerid) + ": Show directory doesn't exist, can't download subtitles", logger.DEBUG)
return return
logger.log(str(self.indexerid) + ": Downloading subtitles", logger.DEBUG) logger.log(str(self.indexerid) + ": Downloading subtitles", logger.DEBUG)
@ -1718,7 +1718,7 @@ class TVEpisode(object):
if not ek.ek(os.path.isdir, if not ek.ek(os.path.isdir,
self.show._location) and not sickbeard.CREATE_MISSING_SHOW_DIRS and not sickbeard.ADD_SHOWS_WO_DIR: self.show._location) and not sickbeard.CREATE_MISSING_SHOW_DIRS and not sickbeard.ADD_SHOWS_WO_DIR:
logger.log( logger.log(
u"The show dir is missing, not bothering to change the episode statuses since it'd probably be invalid") u"The show directory is missing, not bothering to change the episode statuses since it'd probably be invalid")
return return
if self.location: if self.location:
@ -1752,7 +1752,7 @@ class TVEpisode(object):
else: else:
logger.log( logger.log(
u"Not touching status because we have no ep file, the airdate is in the past, and the status is " + str( u"Not touching status because we have no episode file, the airdate is in the past, and the status is " + str(
self.status), logger.DEBUG) self.status), logger.DEBUG)
# if we have a media file then it's downloaded # if we have a media file then it's downloaded
@ -1773,7 +1773,7 @@ class TVEpisode(object):
if not ek.ek(os.path.isdir, self.show._location): if not ek.ek(os.path.isdir, self.show._location):
logger.log( logger.log(
str(self.show.indexerid) + u": The show dir is missing, not bothering to try loading the episode NFO") str(self.show.indexerid) + u": The show directory is missing, not bothering to try loading the episode NFO")
return return
logger.log( logger.log(
@ -1876,7 +1876,7 @@ class TVEpisode(object):
def createMetaFiles(self): def createMetaFiles(self):
if not ek.ek(os.path.isdir, self.show._location): if not ek.ek(os.path.isdir, self.show._location):
logger.log(str(self.show.indexerid) + u": The show dir is missing, not bothering to try to create metadata") logger.log(str(self.show.indexerid) + u": The show directory is missing, not bothering to try to create metadata")
return return
self.createNFO() self.createNFO()