calibre/recipes/popscience.recipe
2019-04-13 09:17:31 +05:30

46 lines
1.7 KiB
Plaintext

from calibre.web.feeds.news import BasicNewsRecipe
import re
class AdvancedUserRecipe1282101454(BasicNewsRecipe):
title = 'Popular Science'
language = 'en'
__author__ = 'Kovid Goyal'
description = 'Popular Science'
publisher = 'Popular Science'
oldest_article = 7 # change this if you want more current articles. I like to go a week in
max_articles_per_feed = 100
no_stylesheets = True
remove_javascript = True
use_embedded_content = False
remove_empty_feeds = True
ignore_duplicate_articles = {'url'}
feeds = [
('Gadgets', 'http://www.popsci.com/full-feed/gadgets'),
('Cars', 'http://www.popsci.com/full-feed/cars'),
('Science', 'http://www.popsci.com/full-feed/science'),
('Technology', 'http://www.popsci.com/full-feed/technology'),
('DIY', 'http://www.popsci.com/full-feed/diy'),
('Animals', 'https://www.popsci.com/rss-animals.xml'),
('Space', 'https://www.popsci.com/rss-space.xml'),
('Environment', 'https://www.popsci.com/rss-environment.xml'),
('Eastern Arsenal', 'https://www.popsci.com/rss-eastern-arsenal.xml'),
]
pane_node_body = re.compile('pane-node-(?:\\w+-){0,9}body')
keep_only_tags = [
dict(attrs={'class': lambda x: x and frozenset('pane-node-header'.split()).issubset(frozenset(x.split()))}),
dict(attrs={'class': pane_node_body}),
]
remove_tags = [
dict(attrs={'class': lambda x: x and frozenset('ads seperator'.split()).issubset(frozenset(x.split()))}),
]
def preprocess_html(self, soup):
for img in soup.findAll('img', attrs={'data-medsrc': True}):
img['src'] = img['data-medsrc']
return soup