From 9bee44376b2e11f47678b01aade63b5bc02d39ed Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 26 Dec 2012 09:27:25 +0530 Subject: [PATCH] Add support for downloading metadata from Amazon Brazil. Fixes #1092594 ([Enhancement] Amazon Brazilian website) --- src/calibre/ebooks/metadata/sources/amazon.py | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/metadata/sources/amazon.py b/src/calibre/ebooks/metadata/sources/amazon.py index 977f034e22..63783ba8eb 100644 --- a/src/calibre/ebooks/metadata/sources/amazon.py +++ b/src/calibre/ebooks/metadata/sources/amazon.py @@ -75,6 +75,20 @@ class Worker(Thread): # Get details {{{ 9: ['sept'], 12: ['déc'], }, + 'br': { + 1: ['janeiro'], + 2: ['fevereiro'], + 3: ['março'], + 4: ['abril'], + 5: ['maio'], + 6: ['junho'], + 7: ['julho'], + 8: ['agosto'], + 9: ['setembro'], + 10: ['outubro'], + 11: ['novembro'], + 12: ['dezembro'], + }, 'es': { 1: ['enero'], 2: ['febrero'], @@ -89,7 +103,7 @@ class Worker(Thread): # Get details {{{ 11: ['noviembre'], 12: ['diciembre'], }, - 'jp': { + 'jp': { 1: [u'1月'], 2: [u'2月'], 3: [u'3月'], @@ -117,6 +131,7 @@ class Worker(Thread): # Get details {{{ text()="Product details" or \ text()="Détails sur le produit" or \ text()="Detalles del producto" or \ + text()="Detalhes do produto" or \ text()="登録情報"]/../div[@class="content"] ''' # Editor: is for Spanish @@ -126,6 +141,7 @@ class Worker(Thread): # Get details {{{ starts-with(text(), "Editore:") or \ starts-with(text(), "Editeur") or \ starts-with(text(), "Editor:") or \ + starts-with(text(), "Editora:") or \ starts-with(text(), "出版社:")] ''' self.language_xpath = ''' @@ -141,7 +157,7 @@ class Worker(Thread): # Get details {{{ ''' self.ratings_pat = re.compile( - r'([0-9.]+) ?(out of|von|su|étoiles sur|つ星のうち|de un máximo de) ([\d\.]+)( (stars|Sternen|stelle|estrellas)){0,1}') + r'([0-9.]+) ?(out of|von|su|étoiles sur|つ星のうち|de un máximo de|de) ([\d\.]+)( (stars|Sternen|stelle|estrellas|estrelas)){0,1}') lm = { 'eng': ('English', 'Englisch'), @@ -150,6 +166,7 @@ class Worker(Thread): # Get details {{{ 'deu': ('German', 'Deutsch'), 'spa': ('Spanish', 'Espa\xf1ol', 'Espaniol'), 'jpn': ('Japanese', u'日本語'), + 'por': ('Portuguese', 'Português'), } self.lang_map = {} for code, names in lm.iteritems(): @@ -505,6 +522,7 @@ class Amazon(Source): 'it' : _('Italy'), 'jp' : _('Japan'), 'es' : _('Spain'), + 'br' : _('Brazil'), } options = ( @@ -570,6 +588,8 @@ class Amazon(Source): url = 'http://amzn.com/'+asin elif domain == 'uk': url = 'http://www.amazon.co.uk/dp/'+asin + elif domain == 'br': + url = 'http://www.amazon.com.br/dp/'+asin else: url = 'http://www.amazon.%s/dp/%s'%(domain, asin) if url: @@ -629,7 +649,7 @@ class Amazon(Source): q['field-isbn'] = isbn else: # Only return book results - q['search-alias'] = 'stripbooks' + q['search-alias'] = 'digital-text' if domain == 'br' else 'stripbooks' if title: title_tokens = list(self.get_title_tokens(title)) if title_tokens: @@ -661,6 +681,8 @@ class Amazon(Source): udomain = 'co.uk' elif domain == 'jp': udomain = 'co.jp' + elif domain == 'br': + udomain = 'com.br' url = 'http://www.amazon.%s/s/?'%udomain + urlencode(encoded_q) return url, domain @@ -978,6 +1000,16 @@ if __name__ == '__main__': # tests {{{ ), ] # }}} + br_tests = [ # {{{ + ( + {'title':'Guerra dos Tronos'}, + [title_test('A Guerra dos Tronos - As Crônicas de Gelo e Fogo', + exact=True), authors_test(['George R. R. Martin']) + ] + + ), + ] # }}} + def do_test(domain, start=0, stop=None): tests = globals().get(domain+'_tests') if stop is None: @@ -988,7 +1020,7 @@ if __name__ == '__main__': # tests {{{ do_test('com') - #do_test('de') + # do_test('de') # }}}