Calibre plugin enabling search and download from
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
2.2 KiB

__license__ = 'GPL 3'
__copyright__ = '2012, Ruben Pollan <>'
__docformat__ = 'restructuredtext en'
from urllib.parse import quote
from urllib2 import quote
from PyQt5.Qt import QUrl
from PyQt4.Qt import QUrl
from contextlib import closing
import json
from calibre import browser
from calibre.gui2 import open_url
from import StorePlugin
from import BasicStoreConfig
from import SearchResult
from import WebStoreDialog
class TheAnarchistLibraryStore(BasicStoreConfig, StorePlugin):
def open(self, parent=None, detail_item=None, external=False):
url = ''
if external or self.config.get('open_external', False):
open_url(QUrl(url_slash_cleaner(detail_item if detail_item else url)))
d = WebStoreDialog(self.gui, url, parent, detail_item)
d.set_tags(self.config.get('tags', ''))
def search(self, query, max_results=10, timeout=60):
url = '' + quote(query)
br = browser()
counter = max_results
with closing(, timeout=timeout)) as f:
doc = json.load(f)
for data in doc:
s = SearchResult()
s.title = data['title'].strip() = data['author'].strip()
s.price = '$0.00'
s.detail_item = data['url'].strip()
s.drm = SearchResult.DRM_UNLOCKED
s.downloads['EPUB'] = data['url'].strip() + '.epub'
s.downloads['PDF'] = data['url'].strip() + '.pdf'
s.downloads['A4.PDF'] = data['url'].strip() + '.a4.pdf'
s.downloads['LT.PDF'] = data['url'].strip() + '.lt.pdf'
s.downloads['TXT'] = data['url'].strip() + '.txt'
s.downloads['TEX'] = data['url'].strip() + '.tex'
s.downloads['MUSE'] = data['url'].strip() + '.muse'
s.formats = 'EPUB, PDF, A4.PDF, LT.PDF, TXT, TEX, MUSE'
yield s