From 35ee75d43459b4ef23e391913c5ca7e1d6b9310a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C5=82ugosz?= Date: Sat, 21 May 2011 13:41:10 +0200 Subject: [PATCH 1/4] Woblink store --- src/calibre/customize/builtins.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index ac26544207..fd80f14b60 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -1236,6 +1236,12 @@ class StoreWizardsTowerBooksStore(StoreBase): description = 'Wizard\'s Tower Press.' actual_plugin = 'calibre.gui2.store.wizards_tower_books_plugin:WizardsTowerBooksStore' +class StoreWoblinkStore(StoreBase): + name = 'Woblink' + author = 'Tomasz Długosz' + description = _('Czytanie zdarza się wszędzie!') + actual_plugin = 'calibre.gui2.store.woblink_plugin:WoblinkStore' + plugins += [ StoreArchiveOrgStore, StoreAmazonKindleStore, @@ -1264,7 +1270,8 @@ plugins += [ StoreSmashwordsStore, StoreWaterstonesUKStore, StoreWeightlessBooksStore, - StoreWizardsTowerBooksStore + StoreWizardsTowerBooksStore, + StoreWoblinkStore ] # }}} From 215e3fa699d9e8b03e88221c1ce9c38feef44702 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C5=82ugosz?= Date: Sat, 21 May 2011 13:44:04 +0200 Subject: [PATCH 2/4] Woblink store, missed file --- src/calibre/gui2/store/woblink_plugin.py | 76 ++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/calibre/gui2/store/woblink_plugin.py diff --git a/src/calibre/gui2/store/woblink_plugin.py b/src/calibre/gui2/store/woblink_plugin.py new file mode 100644 index 0000000000..9659f72fd1 --- /dev/null +++ b/src/calibre/gui2/store/woblink_plugin.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- + +from __future__ import (unicode_literals, division, absolute_import, print_function) + +__license__ = 'GPL 3' +__copyright__ = '2011, Tomasz Długosz ' +__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 WoblinkStore(BasicStoreConfig, StorePlugin): + + def open(self, parent=None, detail_item=None, external=False): + + url = 'http://woblink.com/publication' + detail_url = None + + if detail_item: + detail_url = 'http://woblink.com' + detail_item + + if external or self.config.get('open_external', False): + open_url(QUrl(url_slash_cleaner(detail_url if detail_url else url))) + else: + d = WebStoreDialog(self.gui, url, parent, detail_url) + d.setWindowTitle(self.name) + d.set_tags(self.config.get('tags', '')) + d.exec_() + + def search(self, query, max_results=10, timeout=60): + url = 'http://woblink.com/publication?query' + urllib.quote_plus(query.encode('utf-8')) + + br = browser() + + counter = max_results + with closing(br.open(url, timeout=timeout)) as f: + doc = html.fromstring(f.read()) + for data in doc.xpath('//div[@class="book-item"]'): + if counter <= 0: + break + + id = ''.join(data.xpath('.//td[@class="w10 va-t"]/a[1]/@href')) + if not id: + continue + + cover_url = ''.join(data.xpath('.//td[@class="w10 va-t"]/a[1]/img/@src')) + title = ''.join(data.xpath('.//h3[@class="title"]/a[1]/text()')) + author = ''.join(data.xpath('.//p[@class="author"]/a[1]/text()')) + price = ''.join(data.xpath('.//div[@class="prices"]/p[1]/span/text()')) + price = re.sub('PLN', ' zł', price) + price = re.sub('\.', ',', price) + + counter -= 1 + + s = SearchResult() + s.cover_url = 'http://woblink.com' + cover_url + s.title = title.strip() + s.author = author.strip() + s.price = price + s.detail_item = id.strip() + s.drm = SearchResult.DRM_LOCKED + s.formats = 'EPUB' + + yield s From d9dc12c9d9a68522c8cf2bc2e38cb169d067bd77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C5=82ugosz?= Date: Sun, 22 May 2011 13:32:29 +0200 Subject: [PATCH 3/4] Add new variables for Woblink --- src/calibre/customize/builtins.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index 783a5e7f94..f27df26d3d 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -1364,6 +1364,10 @@ class StoreWoblinkStore(StoreBase): description = _('Czytanie zdarza się wszędzie!') actual_plugin = 'calibre.gui2.store.woblink_plugin:WoblinkStore' + drm_free_only = False + location = 'PL' + formats = ['EPUB'] + plugins += [ StoreArchiveOrgStore, StoreAmazonKindleStore, From 1c448eae14a53fa95f2ee24271139245f41ddb26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C5=82ugosz?= Date: Sun, 22 May 2011 21:41:42 +0200 Subject: [PATCH 4/4] new descriptions --- src/calibre/customize/builtins.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index 0e239a2706..89d9512317 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -1238,7 +1238,7 @@ class StoreFoylesUKStore(StoreBase): class StoreGandalfStore(StoreBase): name = 'Gandalf' author = u'Tomasz Długosz' - description = u'Zaczarowany świat książek.' + description = u'Księgarnia internetowa Gandalf.' actual_plugin = 'calibre.gui2.store.gandalf_plugin:GandalfStore' drm_free_only = False @@ -1293,7 +1293,7 @@ class StoreMobileReadStore(StoreBase): class StoreNextoStore(StoreBase): name = 'Nexto' author = u'Tomasz Długosz' - description = u'Ebooki, prasa - księgarnia internetowa.' + description = u'Największy w Polsce sklep internetowy z audiobookami mp3, ebookami pdf oraz prasą do pobrania on-line.' actual_plugin = 'calibre.gui2.store.nexto_plugin:NextoStore' drm_free_only = False