diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index 4150b4b339..8e1b32b03d 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -170,8 +170,8 @@ def prints(*args, **kwargs): except: file.write(repr(arg)) if i != len(args)-1: - file.write(sep) - file.write(end) + file.write(bytes(sep)) + file.write(bytes(end)) class CommandLineError(Exception): pass @@ -278,12 +278,18 @@ def get_parsed_proxy(typ='http', debug=True): def random_user_agent(): choices = [ - 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11' - 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' - 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)' - 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)' - 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19' - 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11' + 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)', + 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11', + 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)', + 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)', + 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)', + 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19', + 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11', + 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; FDM)', + 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.14) Gecko/20080409 Camino/1.6 (like Firefox/2.0.0.14)', + 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.1) Gecko/20060118 Camino/1.0b2+', + 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3', + 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5', ] return choices[random.randint(0, len(choices)-1)] diff --git a/src/calibre/ebooks/metadata/covers.py b/src/calibre/ebooks/metadata/covers.py index 49e4cb1d58..10acff4e61 100644 --- a/src/calibre/ebooks/metadata/covers.py +++ b/src/calibre/ebooks/metadata/covers.py @@ -302,4 +302,16 @@ def test(isbns): # {{{ if __name__ == '__main__': isbns = sys.argv[1:] + ['9781591025412', '9780307272119'] - test(isbns) + #test(isbns) + + from calibre.ebooks.metadata import MetaInformation + oc = OpenLibraryCovers(None) + for isbn in isbns: + mi = MetaInformation('xx', ['yy']) + mi.isbn = isbn + rq = Queue() + oc.get_covers(mi, rq, Event()) + result = rq.get_nowait() + if not result[0]: + print 'Failed for ISBN:', isbn + print result diff --git a/src/calibre/ebooks/metadata/library_thing.py b/src/calibre/ebooks/metadata/library_thing.py index be0cd5f324..ddd4b64f58 100644 --- a/src/calibre/ebooks/metadata/library_thing.py +++ b/src/calibre/ebooks/metadata/library_thing.py @@ -4,34 +4,23 @@ __copyright__ = '2008, Kovid Goyal ' Fetch cover from LibraryThing.com based on ISBN number. ''' -import sys, re, random +import sys, re from lxml import html import mechanize -from calibre import browser, prints +from calibre import browser, prints, random_user_agent from calibre.utils.config import OptionParser from calibre.ebooks.chardet import strip_encoding_declarations OPENLIBRARY = 'http://covers.openlibrary.org/b/isbn/%s-L.jpg?default=false' -def get_ua(): - choices = [ - 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11' - 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' - 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)' - 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)' - 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16' - 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19' - 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11' - ] - return choices[random.randint(0, len(choices)-1)] _lt_br = None def get_browser(): global _lt_br if _lt_br is None: - _lt_br = browser(user_agent=get_ua()) + _lt_br = browser(user_agent=random_user_agent()) return _lt_br.clone_browser() class HeadRequest(mechanize.Request):