Store: Documentation. Return value for get_details. Formats for more stores.

This commit is contained in:
John Schember 2011-04-21 07:43:44 -04:00
parent 4695840b2c
commit b17ecef767
9 changed files with 28 additions and 3 deletions

View File

@ -96,7 +96,7 @@ class StorePlugin(object): # {{{
:param query: The string query search with.
:param max_results: The maximum number of results to return.
:param timeout: The maximum amount of time in seconds to spend download the search results.
:param timeout: The maximum amount of time in seconds to spend downloading data for search results.
:return: :class:`calibre.gui2.store.search_result.SearchResult` objects
item_data is plugin specific and is used in :meth:`open` to open to a specifc place in the store.
@ -116,8 +116,13 @@ class StorePlugin(object): # {{{
take extra time to load. Splitting retrieving data that takes longer
to load into a separate function will give the illusion of the search
being faster.
:param search_result: A search result that need details set.
:param timeout: The maximum amount of time in seconds to spend downloading details.
:return: True if the search_result was modified otherwise False
'''
pass
return False
def get_settings(self):
'''

View File

@ -185,5 +185,6 @@ class AmazonKindleStore(StorePlugin):
search_result.drm = SearchResult.DRM_UNKNOWN
else:
search_result.drm = SearchResult.DRM_LOCKED
return True

View File

@ -98,4 +98,6 @@ class BeWriteStore(BasicStoreConfig, StorePlugin):
formats.add('PDF')
if idata.xpath('boolean(//div[@id="content"]//td[contains(text(), "MOBI")])'):
formats.add('MOBI')
search_result.formats = ', '.join(list(formats))
search_result.formats = ', '.join(list(formats))
return True

View File

@ -99,3 +99,4 @@ class DieselEbooksStore(BasicStoreConfig, StorePlugin):
search_result.drm = SearchResult.DRM_UNLOCKED
else:
search_result.drm = SearchResult.DRM_LOCKED
return True

View File

@ -117,3 +117,4 @@ class EbookscomStore(BasicStoreConfig, StorePlugin):
search_result.formats = fdata
search_result.price = price.strip()
return True

View File

@ -101,3 +101,4 @@ class EHarlequinStore(BasicStoreConfig, StorePlugin):
else:
drm = SearchResult.DRM_UNLOCKED
search_result.drm = drm
return True

View File

@ -72,8 +72,10 @@ class FeedbooksStore(BasicStoreConfig, StorePlugin):
title = ''.join(data.xpath('//h5//a/text()'))
author = ''.join(data.xpath('//h6//a/text()'))
price = ''.join(data.xpath('//a[@class="buy"]/text()'))
formats = 'EPUB'
if not price:
price = '$0.00'
formats = 'EPUB, MOBI, PDF'
cover_url = ''
cover_url_img = data.xpath('//img')
if cover_url_img:
@ -88,6 +90,7 @@ class FeedbooksStore(BasicStoreConfig, StorePlugin):
s.author = author.strip()
s.price = price.replace(' ', '').strip()
s.detail_item = id.strip()
s.formats = formats
yield s
@ -101,3 +104,4 @@ class FeedbooksStore(BasicStoreConfig, StorePlugin):
search_result.drm = SearchResult.DRM_LOCKED
else:
search_result.drm = SearchResult.DRM_UNLOCKED
return True

View File

@ -82,3 +82,12 @@ class GutenbergStore(BasicStoreConfig, StorePlugin):
s.drm = SearchResult.DRM_UNLOCKED
yield s
def get_details(self, search_result, timeout):
url = 'http://m.gutenberg.org/'
br = browser()
with closing(br.open(url + search_result.detail_item, timeout=timeout)) as nf:
idata = html.fromstring(nf.read())
search_result.formats = ', '.join(idata.xpath('//a[@type!="application/atom+xml"]//span[@class="title"]/text()'))
return True

View File

@ -82,5 +82,6 @@ class KoboStore(BasicStoreConfig, StorePlugin):
s.price = price.strip()
s.detail_item = '?url=http://www.kobobooks.com/' + id.strip()
s.drm = SearchResult.DRM_LOCKED if drm else SearchResult.DRM_UNLOCKED
s.formats = 'EPUB'
yield s