Metadata download: Make cover check multithreaded

This commit is contained in:
Kovid Goyal 2010-06-24 12:06:34 -06:00
parent bb5ab06f3b
commit 985e65d386

View File

@ -287,15 +287,19 @@ class HeadRequest(urllib2.Request):
def get_method(self): def get_method(self):
return "HEAD" return "HEAD"
def check_for_covers(items): def do_cover_check(item):
opener = browser() opener = browser()
for item in items: item.has_cover = False
item.has_cover = False try:
try: opener.open(HeadRequest(OPENLIBRARY%item.isbn), timeout=5)
opener.open(HeadRequest(OPENLIBRARY%item.isbn), timeout=5) item.has_cover = True
item.has_cover = True except:
except: pass # Cover not found
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, def search(title=None, author=None, publisher=None, isbn=None, isbndb_key=None,
verbose=0): verbose=0):