This commit is contained in:
Kovid Goyal 2018-10-14 06:46:50 +05:30
commit f6fa902490
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
13 changed files with 27 additions and 250 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 B

View File

@ -1,48 +0,0 @@
from calibre.web.feeds.news import BasicNewsRecipe
import re
class PB_PL(BasicNewsRecipe):
title = u'Puls Biznesu'
__author__ = 'fenuks'
language = 'pl'
description = u'Puls Biznesu - biznes, ekonomia, giełda, inwestycje'
category = u'newspaper'
publication_type = u'newspaper'
encoding = 'utf-8'
# masthead_url = 'http://www.pb.pl/img/pb.png'
oldest_article = 7
max_articles_per_feed = 100
no_stylesheets = True
remove_empty_feeds = True
ignore_duplicate_articles = {'title', 'url'}
remove_tags_after = dict(name='div', attrs={'class': 'news_content'})
feeds = [
(u'Wszystkie', u'http://www.pb.pl/atom'),
(u'Puls inwestora', u'http://pulsinwestora.pb.pl/atom'),
(u'Puls Firmy', u'http://firma.pb.pl/atom'),
(u'PB Weekend', u'http://weekend.pb.pl/atom'),
(u'Forum MPS', u'http://forummsp.pb.pl/atom'),
(u'Moto', u'http://moto.pb.pl/atom'),
(u'Kariera i praca', u'http://kariera.pb.pl/atom'),
(u'Nieruchomości', u'http://nieruchomosci.pb.pl/atom'),
(u'Samorządy', u'http://samorzady.pb.pl/atom'),
(u'Tech', u'http://tech.pb.pl/atom'),
(u'Energetyka', u'http://energetyka.pb.pl/atom'),
(u'Retailing', u'http://retailing.pb.pl/atom'),
(u'Puls medycyny', u'http://pulsmedycyny.pl/atom'),
(u'Logistyka', u'http://logistyka.pb.pl/atom')]
def print_version(self, url):
article_id = re.search(r'(?P<id>\d+,\d+)', url)
if article_id:
return 'http://www.pb.pl/actionprint/' + article_id.group('id')
else:
return url
def get_cover_url(self):
soup = self.index_to_soup('http://archiwum.pb.pl/')
cover = soup.find(name='img', attrs={'class': 'cover_picture'})
self.cover_url = cover['src']
return getattr(self, 'cover_url', self.cover_url)

View File

@ -11,35 +11,10 @@ class PurePC(BasicNewsRecipe):
description = u'Artykuły, aktualności, sprzęt, forum, chłodzenie, modding, urządzenia mobilne - wszystko w jednym miejscu.' description = u'Artykuły, aktualności, sprzęt, forum, chłodzenie, modding, urządzenia mobilne - wszystko w jednym miejscu.'
category = 'IT' category = 'IT'
language = 'pl' language = 'pl'
masthead_url = 'http://www.purepc.pl/themes/new/images/purepc.jpg'
cover_url = 'http://www.purepc.pl/themes/new/images/purepc.jpg' cover_url = 'http://www.purepc.pl/themes/new/images/purepc.jpg'
extra_css = '.wykres_logo {float: left; margin-right: 5px;}' extra_css = '.wykres_logo {float: left; margin-right: 5px;}'
no_stylesheets = True no_stylesheets = True
keep_only_tags = [dict(id='content')]
remove_tags_after = dict(attrs={'class': 'fivestar-widget'}) keep_only_tags = [dict(name='div', attrs={'class':'node page0'})]
remove_tags = [dict(id='navigator'), dict( remove_tags = [dict(name='div', attrs={'class':'article-options'})]
attrs={'class': ['box-tools', 'fivestar-widget', 'PageMenuList']})]
feeds = [(u'Wiadomo\u015bci', u'http://www.purepc.pl/node/feed')] feeds = [(u'Wiadomo\u015bci', u'http://www.purepc.pl/node/feed')]
def append_page(self, soup, appendtag):
lasturl = appendtag.find(attrs={'class': 'pager-last'})
if lasturl:
regex = re.search('(.+?2C)(\d+)', lasturl.a['href'])
baseurl = regex.group(1).replace('?page=0%2C', '?page=1%2C')
baseurl = 'http://www.purepc.pl' + baseurl
nr = int(regex.group(2))
for page_nr in range(1, nr + 1):
soup2 = self.index_to_soup(baseurl + str(page_nr))
pagetext = soup2.find(attrs={'class': 'article'})
pos = len(appendtag.contents)
appendtag.insert(pos, pagetext)
for r in appendtag.findAll(attrs={'class': ['PageMenuList', 'pager', 'fivestar-widget']}):
r.extract()
comments = appendtag.findAll(
text=lambda text: isinstance(text, Comment))
for comment in comments:
comment.extract()
def preprocess_html(self, soup):
self.append_page(soup, soup.body)
return soup

