diff options
Diffstat (limited to 'imdb-lookup')
-rwxr-xr-x | imdb-lookup/imdbinfo.py | 12 | ||||
-rw-r--r-- | imdb-lookup/index.jinja2.html | 93 |
2 files changed, 66 insertions, 39 deletions
diff --git a/imdb-lookup/imdbinfo.py b/imdb-lookup/imdbinfo.py index 71fd5f7..7b23356 100755 --- a/imdb-lookup/imdbinfo.py +++ b/imdb-lookup/imdbinfo.py @@ -10,12 +10,14 @@ import base64 import argparse import math import logging +from StringIO import StringIO try: from urllib.parse import quote as urlencode except: from urllib import quote as urlencode try: + from PIL import Image import tmdbsimple as tmdb import requests except ImportError as e: @@ -104,8 +106,11 @@ class TMDBCache(object): p = self.poster(poster_path, format) if not p: return None contentType, data = p + image = Image.open(StringIO(data)) + buf = StringIO() + image.save(buf, "JPEG", quality=10, optimize=True) data64 = "".join(map(lambda c: isinstance(c,int) and chr(c) or c, - filter(lambda c: c!='\n', base64.encodestring(data)))) + filter(lambda c: c!='\n', base64.encodestring(buf.getvalue())))) return "data:{};base64,{}".format(contentType, data64) @@ -119,7 +124,8 @@ class Protector(object): return attr(*a,**kw) except KeyboardInterrupt as e: raise e - except: + except Exception as e: + logging.error("Error calling %s: %s", name, e) return None if callable(attr): return protected @@ -191,7 +197,7 @@ def do_index(args, imdb_ids): outfile = open("index.html", "wb") for output in stream: output = output.encode("utf-8") - outfile.write(output) + outfile.write(output.strip()) class HelpAction(argparse._HelpAction): def __call__(self, parser, namespace, values, option_string=None): diff --git a/imdb-lookup/index.jinja2.html b/imdb-lookup/index.jinja2.html index a87092e..019e937 100644 --- a/imdb-lookup/index.jinja2.html +++ b/imdb-lookup/index.jinja2.html @@ -5,51 +5,72 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>{{title}}</title> + <style> + .box { + margin: 2em 5em auto; + border-radius: 5px; + border: 2px solid gray; + box-shadow: 0px 0px 30px 0px gray; + background-color: #fafafa; + clear: both; + } + .td1 { + width: 1em; + font-size: 18pt; + padding: 5px; + } + .td2 { + margin: 10px; + width: 185px; + float: left; + min-height: 200px; + box-shadow: 0px 0px 5px 0px gray; + } + .td3 { padding-left: 2em; } + .td3 table td { padding: .2em; } + </style> </head> <body> - <h1>List of Movies</h1> {% for (filename, imdb_id) in input %} {% set info = tmdbcache.infos(imdb_id) %}</h2> {% set posterBase64 = tmdbcache.poster_base64(info['poster_path']) %} {% if info %} - <div style="clear: left; padding-top: 3em;"> - <h2 style=""> - {% if "vote_average" in info.keys() %} - {{ " ".join(["★"] * int(info["vote_average"])) }} - <span style="color:gray;"> - {{ " ".join(["☆"] * (10-int(info["vote_average"]))) }} - </span> - {% endif %} - {{ info.title }} - </h2> - <div style="width: 185px; float: left; min-height: 200px; border: 2px solid gray;"> - {% if posterBase64 %} - <a href="{{urlencode(filename)}}"> - <img src="{{ posterBase64 }}" /> - </a> - {% else %} - <span> no image </span> - {% endif %} - </div> - <div style=""> - <div style="font-size: 1.2em; padding: 2em;"> - {{ info.overview }} - </div> - <table style="padding: 2em;"> - {% for (key, value) in info.items() %} - {% if key in ['runtime','adult','homepage','release_date','original_title'] %} - <tr> - <td style="padding: 0.2em; font-style: italic;">{{ key }}</td> - <td style="padding: 0.2em;">{{ value }}</td> - </tr> + <div class="box"> + <table> + <tr> + {% if "vote_average" in info.keys() %} + <td class="td1"> + <span style="color:gray;">{{ " ".join(["☆"] * (10-int(info["vote_average"]))) }}</span> + <span style="color: #ffd700;">{{ " ".join(["★"] * int(info["vote_average"])) }}</span> + </td> {% endif %} - {% endfor %} - </table> - </div> + <td class="td2"> + {% if posterBase64 %} + <a href="{{urlencode(filename)}}"><img src="{{ posterBase64 }}" /></a> + {% else %} + <span> no image </span> + {% endif %} + </td> + <td class="td3"> + <div style="font-size: 2em;">{{ info.title }}</div> + <div style="font-size: 1.2em;">{{ info.overview }}</div> + <table style="padding: 2em;"> + {% for (key, value) in info.items() %} + {% if key in ['runtime','adult','homepage','release_date','original_title'] %} + <tr> + <td style="font-style: italic;">{{ key }}</td> + <td>{{ value }}</td> + </tr> + {% endif %} + {% endfor %} + </table> + </td> + </tr> + </table> </div> - {% else %} + {% else %} <span>No infos for {{filename}} {{imdb_id}}</span> - {% endif %} + {% endif %} {% endfor %} </body> </html> |