From e4bd7aaf440a67743c84c972656baebbe370ab9f Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Fri, 28 Aug 2015 16:29:45 +0200 Subject: [PATCH] Fix Amazon EU stores. I don't know if other Amazon stores need similar fixes --- src/calibre/gui2/store/stores/amazon_de_plugin.py | 15 +++++++++++++-- src/calibre/gui2/store/stores/amazon_es_plugin.py | 15 +++++++++++++-- src/calibre/gui2/store/stores/amazon_fr_plugin.py | 15 +++++++++++++-- src/calibre/gui2/store/stores/amazon_it_plugin.py | 15 +++++++++++++-- src/calibre/gui2/store/stores/amazon_uk_plugin.py | 15 +++++++++++++-- 5 files changed, 65 insertions(+), 10 deletions(-) diff --git a/src/calibre/gui2/store/stores/amazon_de_plugin.py b/src/calibre/gui2/store/stores/amazon_de_plugin.py index 128410a9d4..46142b4be3 100644 --- a/src/calibre/gui2/store/stores/amazon_de_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_de_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 7 # Needed for dynamic plugin loading +store_version = 8 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -87,6 +87,17 @@ class AmazonDEKindleStore(StorePlugin): price_xpath = ( './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' '//span[contains(@class, "lrg") and contains(@class, "bld")]/text()') + elif doc.xpath('//div[@id = "atfResults" and contains(@class, "s-result-list-parent-container")]'): + #print('new list form') + data_xpath = '//li[contains(@class, "s-result-item")]' + format_xpath = './/a[contains(@class, "a-size-small")]/text()' + format_xpath2 = './/h3[contains(@class, "s-inline")]/text()' + asin_xpath = '@data-asin' + cover_xpath = './/img[contains(@class, "cfMarker")]/@src' + title_xpath = './/h2[contains(@class, "s-access-title")]/text()' + author_xpath = ('.//div[contains(@class, "a-fixed-left-grid-col")]' + '/div/div/span//text()') + price_xpath = ('.//div[contains(@class, "a-spacing-none")]/a/span[contains(@class, "s-price")]/text()') elif doc.xpath('//div[@id = "atfResults" and contains(@class, "list")]'): #print('list form') data_xpath = '//li[@class="s-result-item"]' @@ -141,7 +152,7 @@ class AmazonDEKindleStore(StorePlugin): if mo: authors = mo.group(1).strip() - price = ''.join(data.xpath(price_xpath)) + price = ''.join(data.xpath(price_xpath)[-1]) counter -= 1 diff --git a/src/calibre/gui2/store/stores/amazon_es_plugin.py b/src/calibre/gui2/store/stores/amazon_es_plugin.py index 05d20368c0..efbb202cc1 100644 --- a/src/calibre/gui2/store/stores/amazon_es_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_es_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 7 # Needed for dynamic plugin loading +store_version = 8 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -86,6 +86,17 @@ class AmazonESKindleStore(StorePlugin): price_xpath = ( './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' '//span[contains(@class, "lrg") and contains(@class, "bld")]/text()') + elif doc.xpath('//div[@id = "atfResults" and contains(@class, "s-result-list-parent-container")]'): + #print('new list form') + data_xpath = '//li[contains(@class, "s-result-item")]' + format_xpath = './/a[contains(@class, "a-size-small")]/text()' + format_xpath2 = './/h3[contains(@class, "s-inline")]/text()' + asin_xpath = '@data-asin' + cover_xpath = './/img[contains(@class, "cfMarker")]/@src' + title_xpath = './/h2[contains(@class, "s-access-title")]/text()' + author_xpath = ('.//div[contains(@class, "a-fixed-left-grid-col")]' + '/div/div/span//text()') + price_xpath = ('.//div[contains(@class, "a-spacing-none")]/a/span[contains(@class, "s-price")]/text()') elif doc.xpath('//div[@id = "atfResults" and contains(@class, "list")]'): #print('list form') data_xpath = '//li[@class="s-result-item"]' @@ -140,7 +151,7 @@ class AmazonESKindleStore(StorePlugin): if mo: authors = mo.group(1).strip() - price = ''.join(data.xpath(price_xpath)) + price = ''.join(data.xpath(price_xpath)[-1]) counter -= 1 diff --git a/src/calibre/gui2/store/stores/amazon_fr_plugin.py b/src/calibre/gui2/store/stores/amazon_fr_plugin.py index 17a2e4e7bb..f5cd010a8b 100644 --- a/src/calibre/gui2/store/stores/amazon_fr_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_fr_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 7 # Needed for dynamic plugin loading +store_version = 8 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -83,6 +83,17 @@ class AmazonFRKindleStore(StorePlugin): price_xpath = ( './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' '//span[contains(@class, "lrg") and contains(@class, "bld")]/text()') + elif doc.xpath('//div[@id = "atfResults" and contains(@class, "s-result-list-parent-container")]'): + #print('new list form') + data_xpath = '//li[contains(@class, "s-result-item")]' + format_xpath = './/a[contains(@class, "a-size-small")]/text()' + format_xpath2 = './/h3[contains(@class, "s-inline")]/text()' + asin_xpath = '@data-asin' + cover_xpath = './/img[contains(@class, "cfMarker")]/@src' + title_xpath = './/h2[contains(@class, "s-access-title")]/text()' + author_xpath = ('.//div[contains(@class, "a-fixed-left-grid-col")]' + '/div/div/span//text()') + price_xpath = ('.//div[contains(@class, "a-spacing-none")]/a/span[contains(@class, "s-price")]/text()') elif doc.xpath('//div[@id = "atfResults" and contains(@class, "list")]'): #print('list form') data_xpath = '//li[@class="s-result-item"]' @@ -137,7 +148,7 @@ class AmazonFRKindleStore(StorePlugin): if mo: authors = mo.group(1).strip() - price = ''.join(data.xpath(price_xpath)) + price = ''.join(data.xpath(price_xpath)[-1]) counter -= 1 diff --git a/src/calibre/gui2/store/stores/amazon_it_plugin.py b/src/calibre/gui2/store/stores/amazon_it_plugin.py index 382bb74714..413a2f2d92 100644 --- a/src/calibre/gui2/store/stores/amazon_it_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_it_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 7 # Needed for dynamic plugin loading +store_version = 8 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -86,6 +86,17 @@ class AmazonITKindleStore(StorePlugin): price_xpath = ( './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' '//span[contains(@class, "lrg") and contains(@class, "bld")]/text()') + elif doc.xpath('//div[@id = "atfResults" and contains(@class, "s-result-list-parent-container")]'): + #print('new list form') + data_xpath = '//li[contains(@class, "s-result-item")]' + format_xpath = './/a[contains(@class, "a-size-small")]/text()' + format_xpath2 = './/h3[contains(@class, "s-inline")]/text()' + asin_xpath = '@data-asin' + cover_xpath = './/img[contains(@class, "cfMarker")]/@src' + title_xpath = './/h2[contains(@class, "s-access-title")]/text()' + author_xpath = ('.//div[contains(@class, "a-fixed-left-grid-col")]' + '/div/div/span//text()') + price_xpath = ('.//div[contains(@class, "a-spacing-none")]/a/span[contains(@class, "s-price")]/text()') elif doc.xpath('//div[@id = "atfResults" and contains(@class, "list")]'): #print('list form') data_xpath = '//li[@class="s-result-item"]' @@ -140,7 +151,7 @@ class AmazonITKindleStore(StorePlugin): if mo: authors = mo.group(1).strip() - price = ''.join(data.xpath(price_xpath)) + price = ''.join(data.xpath(price_xpath)[-1]) counter -= 1 diff --git a/src/calibre/gui2/store/stores/amazon_uk_plugin.py b/src/calibre/gui2/store/stores/amazon_uk_plugin.py index ad78bb7cc9..c6f2057520 100644 --- a/src/calibre/gui2/store/stores/amazon_uk_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_uk_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 7 # Needed for dynamic plugin loading +store_version = 8 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -91,6 +91,17 @@ class AmazonUKKindleStore(StorePlugin): price_xpath = ( './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' '//span[contains(@class, "lrg") and contains(@class, "bld")]/text()') + elif doc.xpath('//div[@id = "atfResults" and contains(@class, "s-result-list-parent-container")]'): + #print('new list form') + data_xpath = '//li[contains(@class, "s-result-item")]' + format_xpath = './/a[contains(@class, "a-size-small")]/text()' + format_xpath2 = './/h3[contains(@class, "s-inline")]/text()' + asin_xpath = '@data-asin' + cover_xpath = './/img[contains(@class, "cfMarker")]/@src' + title_xpath = './/h2[contains(@class, "s-access-title")]/text()' + author_xpath = ('.//div[contains(@class, "a-fixed-left-grid-col")]' + '/div/div/span//text()') + price_xpath = ('.//div[contains(@class, "a-spacing-none")]/a/span[contains(@class, "s-price")]/text()') elif doc.xpath('//div[@id = "atfResults" and contains(@class, "list")]'): #print('list form') data_xpath = '//li[@class="s-result-item"]' @@ -145,7 +156,7 @@ class AmazonUKKindleStore(StorePlugin): if mo: authors = mo.group(1).strip() - price = ''.join(data.xpath(price_xpath)) + price = ''.join(data.xpath(price_xpath)[-1]) counter -= 1