View File

@ -1,58 +0,0 @@
__copyright__ = '2012, Micha\u0142 <webmaster@racjonalista.pl>'
'''
Racjonalista.pl
'''
from calibre.web.feeds.news import BasicNewsRecipe
import re
class Racjonalista(BasicNewsRecipe):
__author__ = u'Micha\u0142 <webmaster@racjonalista.pl>'
publisher = u'Fundacja Wolnej My\u015bli'
title = u'Racjonalista.pl'
description = u'Racjonalista.pl'
category = 'newspaper'
language = 'pl'
encoding = 'iso-8859-2'
oldest_article = 7
max_articles_per_feed = 20
remove_javascript = True
no_stylesheets = True
use_embedded_content = False
simultaneous_downloads = 2
timeout = 30
cover_url = 'http://www.racjonalista.pl/img/uimg/rac.gif'
feeds = [(u'Racjonalista.pl', u'http://www.racjonalista.pl/rss.php')]
match_regexps = [r'kk\.php']
def print_version(self, url):
return url.replace('/s,', '/t,')
extra_css = 'h2 {font: serif large} .cytat {text-align: right}'
remove_attributes = ['target', 'width', 'height']
preprocess_regexps = [
(re.compile(i[0], re.DOTALL), i[1]) for i in
[(r'<p[^>]*>&nbsp;</p>', lambda match: ''),
(r'&nbsp;', lambda match: ' '),
(r'<meta[^>]+>', lambda match: ''),
(r'<link[^>]+>', lambda match: ''),
(r'</?center>', lambda match: ''),
(r'<a href="[^"]+" rel=author><b>(?P<a>[^<]+)</b></a>',
lambda match: '<b>' + match.group('a') + '</b>'),
(r'<div align=center style="font-size:18px">(?P<t>[^<]+)</div>',
lambda match: '<h2>' + match.group('t') + '</h2>'),
(r'<table align=center width=700 border=0 cellpadding=0 cellspacing=0><tr><td width="100%" bgcolor="#edeceb" height="100%" style="font-size:12px">', lambda match: ''), # noqa
(r'</td></tr><tr><td>', lambda match: ''),
(r'</td></tr></table></body>', lambda match: '</body>'),
(r'<a[^>]+><sup>(?P<p>[^<]+)</sup></a>',
lambda match: '<sup>' + match.group('p') + '</sup>'),
(r'<a name=p[^>]+>(?P<a>[^<]+)</a>', lambda match: match.group('a')),
(r'<a href="[^"]+" target=_blank class=linkext>Orygin[^<]+</a>',
lambda match: ''),
(r'<a href="[^"]+" class=powiazanie>Poka[^<]+</a>', lambda match: '')]
]

View File

@ -1,36 +0,0 @@
#!/usr/bin/env python2
__license__ = 'GPL v3'
from calibre.web.feeds.news import BasicNewsRecipe
class ResPublicaNowaRecipe(BasicNewsRecipe):
__license__ = 'GPL v3'
__author__ = u'Artur Stachecki <artur.stachecki@gmail.com>'
language = 'pl'
version = 1
title = u'Res Publica Nowa'
category = u'News'
description = u'Portal kulturalno-społecznego kwartalnika o profilu liberalnym, wydawany przez Fundację Res Publica'
cover_url = ''
remove_empty_feeds = True
no_stylesheets = True
oldest_article = 7
max_articles_per_feed = 100000
recursions = 0
no_stylesheets = True
remove_javascript = True
simultaneous_downloads = 5
feeds = [
('Artykuly', 'feed://publica.pl/feed'),
]
def preprocess_html(self, soup):
for alink in soup.findAll('a'):
if alink.string is not None:
tstr = alink.string
alink.replaceWith(tstr)
return soup

View File

