Added author name search

This commit is contained in:
Alex Stanev 2011-07-18 15:34:22 +03:00
parent f16f42490f
commit ff6324ea52

View File

@ -41,14 +41,15 @@ class ChitankaStore(BasicStoreConfig, StorePlugin):
def search(self, query, max_results=10, timeout=60): def search(self, query, max_results=10, timeout=60):
url = 'http://chitanka.info/search?q=' + urllib.quote(query) #urllib.quote(query.encode('utf-8')) base_url = 'http://chitanka.info'
url = base_url + '/search?q=' + urllib.quote(query)
br = browser()
counter = max_results counter = max_results
# search for book title
br = browser()
with closing(br.open(url, timeout=timeout)) as f: with closing(br.open(url, timeout=timeout)) as f:
ff = unicode(f.read(), 'utf-8') f = unicode(f.read(), 'utf-8')
doc = html.fromstring(ff) doc = html.fromstring(f)
for data in doc.xpath('//ul[@class="superlist booklist"]/li'): for data in doc.xpath('//ul[@class="superlist booklist"]/li'):
if counter <= 0: if counter <= 0:
@ -64,7 +65,8 @@ class ChitankaStore(BasicStoreConfig, StorePlugin):
fb2 = ''.join(data.xpath('.//a[@class="dl dl-fb2"]/@href')) fb2 = ''.join(data.xpath('.//a[@class="dl dl-fb2"]/@href'))
epub = ''.join(data.xpath('.//a[@class="dl dl-epub"]/@href')) epub = ''.join(data.xpath('.//a[@class="dl dl-epub"]/@href'))
txt = ''.join(data.xpath('.//a[@class="dl dl-txt"]/@href')) txt = ''.join(data.xpath('.//a[@class="dl dl-txt"]/@href'))
#remove .zip extensions
# remove .zip extensions
if fb2.find('.zip') <> -1: if fb2.find('.zip') <> -1:
fb2 = fb2[:fb2.find('.zip')] fb2 = fb2[:fb2.find('.zip')]
if epub.find('.zip') <> -1: if epub.find('.zip') <> -1:
@ -80,8 +82,59 @@ class ChitankaStore(BasicStoreConfig, StorePlugin):
s.author = author.strip() s.author = author.strip()
s.detail_item = id.strip() s.detail_item = id.strip()
s.drm = SearchResult.DRM_UNLOCKED s.drm = SearchResult.DRM_UNLOCKED
s.downloads['FB2'] = 'http://chitanka.info' + fb2.strip() s.downloads['FB2'] = base_url + fb2.strip()
s.downloads['EPUB'] = 'http://chitanka.info' + epub.strip() s.downloads['EPUB'] = base_url + epub.strip()
s.downloads['TXT'] = 'http://chitanka.info' + txt.strip() s.downloads['TXT'] = base_url + txt.strip()
s.formats = 'FB2, EPUB, TXT, SFB' s.formats = 'FB2, EPUB, TXT, SFB'
yield s yield s
# search for author names
for data in doc.xpath('//ul[@class="superlist"][1]/li'):
author_url = ''.join(data.xpath('.//a[contains(@href,"/person/")]/@href'))
if counter <= 0:
break
br2 = browser()
with closing(br2.open(base_url + author_url, timeout=timeout)) as f:
if counter <= 0:
break
f = unicode(f.read(), 'utf-8')
doc2 = html.fromstring(f)
# search for book title
for data in doc2.xpath('//ul[@class="superlist booklist"]/li'):
if counter <= 0:
break
id = ''.join(data.xpath('.//a[@class="booklink"]/@href'))
if not id:
continue
cover_url = ''.join(data.xpath('.//a[@class="booklink"]/img/@src'))
title = ''.join(data.xpath('.//a[@class="booklink"]/i/text()'))
author = ''.join(data.xpath('.//span[@class="bookauthor"]/a/text()'))
fb2 = ''.join(data.xpath('.//a[@class="dl dl-fb2"]/@href'))
epub = ''.join(data.xpath('.//a[@class="dl dl-epub"]/@href'))
txt = ''.join(data.xpath('.//a[@class="dl dl-txt"]/@href'))
# remove .zip extensions
if fb2.find('.zip') <> -1:
fb2 = fb2[:fb2.find('.zip')]
if epub.find('.zip') <> -1:
epub = epub[:epub.find('.zip')]
if txt.find('.zip') <> -1:
txt = txt[:txt.find('.zip')]
counter -= 1
s = SearchResult()
s.cover_url = cover_url
s.title = title.strip()
s.author = author.strip()
s.detail_item = id.strip()
s.drm = SearchResult.DRM_UNLOCKED
s.downloads['FB2'] = base_url + fb2.strip()
s.downloads['EPUB'] = base_url + epub.strip()
s.downloads['TXT'] = base_url + txt.strip()
s.formats = 'FB2, EPUB, TXT, SFB'
yield s