mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
...
This commit is contained in:
parent
aeb57e9a24
commit
b2da9d4d93
@ -5,7 +5,6 @@ www.diariobae.com
|
|||||||
'''
|
'''
|
||||||
from calibre import strftime
|
from calibre import strftime
|
||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
from calibre.ebooks.BeautifulSoup import Tag
|
|
||||||
|
|
||||||
class BsAsEconomico(BasicNewsRecipe):
|
class BsAsEconomico(BasicNewsRecipe):
|
||||||
title = 'Buenos Aires Economico'
|
title = 'Buenos Aires Economico'
|
||||||
@ -22,8 +21,8 @@ class BsAsEconomico(BasicNewsRecipe):
|
|||||||
cover_url = strftime('http://www.diariobae.com/imgs_portadas/%Y%m%d_portadasBAE.jpg')
|
cover_url = strftime('http://www.diariobae.com/imgs_portadas/%Y%m%d_portadasBAE.jpg')
|
||||||
masthead_url = 'http://www.diariobae.com/img/logo_bae.png'
|
masthead_url = 'http://www.diariobae.com/img/logo_bae.png'
|
||||||
remove_empty_feeds = True
|
remove_empty_feeds = True
|
||||||
publication_type = 'newspaper'
|
publication_type = 'newspaper'
|
||||||
extra_css = """
|
extra_css = """
|
||||||
body{font-family: Georgia,"Times New Roman",Times,serif}
|
body{font-family: Georgia,"Times New Roman",Times,serif}
|
||||||
#titulo{font-size: x-large}
|
#titulo{font-size: x-large}
|
||||||
#epi{font-size: small; font-style: italic; font-weight: bold}
|
#epi{font-size: small; font-style: italic; font-weight: bold}
|
||||||
@ -43,7 +42,7 @@ class BsAsEconomico(BasicNewsRecipe):
|
|||||||
,dict(attrs={'id':'barra_tw'})
|
,dict(attrs={'id':'barra_tw'})
|
||||||
]
|
]
|
||||||
remove_attributes = ['data-count','data-via']
|
remove_attributes = ['data-count','data-via']
|
||||||
|
|
||||||
feeds = [
|
feeds = [
|
||||||
(u'Argentina' , u'http://www.diariobae.com/rss/argentina.xml' )
|
(u'Argentina' , u'http://www.diariobae.com/rss/argentina.xml' )
|
||||||
,(u'Valores' , u'http://www.diariobae.com/rss/valores.xml' )
|
,(u'Valores' , u'http://www.diariobae.com/rss/valores.xml' )
|
||||||
|
@ -5,8 +5,6 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import urllib2
|
|
||||||
|
|
||||||
from PyQt4.Qt import (QPixmap, QSize, QWidget, Qt, pyqtSignal, QUrl,
|
from PyQt4.Qt import (QPixmap, QSize, QWidget, Qt, pyqtSignal, QUrl,
|
||||||
QPropertyAnimation, QEasingCurve, QApplication, QFontInfo,
|
QPropertyAnimation, QEasingCurve, QApplication, QFontInfo,
|
||||||
QSizePolicy, QPainter, QRect, pyqtProperty, QLayout, QPalette, QMenu)
|
QSizePolicy, QPainter, QRect, pyqtProperty, QLayout, QPalette, QMenu)
|
||||||
|
@ -30,6 +30,9 @@ class ArchiveOrgStore(BasicStoreConfig, OpenSearchStore):
|
|||||||
The opensearch feed only returns a subset of formats that are available.
|
The opensearch feed only returns a subset of formats that are available.
|
||||||
We want to get a list of all formats that the user can get.
|
We want to get a list of all formats that the user can get.
|
||||||
'''
|
'''
|
||||||
|
from calibre import browser
|
||||||
|
from contextlib import closing
|
||||||
|
from lxml import html
|
||||||
br = browser()
|
br = browser()
|
||||||
with closing(br.open(search_result.detail_item, timeout=timeout)) as nf:
|
with closing(br.open(search_result.detail_item, timeout=timeout)) as nf:
|
||||||
idata = html.fromstring(nf.read())
|
idata = html.fromstring(nf.read())
|
||||||
|
@ -7,7 +7,6 @@ __copyright__ = '2011, John Schember <john@nachtimwald.com>'
|
|||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import random
|
import random
|
||||||
import re
|
|
||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
|
|
||||||
from lxml import html
|
from lxml import html
|
||||||
@ -22,13 +21,13 @@ from calibre.gui2.store.search_result import SearchResult
|
|||||||
from calibre.gui2.store.web_store_dialog import WebStoreDialog
|
from calibre.gui2.store.web_store_dialog import WebStoreDialog
|
||||||
|
|
||||||
class BNStore(BasicStoreConfig, StorePlugin):
|
class BNStore(BasicStoreConfig, StorePlugin):
|
||||||
|
|
||||||
def open(self, parent=None, detail_item=None, external=False):
|
def open(self, parent=None, detail_item=None, external=False):
|
||||||
pub_id = 'sHa5EXvYOwA'
|
pub_id = 'sHa5EXvYOwA'
|
||||||
# Use Kovid's affiliate id 30% of the time.
|
# Use Kovid's affiliate id 30% of the time.
|
||||||
if random.randint(1, 10) in (1, 2, 3):
|
if random.randint(1, 10) in (1, 2, 3):
|
||||||
pub_id = '0dsO3kDu/AU'
|
pub_id = '0dsO3kDu/AU'
|
||||||
|
|
||||||
base_url = 'http://click.linksynergy.com/fs-bin/click?id=%s&subid=&offerid=229293.1&type=10&tmpid=8433&RD_PARM1=' % pub_id
|
base_url = 'http://click.linksynergy.com/fs-bin/click?id=%s&subid=&offerid=229293.1&type=10&tmpid=8433&RD_PARM1=' % pub_id
|
||||||
url = base_url + 'http%253A%252F%252Fwww.barnesandnoble.com%252F'
|
url = base_url + 'http%253A%252F%252Fwww.barnesandnoble.com%252F'
|
||||||
|
|
||||||
@ -46,27 +45,27 @@ class BNStore(BasicStoreConfig, StorePlugin):
|
|||||||
def search(self, query, max_results=10, timeout=60):
|
def search(self, query, max_results=10, timeout=60):
|
||||||
query = query.replace(' ', '-')
|
query = query.replace(' ', '-')
|
||||||
url = 'http://www.barnesandnoble.com/s/%s?store=ebook&sze=%s' % (query, max_results)
|
url = 'http://www.barnesandnoble.com/s/%s?store=ebook&sze=%s' % (query, max_results)
|
||||||
|
|
||||||
br = browser()
|
br = browser()
|
||||||
|
|
||||||
counter = max_results
|
counter = max_results
|
||||||
with closing(br.open(url, timeout=timeout)) as f:
|
with closing(br.open(url, timeout=timeout)) as f:
|
||||||
doc = html.fromstring(f.read())
|
doc = html.fromstring(f.read())
|
||||||
for data in doc.xpath('//ul[contains(@class, "result-set")]/li[contains(@class, "result")]'):
|
for data in doc.xpath('//ul[contains(@class, "result-set")]/li[contains(@class, "result")]'):
|
||||||
if counter <= 0:
|
if counter <= 0:
|
||||||
break
|
break
|
||||||
|
|
||||||
id = ''.join(data.xpath('.//div[contains(@class, "image")]/a/@href'))
|
id = ''.join(data.xpath('.//div[contains(@class, "image")]/a/@href'))
|
||||||
if not id:
|
if not id:
|
||||||
continue
|
continue
|
||||||
cover_url = ''.join(data.xpath('.//div[contains(@class, "image")]//img/@src'))
|
cover_url = ''.join(data.xpath('.//div[contains(@class, "image")]//img/@src'))
|
||||||
|
|
||||||
title = ''.join(data.xpath('.//p[@class="title"]//span[@class="name"]/text()'))
|
title = ''.join(data.xpath('.//p[@class="title"]//span[@class="name"]/text()'))
|
||||||
author = ', '.join(data.xpath('.//ul[@class="contributors"]//li[position()>1]//a/text()'))
|
author = ', '.join(data.xpath('.//ul[@class="contributors"]//li[position()>1]//a/text()'))
|
||||||
price = ''.join(data.xpath('.//table[@class="displayed-formats"]//a[@class="subtle"]/text()'))
|
price = ''.join(data.xpath('.//table[@class="displayed-formats"]//a[@class="subtle"]/text()'))
|
||||||
|
|
||||||
counter -= 1
|
counter -= 1
|
||||||
|
|
||||||
s = SearchResult()
|
s = SearchResult()
|
||||||
s.cover_url = cover_url
|
s.cover_url = cover_url
|
||||||
s.title = title.strip()
|
s.title = title.strip()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user