@ -26,13 +26,11 @@ class RMF24_ESKN(BasicNewsRecipe):
(u'Nauka', u'http://www.rmf24.pl/nauka/feed')] (u'Nauka', u'http://www.rmf24.pl/nauka/feed')]
keep_only_tags = [ keep_only_tags = [
dict(name='div', attrs={'class': 'box articleSingle print'})] dict(name='header', attrs={'class': 'article-header'}),
dict(name='div', attrs={'class': 'article-container'})]
remove_tags = [ remove_tags = [dict(name='div', attrs={'id': 'ReklamaMobile'}),
dict(name='div', attrs={'class': 'toTop'}), dict(name='img', attrs={'class': 'img-responsive hidden-lg hidden-md hidden-sm'})]
dict(name='div', attrs={'class': 'category'}),
dict(name='div', attrs={'class': 'REMOVE'}),
dict(name='div', attrs={'class': 'embed embedAd'})]
extra_css = ''' extra_css = '''
h1 { font-size: 1.2em; } h1 { font-size: 1.2em; }
@ -42,7 +40,6 @@ class RMF24_ESKN(BasicNewsRecipe):
(re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in (re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in
[ [
(r'<h2>Zdj.cie</h2>', lambda match: ''), (r'<h2>Zdj.cie</h2>', lambda match: ''),
(r'embed embed(Left|Right|Center) articleEmbed(Audio|Wideo articleEmbedVideo|ArticleFull|ArticleTitle|ArticleListTitle|AlbumHorizontal)">', lambda match: 'REMOVE">'), # noqa
(r'<a href="http://www.facebook.com/pages/RMF24pl/.*?>RMF24.pl</a> on Facebook</div>', (r'<a href="http://www.facebook.com/pages/RMF24pl/.*?>RMF24.pl</a> on Facebook</div>',
lambda match: '</div>') lambda match: '</div>')
] ]

View File

@ -24,14 +24,11 @@ class RMF24(BasicNewsRecipe):
(u'\u015awiat', u'http://www.rmf24.pl/fakty/swiat/feed')] (u'\u015awiat', u'http://www.rmf24.pl/fakty/swiat/feed')]
keep_only_tags = [ keep_only_tags = [
dict(name='div', attrs={'class': 'box articleSingle print'})] dict(name='header', attrs={'class': 'article-header'}),
dict(name='div', attrs={'class': 'article-container'})]
remove_tags = [ remove_tags = [dict(name='div', attrs={'id': 'ReklamaMobile'}),
dict(name='div', attrs={'id': 'adBox625'}), dict(name='img', attrs={'class': 'img-responsive hidden-lg hidden-md hidden-sm'})]
dict(name='div', attrs={'class': 'toTop'}),
dict(name='div', attrs={'class': 'category'}),
dict(name='div', attrs={'class': 'REMOVE'}),
dict(name='div', attrs={'class': 'embed embedAd'})]
extra_css = ''' extra_css = '''
h1 { font-size: 1.2em; } h1 { font-size: 1.2em; }
@ -40,7 +37,6 @@ class RMF24(BasicNewsRecipe):
(re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in (re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in
[ [
(r'<h2>Zdj.cie</h2>', lambda match: ''), (r'<h2>Zdj.cie</h2>', lambda match: ''),
(r'embed embed(Left|Right|Center) articleEmbed(Audio|Wideo articleEmbedVideo|ArticleFull|ArticleTitle|ArticleListTitle|AlbumHorizontal)">', lambda match: 'REMOVE">'), # noqa
(r'<a href="http://www.facebook.com/pages/RMF24pl/.*?>RMF24.pl</a> on Facebook</div>', (r'<a href="http://www.facebook.com/pages/RMF24pl/.*?>RMF24.pl</a> on Facebook</div>',
lambda match: '</div>') lambda match: '</div>')
] ]

View File

@ -19,6 +19,7 @@ class RMF24_opinie(BasicNewsRecipe):
__author__ = u'Tomasz D\u0142ugosz' __author__ = u'Tomasz D\u0142ugosz'
no_stylesheets = True no_stylesheets = True
remove_javascript = True remove_javascript = True
remove_empty_feeds = True
feeds = [(u'Blogi', u'http://www.rmf24.pl/opinie/blogi/feed'), feeds = [(u'Blogi', u'http://www.rmf24.pl/opinie/blogi/feed'),
(u'Kontrwywiad', (u'Kontrwywiad',
@ -28,16 +29,10 @@ class RMF24_opinie(BasicNewsRecipe):
(u'Komentarze', u'http://www.rmf24.pl/opinie/komentarze/feed')] (u'Komentarze', u'http://www.rmf24.pl/opinie/komentarze/feed')]
keep_only_tags = [ keep_only_tags = [
dict(name='div', attrs={'class': 'box articleSingle print'}), dict(name='header', attrs={'class': 'article-header'}),
dict(name='div', attrs={ dict(name='div', attrs={'class': 'article-container'})]
'class': 'box articleSingle print singleCommentary'}),
dict(name='div', attrs={'class': 'box articleSingle print blogSingleEntry'})]
remove_tags = [ remove_tags = [dict(name='div', attrs={'id': 'ReklamaMobile'})]
dict(name='div', attrs={'class': 'toTop'}),
dict(name='div', attrs={'class': 'category'}),
dict(name='div', attrs={'class': 'REMOVE'}),
dict(name='div', attrs={'class': 'embed embedAd'})]
extra_css = ''' extra_css = '''
h1 { font-size: 1.2em; } h1 { font-size: 1.2em; }

View File

@ -17,26 +17,22 @@ class prawica_recipe(BasicNewsRecipe):
description = u'Portal "Rynek Infrastruktury" to źródło informacji o kluczowych elementach polskiej gospodarki: drogach, kolei, lotniskach, portach, telekomunikacji, energetyce, prawie i polityce, wzmocnione eksperckimi komentarzami kluczowych analityków.' # noqa description = u'Portal "Rynek Infrastruktury" to źródło informacji o kluczowych elementach polskiej gospodarki: drogach, kolei, lotniskach, portach, telekomunikacji, energetyce, prawie i polityce, wzmocnione eksperckimi komentarzami kluczowych analityków.' # noqa
remove_empty_feeds = True remove_empty_feeds = True
oldest_article = 1 oldest_article = 1
max_articles_per_feed = 100 max_articles_per_feed = 50
remove_javascript = True remove_javascript = True
no_stylesheets = True no_stylesheets = True
feeds = [ feeds = [
(u'Drogi', u'http://www.rynekinfrastruktury.pl/rss/41'), (u'Drogi', u'http://www.rynekinfrastruktury.pl/rss/drogi.xml'),
(u'Lotniska', u'http://www.rynekinfrastruktury.pl/rss/42'), (u'Kolej', u'http://www.rynekinfrastruktury.pl/rss/kolej.xml'),
(u'Kolej', u'http://www.rynekinfrastruktury.pl/rss/37'), (u'Energetyka', u'http://www.rynekinfrastruktury.pl/rss/energetyka.xml')
(u'Energetyka', u'http://www.rynekinfrastruktury.pl/rss/30'), # no news in these feeds since 4 years:
(u'Telekomunikacja', u'http://www.rynekinfrastruktury.pl/rss/31'), #(u'Porty i lotniska', u'http://www.rynekinfrastruktury.pl/rss/porty-i-lotniska.xml'),
(u'Porty', u'http://www.rynekinfrastruktury.pl/rss/32'), #(u'Komentarze', u'http://www.rynekinfrastruktury.pl/rss/komentarze-i-felietony.xml'),
(u'Prawo i polityka', u'http://www.rynekinfrastruktury.pl/rss/47'),
(u'Komentarze', u'http://www.rynekinfrastruktury.pl/rss/38'),
] ]
keep_only_tags = [] keep_only_tags = [
keep_only_tags.append(dict(name='div', attrs={'class': 'articleContent'})) dict(name='h1', attrs={'class': 'wiadTit'}),
dict(name='div', attrs={'class': ['wiadSzczegol', 'multimediaWiadomosci', 'wiadTresc']})
]
remove_tags = [] remove_tags = [dict(name='span', attrs={'class': 'kom'})]
remove_tags.append(dict(name='span', attrs={'class': 'date'}))
def print_version(self, url):
return url.replace('http://www.rynekinfrastruktury.pl/artykul/', 'http://www.rynekinfrastruktury.pl/artykul/drukuj/')

View File

@ -1,40 +0,0 @@
#!/usr/bin/env python2
__license__ = 'GPL v3'
__author__ = 'teepel <teepel44@gmail.com>'
'''
rynek-kolejowy.pl
'''
from calibre.web.feeds.news import BasicNewsRecipe
class rynek_kolejowy(BasicNewsRecipe):
title = u'Rynek Kolejowy'
__author__ = 'teepel <teepel44@gmail.com>'
language = 'pl'
description = u'Rynek Kolejowy - kalendarium wydarzeń branży kolejowej, konferencje, sympozja, targi kolejowe, krajowe i zagraniczne.'
masthead_url = 'http://p.wnp.pl/images/i/partners/rynek_kolejowy.gif'
remove_empty_feeds = True
oldest_article = 1
max_articles_per_feed = 100
remove_javascript = True
no_stylesheets = True
keep_only_tags = []
keep_only_tags.append(dict(name='div', attrs={'id': 'mainContent'}))
remove_tags = []
remove_tags.append(dict(name='div', attrs={'class': 'right no-print'}))
remove_tags.append(dict(name='div', attrs={'id': 'font-size'}))
remove_tags.append(dict(name='div', attrs={'class': 'no-print'}))
extra_css = '''.wiadomosc_title{ font-size: 1.4em; font-weight: bold; }'''
feeds = [(u'Wiadomości', u'http://www.rynek-kolejowy.pl/rss/rss.php')]
def print_version(self, url):
segment = url.split('/')
urlPart = segment[3]
return 'http://www.rynek-kolejowy.pl/drukuj.php?id=' + urlPart