mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
...
This commit is contained in:
parent
dedc0979b1
commit
0d57316475
@ -78,8 +78,8 @@ class InternalMetadataCompareKeyGen(object):
|
|||||||
exact_title = 1 if title and \
|
exact_title = 1 if title and \
|
||||||
cleanup_title(title) == cleanup_title(mi.title) else 2
|
cleanup_title(title) == cleanup_title(mi.title) else 2
|
||||||
|
|
||||||
has_cover = 2 if source_plugin.get_cached_cover_url(mi.identifiers)\
|
has_cover = 2 if (not source_plugin.cached_cover_url_is_reliable or
|
||||||
is None else 1
|
source_plugin.get_cached_cover_url(mi.identifiers) is None) else 1
|
||||||
|
|
||||||
self.base = (isbn, has_cover, all_fields, exact_title)
|
self.base = (isbn, has_cover, all_fields, exact_title)
|
||||||
self.comments_len = len(mi.comments.strip() if mi.comments else '')
|
self.comments_len = len(mi.comments.strip() if mi.comments else '')
|
||||||
@ -157,6 +157,12 @@ class Source(Plugin):
|
|||||||
#: correctly first
|
#: correctly first
|
||||||
supports_gzip_transfer_encoding = False
|
supports_gzip_transfer_encoding = False
|
||||||
|
|
||||||
|
#: Cached cover URLs can sometimes be unreliable (i.e. the download could
|
||||||
|
#: fail or the returned image could be bogus. If that is the case set this to
|
||||||
|
#: False
|
||||||
|
cached_cover_url_is_reliable = True
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
Plugin.__init__(self, *args, **kwargs)
|
Plugin.__init__(self, *args, **kwargs)
|
||||||
self._isbn_to_identifier_cache = {}
|
self._isbn_to_identifier_cache = {}
|
||||||
|
@ -7,7 +7,7 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import time
|
import time, hashlib
|
||||||
from urllib import urlencode
|
from urllib import urlencode
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from Queue import Queue, Empty
|
from Queue import Queue, Empty
|
||||||
@ -164,9 +164,12 @@ class GoogleBooks(Source):
|
|||||||
'comments', 'publisher', 'identifier:isbn', 'rating',
|
'comments', 'publisher', 'identifier:isbn', 'rating',
|
||||||
'identifier:google']) # language currently disabled
|
'identifier:google']) # language currently disabled
|
||||||
supports_gzip_transfer_encoding = True
|
supports_gzip_transfer_encoding = True
|
||||||
|
cached_cover_url_is_reliable = False
|
||||||
|
|
||||||
GOOGLE_COVER = 'http://books.google.com/books?id=%s&printsec=frontcover&img=1'
|
GOOGLE_COVER = 'http://books.google.com/books?id=%s&printsec=frontcover&img=1'
|
||||||
|
|
||||||
|
DUMMY_IMAGE_MD5 = frozenset(['0de4383ebad0adad5eeb8975cd796657'])
|
||||||
|
|
||||||
def get_book_url(self, identifiers): # {{{
|
def get_book_url(self, identifiers): # {{{
|
||||||
goog = identifiers.get('google', None)
|
goog = identifiers.get('google', None)
|
||||||
if goog is not None:
|
if goog is not None:
|
||||||
@ -235,7 +238,11 @@ class GoogleBooks(Source):
|
|||||||
log('Downloading cover from:', cached_url)
|
log('Downloading cover from:', cached_url)
|
||||||
try:
|
try:
|
||||||
cdata = br.open_novisit(cached_url, timeout=timeout).read()
|
cdata = br.open_novisit(cached_url, timeout=timeout).read()
|
||||||
result_queue.put((self, cdata))
|
if cdata:
|
||||||
|
if hashlib.md5(cdata).hexdigest() in self.DUMMY_IMAGE_MD5:
|
||||||
|
log.warning('Google returned a dummy image, ignoring')
|
||||||
|
else:
|
||||||
|
result_queue.put((self, cdata))
|
||||||
except:
|
except:
|
||||||
log.exception('Failed to download cover from:', cached_url)
|
log.exception('Failed to download cover from:', cached_url)
|
||||||
|
|
||||||
|
@ -338,8 +338,9 @@ def identify(log, abort, # {{{
|
|||||||
|
|
||||||
for i, result in enumerate(presults):
|
for i, result in enumerate(presults):
|
||||||
result.relevance_in_source = i
|
result.relevance_in_source = i
|
||||||
result.has_cached_cover_url = \
|
result.has_cached_cover_url = (plugin.cached_cover_url_is_reliable
|
||||||
plugin.get_cached_cover_url(result.identifiers) is not None
|
and plugin.get_cached_cover_url(result.identifiers) is not
|
||||||
|
None)
|
||||||
result.identify_plugin = plugin
|
result.identify_plugin = plugin
|
||||||
|
|
||||||
log('The identify phase took %.2f seconds'%(time.time() - start_time))
|
log('The identify phase took %.2f seconds'%(time.time() - start_time))
|
||||||
|
@ -180,6 +180,13 @@ class ResultsModel(QAbstractTableModel): # {{{
|
|||||||
return self.yes_icon
|
return self.yes_icon
|
||||||
elif role == Qt.UserRole:
|
elif role == Qt.UserRole:
|
||||||
return book
|
return book
|
||||||
|
elif role == Qt.ToolTipRole and col == 3:
|
||||||
|
return QVariant(
|
||||||
|
_('The has cover indication is not fully\n'
|
||||||
|
'reliable. Sometimes results marked as not\n'
|
||||||
|
'having a cover will find a cover in the download\n'
|
||||||
|
'cover stage, and vice versa.'))
|
||||||
|
|
||||||
return NONE
|
return NONE
|
||||||
|
|
||||||
def sort(self, col, order=Qt.AscendingOrder):
|
def sort(self, col, order=Qt.AscendingOrder):
|
||||||
@ -769,7 +776,7 @@ class LogViewer(QDialog): # {{{
|
|||||||
self.keep_updating = True
|
self.keep_updating = True
|
||||||
self.last_html = None
|
self.last_html = None
|
||||||
self.finished.connect(self.stop)
|
self.finished.connect(self.stop)
|
||||||
QTimer.singleShot(1000, self.update_log)
|
QTimer.singleShot(100, self.update_log)
|
||||||
|
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
@ -785,7 +792,7 @@ class LogViewer(QDialog): # {{{
|
|||||||
html = self.log.html
|
html = self.log.html
|
||||||
if html != self.last_html:
|
if html != self.last_html:
|
||||||
self.last_html = html
|
self.last_html = html
|
||||||
self.tb.setHtml('<pre>%s</pre>'%html)
|
self.tb.setHtml('<pre style="font-family:monospace">%s</pre>'%html)
|
||||||
QTimer.singleShot(1000, self.update_log)
|
QTimer.singleShot(1000, self.update_log)
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
@ -885,5 +892,5 @@ if __name__ == '__main__':
|
|||||||
#DEBUG_DIALOG = True
|
#DEBUG_DIALOG = True
|
||||||
app = QApplication([])
|
app = QApplication([])
|
||||||
d = FullFetch()
|
d = FullFetch()
|
||||||
d.start(title='jurassic', authors=['crichton'])
|
d.start(title='great gatsby', authors=['fitzgerald'])
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ class HTMLStream(Stream):
|
|||||||
color = {
|
color = {
|
||||||
DEBUG: '<span style="color:green">',
|
DEBUG: '<span style="color:green">',
|
||||||
INFO:'<span>',
|
INFO:'<span>',
|
||||||
WARN: '<span style="color:yellow">',
|
WARN: '<span style="color:blue">',
|
||||||
ERROR: '<span style="color:red">'
|
ERROR: '<span style="color:red">'
|
||||||
}
|
}
|
||||||
normal = '</span>'
|
normal = '</span>'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user