From 377a4dd4ae8563a6882858dd6c4e1063d039f400 Mon Sep 17 00:00:00 2001 From: Yves Fischer Date: Sat, 22 Nov 2014 16:51:53 +0100 Subject: exception handling and p27/py3 compatible encoding --- imdb-lookup/imdbinfo.py | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'imdb-lookup/imdbinfo.py') diff --git a/imdb-lookup/imdbinfo.py b/imdb-lookup/imdbinfo.py index f5efe17..54c4816 100755 --- a/imdb-lookup/imdbinfo.py +++ b/imdb-lookup/imdbinfo.py @@ -85,12 +85,9 @@ class TMDBCache(object): keyContentType = "poster_{}_{}_content_type".format(format, poster_path) url = "http://image.tmdb.org/t/p/{}/{}".format(format, poster_path) if key not in self.db_images: - try: - r = requests.get(url) - self.db_images[key] = r.content - self.db_images[keyContentType] = r.headers['content-type'] - except: - return None + r = requests.get(url) + self.db_images[key] = r.content + self.db_images[keyContentType] = r.headers['content-type'] return (self.db_images[keyContentType], self.db_images[key]) def poster_base64(self, poster_path, format="w185"): @@ -101,6 +98,22 @@ class TMDBCache(object): filter(lambda c: c!='\n', base64.encodestring(data)))) return "data:{};base64,{}".format(contentType, data64) + +class Protector(object): + def __init__(self, child): + self.child = child + def __getattr__(self, name): + attr = getattr(self.child, name) + def protected(*a, **kw): + try: + return attr(*a,**kw) + except: + return None + if callable(attr): + return protected + else: + return o + def do_aka(args, imdb_ids): with TMDBCache() as tmdbcache: for (filename, imdb_id) in imdb_ids: @@ -156,11 +169,12 @@ def do_index(args, imdb_ids): #posters = list(map(asBase64, map(tmdbcache.poster, map(lambda info: info['poster_path'], infos)))) mapping = { 'input' : imdb_ids, - 'tmdbcache' : tmdbcache, + 'tmdbcache' : Protector(tmdbcache), 'title' : 'Movie overview', } assert not os.path.exists("index.html"), "index.html already exists" - open("index.html", "w").write(template.render(mapping).encode('utf-8')) + output = template.render(mapping).encode("utf-8") + open("index.html", "wb").write(output) class HelpAction(argparse._HelpAction): def __call__(self, parser, namespace, values, option_string=None): -- cgit v1.2.1