calibre/recipes/spektrum.recipe
Kovid Goyal 29cd8d64ea
Change shebangs to python from python2
Also remove a few other miscellaneous references to python2
2020-08-22 18:47:51 +05:30

94 lines
3.1 KiB
Python

#!/usr/bin/env python
# vim:fileencoding=utf-8
##
# Written: October 2012 (new coding)
# Version: 9.0
# Last update: 2018-02-22
##
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3'
__copyright__ = ''
'''
Fetch RSS-Feeds spektrum.de
'''
def classes(classes):
q = frozenset(classes.split(' '))
return dict(
attrs={'class': lambda x: x and frozenset(x.split()).intersection(q)}
)
from calibre.web.feeds.recipes import BasicNewsRecipe
class Spektrum(BasicNewsRecipe):
title = u'Spektrum der Wissenschaft'
__author__ = 'Armin Geller, Bratzzo, Rainer Zenz, update epubli'
description = u'German online portal of Spektrum der Wissenschaft'
publisher = 'Spektrum der Wissenschaft Verlagsgesellschaft mbH'
category = 'science news, Germany'
oldest_article = 7
max_articles_per_feed = 100
no_stylesheets = True
remove_javascript = True
remove_empty_feeds = True
language = 'de'
encoding = 'utf8'
ignore_duplicate_articles = {'title'}
cover_url = 'https://www.spektrum.de/js_css/sde/assets/img/svg/sdw_dark.svg'
masthead_url = 'http://www.spektrum.de/fm/861/spektrum.de.png'
feeds = [
(
u'Spektrum.de',
u'http://www.spektrum.de/alias/rss/spektrum-de-rss-feed/996406'
),
# (u'Spektrum der Wissenschaft', u'http://www.spektrum.de/alias/rss/spektrum-der-wissenschaft-rss-feed/982623'),
# (u'Gehirn & Geist', u'http://www.spektrum.de/alias/rss/gehirn-geist-rss-feed/982626'),
(
u'Sterne und Weltraum',
u'http://www.spektrum.de/alias/rss/sterne-und-weltraum-rss-feed/865248'
),
# (u'Meistgelesene Artikel',u'http://www.spektrum.de/alias/rss/spektrum-de-meistgelesene-artikel/1224665'), # AGe 2014-08-21 new
]
keep_only_tags = [
dict(name='article', attrs={'class': 'content'}),
]
remove_tags = [
classes('hide-for-print'),
classes('content__meta'),
classes('content__author'),
classes('content__video'),
dict(name='div', attrs={'role': 'navigation'}),
dict(name='span', attrs={'class': 'sr-only'}),
]
def parse_feeds(self):
# Call parent's method.
feeds = BasicNewsRecipe.parse_feeds(self)
# Loop through all feeds.
for feed in feeds:
# Loop through all articles in feed.
for article in feed.articles[:]:
if 'VIDEO' in article.title:
feed.articles.remove(article)
# Remove articles with 'video','podcast' or 'rezension' in the url.
elif 'podcast' in article.url:
feed.articles.remove(article)
elif 'video' in article.url:
feed.articles.remove(article)
elif 'rezension' in article.url:
feed.articles.remove(article)
return feeds
def preprocess_html(self, soup, *a):
for img in soup.findAll('img', attrs={'data-src': True}):
img['src'] = img['data-src']
return soup