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 BangkokPostRecipe(BasicNewsRecipe):
    __license__ = 'GPL v3'
    __author__ = 'kwetal'
    language = 'en_TH'
    version = 1

    title = u'Bangkok Post'
    publisher = u'Post Publishing PCL'
    category = u'News'
    description = u'The world\'s window to Thailand'

    oldest_article = 7
    max_articles_per_feed = 100

    no_stylesheets = True
    remove_javascript = True
    use_embedded_content = False

    # Feeds from: http://www.bangkokpost.com/rss/
    feeds = []
    feeds.append(
        (u'Breaking News', u'http://www.bangkokpost.com/rss/data/breakingnews.xml'))
    feeds.append(
        (u'Top Stories', u'http://www.bangkokpost.com/rss/data/topstories.xml'))
    feeds.append((u'News', u'http://www.bangkokpost.com/rss/data/news.xml'))
    feeds.append(
        (u'Business', u'http://www.bangkokpost.com/rss/data/business.xml'))
    feeds.append(
        (u'Opinion', u'http://www.bangkokpost.com/rss/data/opinion.xml'))
    feeds.append(
        (u'Travel', u'http://www.bangkokpost.com/rss/data/travel.xml'))
    feeds.append(
        (u'Leisure', u'http://www.bangkokpost.com/rss/data/leisure.xml'))
    feeds.append(
        (u'Entertainment', u'http://www.bangkokpost.com/rss/data/entertainment.xml'))
    feeds.append((u'Auto', u'http://www.bangkokpost.com/rss/data/auto.xml'))
    feeds.append((u'Life', u'http://www.bangkokpost.com/rss/data/life.xml'))
    feeds.append((u'Tech', u'http://www.bangkokpost.com/rss/data/tect.xml'))

    keep_only_tags = [
        dict(itemprop='headline'),
        classes('articleContents'),
    ]

    def print_version(self, url):
        if '.com/vdo/' in url:
            url = None
        return url
