From 985e65d3864fa6a8575c9bb0f76ea8089eab72fc Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 24 Jun 2010 12:06:34 -0600 Subject: [PATCH] Metadata download: Make cover check multithreaded --- src/calibre/ebooks/metadata/fetch.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/calibre/ebooks/metadata/fetch.py b/src/calibre/ebooks/metadata/fetch.py index e7883d3757..0fd671f86a 100644 --- a/src/calibre/ebooks/metadata/fetch.py +++ b/src/calibre/ebooks/metadata/fetch.py @@ -287,15 +287,19 @@ class HeadRequest(urllib2.Request): def get_method(self): return "HEAD" -def check_for_covers(items): +def do_cover_check(item): opener = browser() - for item in items: - item.has_cover = False - try: - opener.open(HeadRequest(OPENLIBRARY%item.isbn), timeout=5) - item.has_cover = True - except: - pass # Cover not found + item.has_cover = False + try: + opener.open(HeadRequest(OPENLIBRARY%item.isbn), timeout=5) + item.has_cover = True + except: + pass # Cover not found + +def check_for_covers(items): + threads = [Thread(target=do_cover_check, args=(item,)) for item in items] + for t in threads: t.start() + for t in threads: t.join() def search(title=None, author=None, publisher=None, isbn=None, isbndb_key=None, verbose=0):