Convert all string formatting to new format.

This commit is contained in:
Stefan Bethke 2017-04-16 21:48:01 +02:00
parent eaef3a88bf
commit be05ae538f

View file

@ -168,9 +168,9 @@ def trimDescription(desc):
def saveCookies(session, filename): def saveCookies(session, filename):
cj = cookielib.MozillaCookieJar(filename) cj = cookielib.MozillaCookieJar(filename)
for cookie in session.cookies: for cookie in session.cookies:
logger.debug("storing cookie %s" % (cookie)) logger.debug("storing cookie {}".format(cookie))
cj.set_cookie(cookie) cj.set_cookie(cookie)
logger.debug("Saving cookies to %s" % (cj)) logger.debug("Saving cookies to {}".format(cj))
cj.save(ignore_discard=True, ignore_expires=True) cj.save(ignore_discard=True, ignore_expires=True)
@ -215,17 +215,17 @@ class TivoItem:
if self.episodeNumber and self.episodeNumber != u'0': if self.episodeNumber and self.episodeNumber != u'0':
en = int(self.episodeNumber) en = int(self.episodeNumber)
if en >= 100: if en >= 100:
self.name = "%s S%02dE%02d %s" % (self.title, en / 100, en % 100, self.episode) self.name = "{} S{:02d}E{:02d} {}".format(self.title, en / 100, en % 100, self.episode)
else: else:
self.name = "%s E%s %s" % (self.title, self.episodeNumber, self.episode) self.name = "{} E{} {}".format(self.title, self.episodeNumber, self.episode)
elif self.unique: elif self.unique:
self.name = "%s - %s" % (self.title, self.episode) self.name = "{} - {}".format(self.title, self.episode)
else: else:
self.name = "%s - %s - %s" % (self.title, self.datestr, self.episode) self.name = "{} - {} - {}".format(self.title, self.datestr, self.episode)
self.dir = "%s/%s" % (targetdir, re.sub("[:/]", "-", self.title)) self.dir = "{}/{}".format(targetdir, re.sub("[:/]", "-", self.title))
self.file = "%s/%s" % (self.dir, re.sub("[:/]", "-", self.name)) self.file = "{}/{}".format(self.dir, re.sub("[:/]", "-", self.name))
self.name = self.name.encode("utf-8"); self.name = self.name.encode("utf-8");
self.dir = self.dir.encode("utf-8"); self.dir = self.dir.encode("utf-8");
self.file = self.file.encode("utf-8"); self.file = self.file.encode("utf-8");
def getPath(self, options): def getPath(self, options):
title = self.title title = self.title
@ -234,14 +234,14 @@ class TivoItem:
if self.episodeNumber and self.episodeNumber != u'0': if self.episodeNumber and self.episodeNumber != u'0':
en = int(self.episodeNumber) en = int(self.episodeNumber)
if en >= 100: if en >= 100:
name = "%s S%02dE%02d %s" % (title, en / 100, en % 100, self.episode) name = "{} S{:02d}E{:02d} {}".format(title, en / 100, en % 100, self.episode)
else: else:
name = "%s E%s %s" % (title, self.episodeNumber, self.episode) name = "{} E{} {}".format(title, self.episodeNumber, self.episode)
elif self.unique: elif self.unique:
name = "%s - %s" % (title, self.episode) name = "{} - {}".format(title, self.episode)
else: else:
name = "%s - %s %s" % (title, self.shortdate, self.episode) name = "{} - {} {}".format(title, self.shortdate, self.episode)
path = "%s/%s" % (self.dir, re.sub("[:/]", "-", name)) path = "{}/{}".format(self.dir, re.sub("[:/]", "-", name))
return path.encode("utf-8"); return path.encode("utf-8");
def __str__(self): def __str__(self):
return repr(self.title) return repr(self.title)
@ -277,7 +277,7 @@ class TivoToc:
'AnchorOffset': offset 'AnchorOffset': offset
} }
url = "https://{}/TiVoConnect".format(host) url = "https://{}/TiVoConnect".format(host)
logger.debug(" offset %d" % (offset)) logger.debug(" offset {}".format(offset))
r = session.get(url, params=params, timeout=30, verify=False, proxies=proxies, headers=headers) r = session.get(url, params=params, timeout=30, verify=False, proxies=proxies, headers=headers)
if r.status_code != 200: if r.status_code != 200:
r.raise_for_status() r.raise_for_status()
@ -382,7 +382,7 @@ def download_item(item, mak, target):
upd = start upd = start
url = item.url url = item.url
#url = re.sub("tivo.lassitu.de:80", "wavehh.lassitu.de:30080", url) #url = re.sub("tivo.lassitu.de:80", "wavehh.lassitu.de:30080", url)
logger.info("--- downloading \"%s\"" % (url)) logger.info("--- downloading \"{}\"".format(url))
logger.info(" {}".format(target)) logger.info(" {}".format(target))
start = time.time() start = time.time()
r = session.get(url, stream=True, verify=False, proxies=proxies, headers=headers) r = session.get(url, stream=True, verify=False, proxies=proxies, headers=headers)
@ -398,7 +398,7 @@ def download_item(item, mak, target):
upd = time.time() upd = time.time()
dur = now - start dur = now - start
mb = count / 1e6 mb = count / 1e6
print "%5.1f%% %5.3f GB downloaded in %.0f min, %.3f MB/s" % ( print "{:5.1f}% {:5.3f} GB downloaded in {:.0f} min, {.3f} MB/s".format(
100.0 * count / item.sourcesize, 100.0 * count / item.sourcesize,
mb / 1e3, dur / 60, mb / dur) mb / 1e3, dur / 60, mb / dur)
try: try:
@ -417,11 +417,11 @@ def download_item(item, mak, target):
upd = now upd = now
dur = now - start dur = now - start
mb = count / 1e6 mb = count / 1e6
logger.debug(" %5.1f%% %5.3f GB downloaded in %.0f min, %.3f MB/s" % ( logger.debug(" {:5.1f}% {:5.3f} GB downloaded in {:.0f} min, {:.3f} MB/s".format(
100.0 * count / item.sourcesize, 100.0 * count / item.sourcesize,
mb / 1e3, dur / 60, mb / dur)) mb / 1e3, dur / 60, mb / dur))
except Exception as e: except Exception as e:
logger.error("problem decoding: %s" % (e)) logger.error("problem decoding: {}".format(e))
raise raise
finally: finally:
try: try:
@ -430,7 +430,7 @@ def download_item(item, mak, target):
pass pass
elapsed = time.time() - start elapsed = time.time() - start
throughput = count / elapsed throughput = count / elapsed
logger.info("%5.3fGB transferred in %d:%02d, %.1f MB/s" % ( logger.info("{:5.3f} GB transferred in {:d}:{:02d}, {:.1f} MB/s".format(
count/1e9, int(elapsed/3600), int(elapsed / 60) % 60, throughput/1e6)) count/1e9, int(elapsed/3600), int(elapsed / 60) % 60, throughput/1e6))
try: try:
p_decode.stdin.close() p_decode.stdin.close()
@ -444,7 +444,7 @@ def download_item(item, mak, target):
except Exception, e: except Exception, e:
pass pass
p_decode.wait() p_decode.wait()
logger.info("tivodecode exited with %s" % (p_decode.returncode)) logger.info("tivodecode exited with {}".format(p_decode.returncode))
size = os.path.getsize(target) size = os.path.getsize(target)
if size < 1024 or size < item.sourcesize * 0.8: if size < 1024 or size < item.sourcesize * 0.8:
logger.error("error downloading file: too small") logger.error("error downloading file: too small")
@ -453,7 +453,7 @@ def download_item(item, mak, target):
def download_decode(item, options, mak): def download_decode(item, options, mak):
target = "%s.mpg" % item.getPath(options) target = "{}.mpg".format(item.getPath(options))
try: try:
os.makedirs(item.dir) os.makedirs(item.dir)
except OSError: except OSError:
@ -475,7 +475,7 @@ def download_decode(item, options, mak):
def download_one(item, downloaddb, options): def download_one(item, downloaddb, options):
global logger, mak global logger, mak
logger.info("*** downloading \"%s\": %.3fGB" % (item.name, item.sourcesize / 1e9)) logger.info("*** downloading \"{}\": {:.3f} GB".format(item.name, item.sourcesize / 1e9))
try: try:
download_decode(item, options, mak) download_decode(item, options, mak)
downloaddb[item.name] = item.datestr downloaddb[item.name] = item.datestr
@ -484,7 +484,7 @@ def download_one(item, downloaddb, options):
logger.debug("Sleeping 30 seconds before moving on...") logger.debug("Sleeping 30 seconds before moving on...")
time.sleep(30) time.sleep(30)
except TivoException, e: except TivoException, e:
logger.info("Error processing \"%s\": %s" % (item.name, e)) logger.info("Error processing \"{}\": {}".format(item.name, e))
def wantitem(item, downloaddb): def wantitem(item, downloaddb):
@ -503,16 +503,16 @@ def wantitem(item, downloaddb):
def mirror(toc, downloaddb, one=False): def mirror(toc, downloaddb, one=False):
avail = getAvail(targetdir) avail = getAvail(targetdir)
if avail < minfree: if avail < minfree:
logger.error("%s: %.1fG available, at least %.1fG needed, stopping" % \ logger.error("{}: {:.1f} GB available, at least {:.1f} GB needed, stopping".format\
(targetdir, avail / gig, minfree / gig)) (targetdir, avail / gig, minfree / gig))
sys.exit(1) sys.exit(1)
items = toc.getItems() items = toc.getItems()
logger.info("*** %d shows listed" % (len(items))) logger.info("*** {} shows listed".format(len(items)))
for item in items: for item in items:
options = wantitem(item, downloaddb) options = wantitem(item, downloaddb)
if isinstance(options, basestring): if isinstance(options, basestring):
logger.debug("*** skipping \"%s\": %s" % (item.name, options)) logger.debug("*** skipping \"{}\": {}".format(item.name, options))
else: else:
download_one(item, downloaddb, options) download_one(item, downloaddb, options)
if one: if one:
@ -528,7 +528,7 @@ def download_episode(toc, downloaddb, episode):
def printtoc(toc, downloaddb): def printtoc(toc, downloaddb):
items = toc.getItems() items = toc.getItems()
print "*** %d shows listed" % (len(items)) print "*** {} shows listed".format(len(items))
shows = {} shows = {}
for item in items: for item in items:
if item.title not in shows: if item.title not in shows:
@ -538,9 +538,9 @@ def printtoc(toc, downloaddb):
for item in sorted(shows[title], key=lambda i: i.name): for item in sorted(shows[title], key=lambda i: i.name):
options = wantitem(item, downloaddb) options = wantitem(item, downloaddb)
if isinstance(options, basestring): if isinstance(options, basestring):
print "%-7.7s: %s" % (options, item.name) print "{:>7.7s}: {}".format(options, item.name)
continue continue
print "*** downloading %s (%.3fGB)" % (item.name, item.sourcesize / 1e9) print "*** downloading %s ({:.3f} GB)".format(item.name, item.sourcesize / 1e9)
def main(): def main():
@ -548,7 +548,7 @@ def main():
curdir = os.getcwd() curdir = os.getcwd()
os.chdir(os.path.expanduser("~") + "/.tivo") os.chdir(os.path.expanduser("~") + "/.tivo")
handler = logging.handlers.RotatingFileHandler("tivomirror.log", maxBytes=2*1024*1024, backupCount=5) handler = logging.handlers.RotatingFileHandler("tivomirror.log", maxBytes=2*1024*1024, backupCount=5)
handler.setFormatter(logging.Formatter(fmt='tivomirror[%d] %%(asctime)s %%(levelname)6.6s %%(message)s' % (os.getpid()), handler.setFormatter(logging.Formatter(fmt='tivomirror[{}] %(asctime)s %(levelname)6.6s %(message)s'.format(os.getpid()),
datefmt='%H:%M:%S')) datefmt='%H:%M:%S'))
logger.addHandler(handler) logger.addHandler(handler)
downloaddb = anydbm.open("downloads.db", "c") downloaddb = anydbm.open("downloads.db", "c")
@ -589,8 +589,8 @@ def main():
elif cmd == "download": elif cmd == "download":
download_episode(toc, downloaddb, remainder[1]) download_episode(toc, downloaddb, remainder[1])
else: else:
logger.error("invalid command %s" % (cmd)) logger.error("invalid command {}".format(cmd))
print >>sys.stderr, "invalid command %s" % (cmd) print >>sys.stderr, "invalid command {}".format(cmd)
sys.exit(64) sys.exit(64)
downloaddb.close() downloaddb.close()