Merge lp:~user-none/calibre/store into lp:calibre

Proposed by John Schember
Status: Merged
Merged at revision: 12164
Proposed branch: lp:~user-none/calibre/store
Merge into: lp:calibre
Diff against target: 113 lines (+53/-23)
2 files modified
src/calibre/gui2/store/stores/amazon_plugin.py (+0/-2)
src/calibre/gui2/store/stores/diesel_ebooks_plugin.py (+53/-21)
To merge this branch: bzr merge lp:~user-none/calibre/store
Reviewer Review Type Date Requested Status
Kovid Goyal Pending
Review via email: mp+105563@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/calibre/gui2/store/stores/amazon_plugin.py'
--- src/calibre/gui2/store/stores/amazon_plugin.py 2012-04-29 15:46:14 +0000
+++ src/calibre/gui2/store/stores/amazon_plugin.py 2012-05-12 18:28:18 +0000
@@ -156,8 +156,6 @@
156 cover_xpath = './/div[@class="productImage"]//img/@src'156 cover_xpath = './/div[@class="productImage"]//img/@src'
157 title_xpath = './/div[@class="productTitle"]/a/text()'157 title_xpath = './/div[@class="productTitle"]/a/text()'
158 price_xpath = './/div[@class="newPrice"]//span//text()'158 price_xpath = './/div[@class="newPrice"]//span//text()'
159
160
161 159
162 for data in doc.xpath(data_xpath):160 for data in doc.xpath(data_xpath):
163 if counter <= 0:161 if counter <= 0:
164162
=== modified file 'src/calibre/gui2/store/stores/diesel_ebooks_plugin.py'
--- src/calibre/gui2/store/stores/diesel_ebooks_plugin.py 2012-05-12 17:38:06 +0000
+++ src/calibre/gui2/store/stores/diesel_ebooks_plugin.py 2012-05-12 18:28:18 +0000
@@ -7,6 +7,7 @@
7__docformat__ = 'restructuredtext en'7__docformat__ = 'restructuredtext en'
88
9import random9import random
10import re
10import urllib11import urllib
11from contextlib import closing12from contextlib import closing
1213
@@ -52,32 +53,27 @@
52 counter = max_results53 counter = max_results
53 with closing(br.open(url, timeout=timeout)) as f:54 with closing(br.open(url, timeout=timeout)) as f:
54 doc = html.fromstring(f.read())55 doc = html.fromstring(f.read())
55 for data in doc.xpath('//div[contains(@class, "item")]'):56
56 if counter <= 0:57 if doc.xpath('not(boolean(//select[contains(@id, "selection")]))'):
57 break58 id = ''.join(doc.xpath('//div[@class="price_fat"]//a/@href'))
5859 mo = re.search('(?<=id=).+?(?=&)', id)
59 id = ''.join(data.xpath('div[@class="cover"]/a/@href'))60 if not mo:
60 if not id or '/item/' not in id:61 yield None
61 continue62 id = mo.group()
6263
63 cover_url = ''.join(data.xpath('div[@class="cover"]//img/@src'))64 cover_url = ''.join(doc.xpath('//div[@class="cover"]/a/@href'))
6465
65 title = ''.join(data.xpath('.//div[@class="content"]//h2/a/text()'))66 title = ''.join(doc.xpath('//div[@class="desc_fat"]//h1/text()'))
66 author = ''.join(data.xpath('.//div[@class="content"]/span//a/text()'))67 author = ''.join(doc.xpath('//div[@class="desc_fat"]//span[@itemprop="author"]/text()'))
67 price = ''68 price = ''.join(doc.xpath('//div[@class="price_fat"]//h1/text()'))
68 price_elem = data.xpath('.//div[@class="price_fat"]//h1/text()')69
69 if price_elem:70 formats = ', '.join(doc.xpath('//div[@class="desc_fat"]//p[contains(text(), "Format")]/text()'))
70 price = price_elem[0]
71
72 formats = ', '.join(data.xpath('.//div[@class="book-info"]//text()')).strip()
73 a, b, formats = formats.partition('Format:')71 a, b, formats = formats.partition('Format:')
72
74 drm = SearchResult.DRM_LOCKED73 drm = SearchResult.DRM_LOCKED
75 if 'drm free' in formats.lower():74 if 'drm free' in formats.lower():
76 drm = SearchResult.DRM_UNLOCKED75 drm = SearchResult.DRM_UNLOCKED
7776
78
79 counter -= 1
80
81 s = SearchResult()77 s = SearchResult()
82 s.cover_url = cover_url78 s.cover_url = cover_url
83 s.title = title.strip()79 s.title = title.strip()
@@ -88,3 +84,39 @@
88 s.drm = drm84 s.drm = drm
8985
90 yield s86 yield s
87 else:
88 for data in doc.xpath('//div[contains(@class, "item")]'):
89 if counter <= 0:
90 break
91
92 id = ''.join(data.xpath('div[@class="cover"]/a/@href'))
93 if not id or '/item/' not in id:
94 continue
95
96 cover_url = ''.join(data.xpath('div[@class="cover"]//img/@src'))
97
98 title = ''.join(data.xpath('.//div[@class="content"]//h2/a/text()'))
99 author = ''.join(data.xpath('.//div[@class="content"]/span//a/text()'))
100 price = ''
101 price_elem = data.xpath('.//div[@class="price_fat"]//h1/text()')
102 if price_elem:
103 price = price_elem[0]
104
105 formats = ', '.join(data.xpath('.//div[@class="book-info"]//text()')).strip()
106 a, b, formats = formats.partition('Format:')
107 drm = SearchResult.DRM_LOCKED
108 if 'drm free' in formats.lower():
109 drm = SearchResult.DRM_UNLOCKED
110
111 counter -= 1
112
113 s = SearchResult()
114 s.cover_url = cover_url
115 s.title = title.strip()
116 s.author = author.strip()
117 s.price = price.strip()
118 s.detail_item = id.strip()
119 s.formats = formats
120 s.drm = drm
121
122 yield s

Subscribers

People subscribed via source and target branches