Polish stores

This commit is contained in:
Tomasz Długosz 2011-05-19 22:37:30 +02:00
parent feb3b98a09
commit da5a1a1b22
3 changed files with 88 additions and 1 deletions

View File

@ -1164,6 +1164,12 @@ class StoreFoylesUKStore(StoreBase):
description = _('Foyles of London, online.') description = _('Foyles of London, online.')
actual_plugin = 'calibre.gui2.store.foyles_uk_plugin:FoylesUKStore' actual_plugin = 'calibre.gui2.store.foyles_uk_plugin:FoylesUKStore'
class StoreGandalfStore(StoreBase):
name = 'Gandalf'
author = 'Tomasz Długosz'
description = _('Zaczarowany świat książek')
actual_plugin = 'calibre.gui2.store.gandalf_plugin:GandalfStore'
class StoreGoogleBooksStore(StoreBase): class StoreGoogleBooksStore(StoreBase):
name = 'Google Books' name = 'Google Books'
description = _('Google Books') description = _('Google Books')
@ -1191,6 +1197,7 @@ class StoreMobileReadStore(StoreBase):
class StoreNextoStore(StoreBase): class StoreNextoStore(StoreBase):
name = 'Nexto' name = 'Nexto'
author = 'Tomasz Długosz'
description = _('Audiobooki mp3, ebooki, prasa - księgarnia internetowa.') description = _('Audiobooki mp3, ebooki, prasa - księgarnia internetowa.')
actual_plugin = 'calibre.gui2.store.nexto_plugin:NextoStore' actual_plugin = 'calibre.gui2.store.nexto_plugin:NextoStore'
@ -1229,7 +1236,8 @@ plugins += [StoreArchiveOrgStore, StoreAmazonKindleStore, StoreAmazonDEKindleSto
StoreBeamEBooksDEStore, StoreBeWriteStore, StoreBeamEBooksDEStore, StoreBeWriteStore,
StoreDieselEbooksStore, StoreEbookscomStore, StoreEPubBuyDEStore, StoreDieselEbooksStore, StoreEbookscomStore, StoreEPubBuyDEStore,
StoreEHarlequinStore, StoreFeedbooksStore, StoreEHarlequinStore, StoreFeedbooksStore,
StoreFoylesUKStore, StoreGoogleBooksStore, StoreGutenbergStore, StoreFoylesUKStore, StoreGandalfStore,
StoreGoogleBooksStore, StoreGutenbergStore,
StoreKoboStore, StoreManyBooksStore, StoreKoboStore, StoreManyBooksStore,
StoreMobileReadStore, StoreNextoStore, StoreOpenLibraryStore, StoreMobileReadStore, StoreNextoStore, StoreOpenLibraryStore,
StoreOReillyStore, StoreSmashwordsStore, StoreOReillyStore, StoreSmashwordsStore,

View File

@ -0,0 +1,78 @@
# -*- coding: utf-8 -*-
from __future__ import (unicode_literals, division, absolute_import, print_function)
__license__ = 'GPL 3'
__copyright__ = '2011, Tomasz Długosz <tomek3d@gmail.com>'
__docformat__ = 'restructuredtext en'
import re
import urllib
from contextlib import closing
from lxml import html
from PyQt4.Qt import QUrl
from calibre import browser, url_slash_cleaner
from calibre.gui2 import open_url
from calibre.gui2.store import StorePlugin
from calibre.gui2.store.basic_config import BasicStoreConfig
from calibre.gui2.store.search_result import SearchResult
from calibre.gui2.store.web_store_dialog import WebStoreDialog
class GandalfStore(BasicStoreConfig, StorePlugin):
def open(self, parent=None, detail_item=None, external=False):
url = 'http://www.gandalf.com.pl/ebooks/'
if external or self.config.get('open_external', False):
open_url(QUrl(url_slash_cleaner(detail_item if detail_item else url)))
else:
d = WebStoreDialog(self.gui, url, parent, detail_item)
d.setWindowTitle(self.name)
d.set_tags(self.config.get('tags', ''))
d.exec_()
def search(self, query, max_results=10, timeout=60):
url = 'http://www.gandalf.com.pl/s/'
values={
'search': query,
'dzialx':'11'
}
br = browser()
counter = max_results
with closing(br.open(url, data=urllib.urlencode(values), timeout=timeout)) as f:
doc = html.fromstring(f.read())
for data in doc.xpath('//div[@class="box"]'):
if counter <= 0:
break
id = ''.join(data.xpath('.//div[@class="info"]/h3/a/@href'))
if not id:
continue
cover_url = ''.join(data.xpath('.//img/@src'))
title = ''.join(data.xpath('.//div[@class="info"]/h3/a/@title'))
temp = title.split()
title = ' '.join(temp[0:-1])
formats = temp[-1]
author = ''.join(data.xpath('.//div[@class="info"]/h4/text()'))
price = ''.join(data.xpath('.//h3[@class="promocja"]/text()'))
price = re.sub('PLN', '', price)
price = re.sub('\.', ',', price)
counter -= 1
s = SearchResult()
s.cover_url = cover_url
s.title = title.strip()
s.author = author.strip()
s.price = price
s.detail_item = id.strip()
s.drm = SearchResult.DRM_UNKNOWN
s.formats = formats.upper().strip()
yield s

View File

@ -63,6 +63,7 @@ class NextoStore(BasicStoreConfig, StorePlugin):
cover_url = ''.join(data.xpath('.//img[@class="cover"]/@src')) cover_url = ''.join(data.xpath('.//img[@class="cover"]/@src'))
title = ''.join(data.xpath('.//a[@class="title"]/text()')) title = ''.join(data.xpath('.//a[@class="title"]/text()'))
title = re.sub(r' - ebook$', '', title)
formats = ', '.join(data.xpath('.//ul[@class="formats_available"]/li//b/text()')) formats = ', '.join(data.xpath('.//ul[@class="formats_available"]/li//b/text()'))
DrmFree = re.search(r'bez.DRM', formats) DrmFree = re.search(r'bez.DRM', formats)
formats = re.sub(r'\(.+\)', '', formats) formats = re.sub(r'\(.+\)', '', formats)