summaryrefslogtreecommitdiff
path: root/imdb-lookup/imdbinfo.py
diff options
context:
space:
mode:
authorYves Fischer <yvesf-git@xapek.org>2014-12-21 23:16:15 +0100
committerYves Fischer <yvesf-git@xapek.org>2014-12-21 23:16:15 +0100
commit9b0aba6b3f30917b7556cb002fc5c86d1da40f38 (patch)
tree776b48f2e9d8b2aabbfab27442861b00d75fac4a /imdb-lookup/imdbinfo.py
parent6033e5b6534551f28fb14467a6c01c48bc136880 (diff)
downloadscripts-9b0aba6b3f30917b7556cb002fc5c86d1da40f38.tar.gz
scripts-9b0aba6b3f30917b7556cb002fc5c86d1da40f38.zip
parallel
Diffstat (limited to 'imdb-lookup/imdbinfo.py')
-rwxr-xr-ximdb-lookup/imdbinfo.py101
1 files changed, 50 insertions, 51 deletions
diff --git a/imdb-lookup/imdbinfo.py b/imdb-lookup/imdbinfo.py
index 7457c98..b7300cc 100755
--- a/imdb-lookup/imdbinfo.py
+++ b/imdb-lookup/imdbinfo.py
@@ -13,7 +13,7 @@ import shutil
import logging
import hashlib
from io import BytesIO
-
+from multiprocessing import Pool
try:
from PIL import Image, ImageFilter
import tmdbsimple as tmdb
@@ -173,7 +173,7 @@ class TMDBCache(object):
data = json.loads(r.text)
r.close()
assert data is not None and data['data'], "Data must not be empty"
- return data
+ return data['data']
return self._cache_json(movie_id, "imdb_maindetails", do_request)
def omdb_movie(self, movie_id):
@@ -285,12 +285,7 @@ def do_rating(args, imdb_ids):
for info in infos:
print("{rating:.02f} {imdb_id} {title:30s} avg=" +
"{vote_average:.1f} count={vote_count:.0f}".format(**info))
-
-
-def do_index(args, imdb_ids):
- """creates a index website"""
- valid_extensions = [".mkv", ".avi", ".mov", ".mp4", ".mpg"]
-
+def getInfo(a):
def listMovieFiles(path):
def listFiles():
for root, dirs, files in os.walk(path):
@@ -302,6 +297,50 @@ def do_index(args, imdb_ids):
files = [path]
return files
+ def poster(imdb_id):
+ data = db.poster_low(imdb_id)
+ if data:
+ if not os.path.exists(".index.html/poster"):
+ os.makedirs(".index.html/poster")
+
+ out = os.path.join(".index.html/poster",imdb_id+".jpg")
+ open(out, "wb").write(data)
+ return out
+ else:
+ return None
+ path, imdb_id = a
+ db = TMDBCache() #Protector(TMDBCache())
+ imdb = db.imdb_movie(imdb_id)
+ omdb = db.omdb_movie(imdb_id)
+ tmdb = db.infos(imdb_id)
+ if not imdb or not omdb or not tmdb:
+ print("Error in {} {}".format(path, imdb_id))
+ return None
+ else:
+ return {
+ 'id': imdb_id,
+ 'title': tmdb['title'],
+ 'path': path,
+ 'poster': poster(imdb_id),
+ 'tagline': 'tagline' in imdb and imdb['tagline'] or None,
+ 'plot': 'plot' in imdb and imdb['plot']['outline'] or None,
+ 'website': 'homepage' in imdb and imdb['homepage'] or omdb['Website'] != 'N/A' and omdb['Website'] or None,
+ 'release': 'release_date' in tmdb and tmdb['release_date'] or None,
+ 'movieFiles': list(listMovieFiles(path)),
+ 'imdbRating': imdb['rating'],
+ 'imdbVotes': imdb['num_votes'],
+ 'omdbTomatoConsensus': (omdb['tomatoConsensus'] != 'N/A') and omdb['tomatoConsensus'] or None,
+ 'omdbTomato': (omdb['tomatoMeter'] != 'N/A') and float(omdb['tomatoMeter']) or None,
+ 'omdbUserTomato': (omdb['tomatoUserMeter'] != 'N/A') and float(omdb['tomatoUserMeter']) or None,
+ 'omdbTomatoRating': (omdb['tomatoRating'] != 'N/A') and float(omdb['tomatoRating']) or None,
+ 'omdbTomatoUserRating': (omdb['tomatoUserRating'] != 'N/A') and float(omdb['tomatoUserRating']) or None,
+ 'tmdbId': tmdb['id'],
+ }
+
+def do_index(args, imdb_ids):
+ """creates a index website"""
+ valid_extensions = [".mkv", ".avi", ".mov", ".mp4", ".mpg"]
+
def install(filename):
outpath = os.path.join(".index.html", os.path.dirname(filename))
if not os.path.exists(outpath):
@@ -312,48 +351,6 @@ def do_index(args, imdb_ids):
return out
def data(callbackName):
- db = Protector(TMDBCache())
- def poster(imdb_id):
- data = db.poster_low(imdb_id)
- if data:
- if not os.path.exists(".index.html/poster"):
- os.makedirs(".index.html/poster")
-
- out = os.path.join(".index.html/poster",imdb_id+".jpg")
- open(out, "wb").write(data)
- return out
- else:
- return None
-
- def getInfo(a):
- path, imdb_id = a
- imdb = db.imdb_movie(imdb_id)['data']
- omdb = db.omdb_movie(imdb_id)
- tmdb = db.infos(imdb_id)
- if not imdb or not omdb or not tmdb:
- print("Error in {} {}".format(path, imdb_id))
- return None
- else:
- return {
- 'id': imdb_id,
- 'title': tmdb['title'],
- 'path': path,
- 'poster': poster(imdb_id),
- 'tagline': 'tagline' in imdb and imdb['tagline'] or None,
- 'plot': 'plot' in imdb and imdb['plot']['outline'] or None,
- 'website': 'homepage' in imdb and imdb['homepage'] or omdb['Website'] != 'N/A' and omdb['Website'] or None,
- 'release': 'release_date' in tmdb and tmdb['release_date'] or None,
- 'movieFiles': list(listMovieFiles(path)),
- 'imdbRating': imdb['rating'],
- 'imdbVotes': imdb['num_votes'],
- 'omdbTomatoConsensus': (omdb['tomatoConsensus'] != 'N/A') and omdb['tomatoConsensus'] or None,
- 'omdbTomato': (omdb['tomatoMeter'] != 'N/A') and float(omdb['tomatoMeter']) or None,
- 'omdbUserTomato': (omdb['tomatoUserMeter'] != 'N/A') and float(omdb['tomatoUserMeter']) or None,
- 'omdbTomatoRating': (omdb['tomatoRating'] != 'N/A') and float(omdb['tomatoRating']) or None,
- 'omdbTomatoUserRating': (omdb['tomatoUserRating'] != 'N/A') and float(omdb['tomatoUserRating']) or None,
- 'tmdbId': tmdb['id'],
- }
-
filename = ".index.html/js/data.js"
if not os.path.exists(os.path.dirname(filename)):
os.makedirs(os.path.dirname(filename))
@@ -361,7 +358,9 @@ def do_index(args, imdb_ids):
out = open(filename, "w")
out.write(callbackName)
out.write("(")
- json.dump(list(filter(bool, map(getInfo, imdb_ids))), out)
+ pool = Pool(processes=10) # parallel fetchers
+ infos = pool.map(getInfo, imdb_ids)
+ json.dump(list(filter(bool,infos)), out)
out.write(")")
out.close()
return filename