#!/usr/bin/env python # vim:fileencoding=utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from calibre.web.feeds.news import BasicNewsRecipe def classes(classes): q = frozenset(classes.split(' ')) return dict( attrs={'class': lambda x: x and frozenset(x.split()).intersection(q)}) class FoxNews(BasicNewsRecipe): title = 'FOX News' __author__ = 'Darko Miletic' description = 'Breaking News from FOX' publisher = 'FOXNews.com' category = 'news, breaking news, latest news, current news, world news, national news, USA' oldest_article = 2 max_articles_per_feed = 200 no_stylesheets = True encoding = 'utf8' use_embedded_content = False language = 'en' remove_empty_feeds = True extra_css = """ body{font-family: Arial,sans-serif } .caption{font-size: x-small} .author,.dateline{font-size: small} """ conversion_options = { 'comment': description, 'tags': category, 'publisher': publisher, 'language': language} remove_attributes = ['xmlns', 'lang'] ignore_duplicate_articles = {'title', 'url'} keep_only_tags = [ dict(itemprop=['headline', 'articleBody']), dict(name='h1'), classes('byline author date source article-info article-body featured-image'), ] feeds = [(u'Latest Headlines', u'http://feeds.foxnews.com/foxnews/latest'), (u'National', u'http://feeds.foxnews.com/foxnews/national'), (u'World', u'http://feeds.foxnews.com/foxnews/world'), (u'Politics', u'http://feeds.foxnews.com/foxnews/politics'), (u'Opinion', u'http://feeds.foxnews.com/foxnews/opinion'), (u'Science', u'http://feeds.foxnews.com/foxnews/science'), (u'Technology', u'http://feeds.foxnews.com/foxnews/tech'), (u'Health', u'http://feeds.foxnews.com/foxnews/health'), (u'Lifestyle', u'http://feeds.foxnews.com/foxnews/section/lifestyle'), (u'Travel', u'http://feeds.foxnews.com/foxnews/internal/travel/mixed')]