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 YahooNews(BasicNewsRecipe):
    title = 'Yahoo News'
    __author__ = 'Starson17'
    description = 'Yahoo-Science'
    language = 'en'
    use_embedded_content = False
    no_stylesheets = True
    linearize_tables = True
    oldest_article = 24
    remove_javascript = True
    remove_empty_feeds = True
    max_articles_per_feed = 10

    feeds = [  # There are dozens of other feeds at http://news.yahoo.com/rss
        (u'Top Stories', u'http://rss.news.yahoo.com/rss/topstories'),
        (u'Science', u'http://rss.news.yahoo.com/rss/science')
    ]

    keep_only_tags = [
            dict(name='h1'),
            dict(attrs={'itemprop': 'articleBody'})
    ]

    remove_tags = [
            classes('canvas-yahoovideo canvas-sharebuttons'),
            dict(name='button'),
    ]

    extra_css = '''
                    h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
                    h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;}
                    p{font-family:Arial,Helvetica,sans-serif;font-size:small;}
                    body{font-family:Helvetica,Arial,sans-serif;font-size:small;}
    '''
