Disable Kent District Library plugin to download series information. The website could not handle the load calibre's 2 million users put on it

This commit is contained in:
Kovid Goyal 2011-02-20 11:29:17 -07:00
parent 15d1e591ae
commit a42dbbfe25
4 changed files with 21 additions and 5 deletions

View File

@ -121,7 +121,8 @@ def enable_plugin(plugin_or_name):
config['enabled_plugins'] = ep config['enabled_plugins'] = ep
default_disabled_plugins = set([ 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): def is_disabled(plugin):

View File

@ -205,7 +205,10 @@ def main(args=sys.argv):
open(cpath, 'wb').write(br.open_novisit(curl).read()) open(cpath, 'wb').write(br.open_novisit(curl).read())
print 'Cover for', title, 'saved to', cpath print 'Cover for', title, 'saved to', cpath
#import time
#st = time.time()
print get_social_metadata(title, None, None, isbn) print get_social_metadata(title, None, None, isbn)
#print '\n\n', time.time() - st, '\n\n'
return 0 return 0

View File

@ -106,6 +106,9 @@ class MetadataSource(Plugin): # {{{
def join(self): def join(self):
return self.worker.join() return self.worker.join()
def is_alive(self):
return self.worker.is_alive()
def is_customizable(self): def is_customizable(self):
return True return True
@ -251,7 +254,9 @@ class KentDistrictLibrary(MetadataSource): # {{{
name = 'Kent District Library' name = 'Kent District Library'
metadata_type = 'social' 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): def fetch(self):
if not self.title or not self.book_author: if not self.title or not self.book_author:

View File

@ -5,7 +5,9 @@ __license__ = 'GPL v3'
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __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.ebooks.metadata.book.base import Metadata
from calibre import browser from calibre import browser
@ -17,7 +19,7 @@ URL = \
_ignore_starts = u'\'"'+u''.join(unichr(x) for x in range(0x2018, 0x201e)+[0x2032, 0x2033]) _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) mi = Metadata(title, authors)
if title and title[0] in _ignore_starts: if title and title[0] in _ignore_starts:
title = title[1:] title = title[1:]
@ -39,7 +41,12 @@ def get_series(title, authors):
url = URL.format(author, title) url = URL.format(author, title)
br = browser() 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: if 'see the full results' not in raw:
return mi return mi
raw = xml_to_unicode(raw)[0] raw = xml_to_unicode(raw)[0]