mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
...
This commit is contained in:
parent
f3e5398241
commit
eecf3ec73e
@ -76,6 +76,11 @@ def run_download(log, results, abort,
|
|||||||
(plugin, width, height, fmt, bytes)
|
(plugin, width, height, fmt, bytes)
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
if title == _('Unknown'):
|
||||||
|
title = None
|
||||||
|
if authors == [_('Unknown')]:
|
||||||
|
authors = None
|
||||||
|
|
||||||
plugins = [p for p in metadata_plugins(['cover']) if p.is_configured()]
|
plugins = [p for p in metadata_plugins(['cover']) if p.is_configured()]
|
||||||
|
|
||||||
rq = Queue()
|
rq = Queue()
|
||||||
|
@ -253,6 +253,10 @@ def merge_identify_results(result_map, log):
|
|||||||
|
|
||||||
def identify(log, abort, # {{{
|
def identify(log, abort, # {{{
|
||||||
title=None, authors=None, identifiers={}, timeout=30):
|
title=None, authors=None, identifiers={}, timeout=30):
|
||||||
|
if title == _('Unknown'):
|
||||||
|
title = None
|
||||||
|
if authors == [_('Unknown')]:
|
||||||
|
authors = None
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
plugins = [p for p in metadata_plugins(['identify']) if p.is_configured()]
|
plugins = [p for p in metadata_plugins(['identify']) if p.is_configured()]
|
||||||
|
|
||||||
|
@ -7,7 +7,13 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
from calibre.ebooks.metadata.sources.base import Source
|
from urllib import quote
|
||||||
|
|
||||||
|
from calibre.ebooks.metadata import check_isbn
|
||||||
|
from calibre.ebooks.metadata.sources.base import Source, Option
|
||||||
|
|
||||||
|
BASE_URL = 'http://isbndb.com/api/books.xml?access_key=%s&page_number=1&results=subjects,authors,texts&'
|
||||||
|
|
||||||
|
|
||||||
class ISBNDB(Source):
|
class ISBNDB(Source):
|
||||||
|
|
||||||
@ -18,6 +24,14 @@ class ISBNDB(Source):
|
|||||||
touched_fields = frozenset(['title', 'authors',
|
touched_fields = frozenset(['title', 'authors',
|
||||||
'identifier:isbn', 'comments', 'publisher'])
|
'identifier:isbn', 'comments', 'publisher'])
|
||||||
supports_gzip_transfer_encoding = True
|
supports_gzip_transfer_encoding = True
|
||||||
|
# Shortcut, since we have no cached cover URLS
|
||||||
|
cached_cover_url_is_reliable = False
|
||||||
|
|
||||||
|
options = (
|
||||||
|
Option('isbndb_key', 'string', None, _('IsbnDB key:'),
|
||||||
|
_('To use isbndb.com you have to sign up for a free account'
|
||||||
|
'at isbndb.com and get an access key.')),
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
Source.__init__(self, *args, **kwargs)
|
Source.__init__(self, *args, **kwargs)
|
||||||
@ -35,9 +49,33 @@ class ISBNDB(Source):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
self.isbndb_key = prefs['isbndb_key']
|
@property
|
||||||
|
def isbndb_key(self):
|
||||||
|
return self.prefs['isbndb_key']
|
||||||
|
|
||||||
def is_configured(self):
|
def is_configured(self):
|
||||||
return self.isbndb_key is not None
|
return self.isbndb_key is not None
|
||||||
|
|
||||||
|
def create_query(self, log, title=None, authors=None, identifiers={}): # {{{
|
||||||
|
base_url = BASE_URL%self.isbndb_key
|
||||||
|
isbn = check_isbn(identifiers.get('isbn', None))
|
||||||
|
q = ''
|
||||||
|
if isbn is not None:
|
||||||
|
q = 'index1=isbn&value1='+isbn
|
||||||
|
elif title or authors:
|
||||||
|
tokens = []
|
||||||
|
title_tokens = list(self.get_title_tokens(title))
|
||||||
|
tokens += title_tokens
|
||||||
|
author_tokens = self.get_author_tokens(authors,
|
||||||
|
only_first_author=True)
|
||||||
|
tokens += author_tokens
|
||||||
|
tokens = [quote(t) for t in tokens]
|
||||||
|
q = '+'.join(tokens)
|
||||||
|
q = 'index1=combined&value1='+q
|
||||||
|
|
||||||
|
if not q:
|
||||||
|
return None
|
||||||
|
if isinstance(q, unicode):
|
||||||
|
q = q.encode('utf-8')
|
||||||
|
return base_url + q
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user