diff --git a/src/calibre/customize/ui.py b/src/calibre/customize/ui.py index 5f67e23d92..e9feacc67e 100644 --- a/src/calibre/customize/ui.py +++ b/src/calibre/customize/ui.py @@ -121,7 +121,8 @@ def enable_plugin(plugin_or_name): config['enabled_plugins'] = ep default_disabled_plugins = set([ - 'Douban Books', 'Douban.com covers', 'Nicebooks', 'Nicebooks covers' + 'Douban Books', 'Douban.com covers', 'Nicebooks', 'Nicebooks covers', + 'Kent District Library' ]) def is_disabled(plugin): diff --git a/src/calibre/ebooks/metadata/amazon.py b/src/calibre/ebooks/metadata/amazon.py index 58dd3f1d22..c87249ed39 100644 --- a/src/calibre/ebooks/metadata/amazon.py +++ b/src/calibre/ebooks/metadata/amazon.py @@ -205,7 +205,10 @@ def main(args=sys.argv): open(cpath, 'wb').write(br.open_novisit(curl).read()) print 'Cover for', title, 'saved to', cpath + #import time + #st = time.time() print get_social_metadata(title, None, None, isbn) + #print '\n\n', time.time() - st, '\n\n' return 0 diff --git a/src/calibre/ebooks/metadata/fetch.py b/src/calibre/ebooks/metadata/fetch.py index 4f246b2b9a..667b4f4d7c 100644 --- a/src/calibre/ebooks/metadata/fetch.py +++ b/src/calibre/ebooks/metadata/fetch.py @@ -106,6 +106,9 @@ class MetadataSource(Plugin): # {{{ def join(self): return self.worker.join() + def is_alive(self): + return self.worker.is_alive() + def is_customizable(self): return True @@ -251,7 +254,9 @@ class KentDistrictLibrary(MetadataSource): # {{{ name = 'Kent District Library' metadata_type = 'social' - description = _('Downloads series information from ww2.kdl.org') + description = _('Downloads series information from ww2.kdl.org. ' + 'This website cannot handle large numbers of queries, ' + 'so the plugin is disabled by default.') def fetch(self): if not self.title or not self.book_author: diff --git a/src/calibre/ebooks/metadata/kdl.py b/src/calibre/ebooks/metadata/kdl.py index 4eca49ad45..4d02bef602 100644 --- a/src/calibre/ebooks/metadata/kdl.py +++ b/src/calibre/ebooks/metadata/kdl.py @@ -5,7 +5,9 @@ __license__ = 'GPL v3' __copyright__ = '2011, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import re, urllib, urlparse +import re, urllib, urlparse, socket + +from mechanize import URLError from calibre.ebooks.metadata.book.base import Metadata from calibre import browser @@ -17,7 +19,7 @@ URL = \ _ignore_starts = u'\'"'+u''.join(unichr(x) for x in range(0x2018, 0x201e)+[0x2032, 0x2033]) -def get_series(title, authors): +def get_series(title, authors, timeout=5): mi = Metadata(title, authors) if title and title[0] in _ignore_starts: title = title[1:] @@ -39,7 +41,12 @@ def get_series(title, authors): url = URL.format(author, title) br = browser() - raw = br.open(url).read() + try: + raw = br.open_novisit(url, timeout=timeout).read() + except URLError, e: + if isinstance(e.reason, socket.timeout): + raise Exception('KDL Server busy, try again later') + raise if 'see the full results' not in raw: return mi raw = xml_to_unicode(raw)[0]