mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-10-31 02:27:01 -04:00 
			
		
		
		
	Polish stores
This commit is contained in:
		
							parent
							
								
									feb3b98a09
								
							
						
					
					
						commit
						da5a1a1b22
					
				| @ -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, | ||||||
|  | |||||||
							
								
								
									
										78
									
								
								src/calibre/gui2/store/gandalf_plugin.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								src/calibre/gui2/store/gandalf_plugin.py
									
									
									
									
									
										Normal 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', 'zł', 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 | ||||||
| @ -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) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user