diff --git a/src/calibre/ebooks/metadata/amazon.py b/src/calibre/ebooks/metadata/amazon.py index 6eb106c862..c617a2beaf 100644 --- a/src/calibre/ebooks/metadata/amazon.py +++ b/src/calibre/ebooks/metadata/amazon.py @@ -121,6 +121,19 @@ def report(verbose): class AmazonError(Exception): pass +class ThreadwithResults(Thread): + def __init__(self, func, *args, **kargs): + self.func = func + self.args = args + self.kargs = kargs + self.result = None + Thread.__init__(self) + + def get_result(self): + return self.result + + def run(self): + self.result = self.func(*self.args, **self.kargs) class Query(object): diff --git a/src/calibre/ebooks/metadata/fetch.py b/src/calibre/ebooks/metadata/fetch.py index a7709f88b4..dbf0db7bfe 100644 --- a/src/calibre/ebooks/metadata/fetch.py +++ b/src/calibre/ebooks/metadata/fetch.py @@ -299,8 +299,8 @@ def search(title=None, author=None, publisher=None, isbn=None, isbndb_key=None, with MetadataSources(fetchers) as manager: manager(title, author, publisher, isbn, verbose) manager.join() - - results = list(fetchers[0].results) if fetchers else [] + + results = list(fetchers[0].results) if fetchers[0].results else [] for fetcher in fetchers[1:]: merge_results(results, fetcher.results) diff --git a/src/calibre/ebooks/metadata/isbndb.py b/src/calibre/ebooks/metadata/isbndb.py index b1a69e37c0..787d70eb51 100644 --- a/src/calibre/ebooks/metadata/isbndb.py +++ b/src/calibre/ebooks/metadata/isbndb.py @@ -25,7 +25,7 @@ class ISBNDB(MetadataSource): def fetch(self): if not self.site_customization: - return + return None try: self.results = search(self.title, self.book_author, self.publisher, self.isbn, max_results=10, verbose=self.verbose, key=self.site_customization) @@ -231,6 +231,7 @@ def search(title=None, author=None, publisher=None, isbn=None, #List of entry ans = ResultList() ans.populate(entries, verbose) + ans = [x for x in ans if x is not None] return list(dict((book.isbn, book) for book in ans).values()) def option_parser():