mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Turn off overdrive detailes fetch by default
This commit is contained in:
commit
e88c7f9618
@ -3,7 +3,7 @@ from __future__ import (unicode_literals, division, absolute_import,
|
|||||||
print_function)
|
print_function)
|
||||||
|
|
||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
__copyright__ = '2011, Kovid Goyal kovid@kovidgoyal.net'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
'''
|
'''
|
||||||
@ -17,7 +17,7 @@ from lxml import html
|
|||||||
from lxml.html import soupparser
|
from lxml.html import soupparser
|
||||||
|
|
||||||
from calibre.ebooks.metadata import check_isbn
|
from calibre.ebooks.metadata import check_isbn
|
||||||
from calibre.ebooks.metadata.sources.base import Source
|
from calibre.ebooks.metadata.sources.base import Source, Option
|
||||||
from calibre.ebooks.metadata.book.base import Metadata
|
from calibre.ebooks.metadata.book.base import Metadata
|
||||||
from calibre.ebooks.chardet import xml_to_unicode
|
from calibre.ebooks.chardet import xml_to_unicode
|
||||||
from calibre.library.comments import sanitize_comments_html
|
from calibre.library.comments import sanitize_comments_html
|
||||||
@ -40,6 +40,18 @@ class OverDrive(Source):
|
|||||||
supports_gzip_transfer_encoding = False
|
supports_gzip_transfer_encoding = False
|
||||||
cached_cover_url_is_reliable = True
|
cached_cover_url_is_reliable = True
|
||||||
|
|
||||||
|
options = (
|
||||||
|
Option('get_full_metadata', 'bool', False,
|
||||||
|
_('Download all metadata (slow)'),
|
||||||
|
_('Enable this option to gather all metadata available from Overdrive.')),
|
||||||
|
)
|
||||||
|
|
||||||
|
config_help_message = '<p>'+_('Additional metadata can be taken from Overdrive\'s book detail'
|
||||||
|
' page. This includes a limited set of tags used by libraries, comments, language,'
|
||||||
|
' and the ebook ISBN. Collecting this data is disabled by default due to the extra'
|
||||||
|
' time required. Check the download all metadata option below to'
|
||||||
|
' enable downloading this data.')
|
||||||
|
|
||||||
def identify(self, log, result_queue, abort, title=None, authors=None, # {{{
|
def identify(self, log, result_queue, abort, title=None, authors=None, # {{{
|
||||||
identifiers={}, timeout=30):
|
identifiers={}, timeout=30):
|
||||||
ovrdrv_id = identifiers.get('overdrive', None)
|
ovrdrv_id = identifiers.get('overdrive', None)
|
||||||
@ -54,11 +66,13 @@ class OverDrive(Source):
|
|||||||
self.parse_search_results(ovrdrv_data, mi)
|
self.parse_search_results(ovrdrv_data, mi)
|
||||||
if ovrdrv_id is None:
|
if ovrdrv_id is None:
|
||||||
ovrdrv_id = ovrdrv_data[7]
|
ovrdrv_id = ovrdrv_data[7]
|
||||||
|
|
||||||
|
if self.prefs['get_full_metadata']:
|
||||||
|
self.get_book_detail(br, ovrdrv_data[1], mi, ovrdrv_id, log)
|
||||||
|
|
||||||
if isbn is not None:
|
if isbn is not None:
|
||||||
self.cache_isbn_to_identifier(isbn, ovrdrv_id)
|
self.cache_isbn_to_identifier(isbn, ovrdrv_id)
|
||||||
|
|
||||||
self.get_book_detail(br, ovrdrv_data[1], mi, ovrdrv_id, log)
|
|
||||||
|
|
||||||
result_queue.put(mi)
|
result_queue.put(mi)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
@ -438,4 +452,3 @@ if __name__ == '__main__':
|
|||||||
authors_test(['Agatha Christie'])]
|
authors_test(['Agatha Christie'])]
|
||||||
),
|
),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
63
src/calibre/utils/text2int.py
Executable file
63
src/calibre/utils/text2int.py
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
__author__ = "stackoverflow community"
|
||||||
|
__docformat__ = 'restructuredtext en'
|
||||||
|
"""
|
||||||
|
Takes english numeric words and converts them to integers.
|
||||||
|
Returns False if the word isn't a number.
|
||||||
|
|
||||||
|
implementation courtesy of the stackoverflow community:
|
||||||
|
http://stackoverflow.com/questions/493174/is-there-a-way-to-convert-number-words-to-integers-python
|
||||||
|
"""
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
numwords = {}
|
||||||
|
|
||||||
|
def text2int(textnum):
|
||||||
|
if not numwords:
|
||||||
|
|
||||||
|
units = [ "zero", "one", "two", "three", "four", "five", "six",
|
||||||
|
"seven", "eight", "nine", "ten", "eleven", "twelve",
|
||||||
|
"thirteen", "fourteen", "fifteen", "sixteen", "seventeen",
|
||||||
|
"eighteen", "nineteen"]
|
||||||
|
|
||||||
|
tens = ["", "", "twenty", "thirty", "forty", "fifty", "sixty",
|
||||||
|
"seventy", "eighty", "ninety"]
|
||||||
|
|
||||||
|
scales = ["hundred", "thousand", "million", "billion", "trillion",
|
||||||
|
'quadrillion', 'quintillion', 'sexillion', 'septillion',
|
||||||
|
'octillion', 'nonillion', 'decillion' ]
|
||||||
|
|
||||||
|
numwords["and"] = (1, 0)
|
||||||
|
for idx, word in enumerate(units): numwords[word] = (1, idx)
|
||||||
|
for idx, word in enumerate(tens): numwords[word] = (1, idx * 10)
|
||||||
|
for idx, word in enumerate(scales): numwords[word] = (10 ** (idx * 3 or 2), 0)
|
||||||
|
|
||||||
|
ordinal_words = {'first':1, 'second':2, 'third':3, 'fifth':5,
|
||||||
|
'eighth':8, 'ninth':9, 'twelfth':12}
|
||||||
|
ordinal_endings = [('ieth', 'y'), ('th', '')]
|
||||||
|
current = result = 0
|
||||||
|
tokens = re.split(r"[\s-]+", textnum)
|
||||||
|
for word in tokens:
|
||||||
|
if word in ordinal_words:
|
||||||
|
scale, increment = (1, ordinal_words[word])
|
||||||
|
else:
|
||||||
|
for ending, replacement in ordinal_endings:
|
||||||
|
if word.endswith(ending):
|
||||||
|
word = "%s%s" % (word[:-len(ending)], replacement)
|
||||||
|
|
||||||
|
if word not in numwords:
|
||||||
|
#raise Exception("Illegal word: " + word)
|
||||||
|
return False
|
||||||
|
|
||||||
|
scale, increment = numwords[word]
|
||||||
|
|
||||||
|
if scale > 1:
|
||||||
|
current = max(1, current)
|
||||||
|
|
||||||
|
current = current * scale + increment
|
||||||
|
if scale > 100:
|
||||||
|
result += current
|
||||||
|
current = 0
|
||||||
|
|
||||||
|
return result + current
|
Loading…
x
Reference in New Issue
Block a user