#!/usr/bin/env python
# vim:fileencoding=utf-8
from __future__ import absolute_import, division, print_function, unicode_literals

import re

from calibre.web.feeds.news import BasicNewsRecipe


class AdvancedUserRecipe1467571059(BasicNewsRecipe):
    title                 = 'De Standaard'
    __author__            = 'Darko Miletic, Aimylios, oCkz7bJ_'
    description           = 'De Standaard'
    publisher             = 'Mediahuis'
    category              = 'news, politics, Belgium'
    language              = 'nl_BE'

    oldest_article        = 2
    max_articles_per_feed = 100
    no_stylesheets        = True
    use_embedded_content  = False
    remove_javascript     = True

    cover_url    = 'http://www.standaard.be/extra/assets/extra/dslive/headers/ds-black.svg'
    masthead_url = 'http://tonysweb.be/m/img/tijdschriften/de_standaard.svg'

    # Source: http://www.standaard.be/rssfeeds
    feeds          = [
        # Nieuws
        ('Binnenland', 'http://www.standaard.be/rss/section/1f2838d4-99ea-49f0-9102-138784c7ea7c'),
        ('Buitenland', 'http://www.standaard.be/rss/section/e70ccf13-a2f0-42b0-8bd3-e32d424a0aa0'),
        ('Cultuur', 'http://www.standaard.be/rss/section/ab8d3fd8-bf2f-487a-818b-9ea546e9a859'),
        ('Media', 'http://www.standaard.be/rss/section/eb1a6433-ca3f-4a3b-ab48-a81a5fb8f6e2'),
        ('Economie', 'http://www.standaard.be/rss/section/451c8e1e-f9e4-450e-aa1f-341eab6742cc'),
        ('Sport', 'http://www.standaard.be/rss/section/8f693cea-dba8-46e4-8575-807d1dc2bcb7'),
        ('Beroemd en Bizar', 'http://www.standaard.be/rss/section/113a9a78-f65a-47a8-bd1c-b24483321d0f'),
        # Standaard.biz
        ('Overzicht', 'http://www.standaard.be/rss/section/a30afc42-3737-4301-8f8a-5b6833855457'),
        ('Economie', 'http://www.standaard.be/rss/section/212b8b54-bd91-4c8b-942c-8029e8797d36'),
        ('Bedrijven', 'http://www.standaard.be/rss/section/6aa8d4fa-4b9a-40d5-aa8f-87ac72472f27'),
        ('Consument', 'http://www.standaard.be/rss/section/46025691-2ec4-4a06-b6d7-9773686a24a7'),
        ('Beurs', 'http://www.standaard.be/rss/section/74cef9d1-3b28-4b90-943a-ce685bf6ed6e'),
        ('Marketing & Media', 'http://www.standaard.be/rss/section/9bdf4a14-f8bf-4439-aaf1-344181f73e73'),
        ('Mobilia', 'http://www.standaard.be/rss/section/270b7f8f-dd73-44cb-b622-9f7200a439a7'),
        # Lifestyle
        ('Mode', 'http://www.standaard.be/rss/section/3a4b39a1-e58f-42e4-8ae9-a0f90f97f27f'),
        ('Beauty', 'http://www.standaard.be/rss/section/51dd6a40-e297-409c-af25-9f0301159a1c'),
        ('Culinair', 'http://www.standaard.be/rss/section/ec1dbffa-a00b-48e6-96f0-00d215f90744'),
        ('Reizen', 'http://www.standaard.be/rss/section/eed96e23-ed90-4818-83ab-adabf8caf0f4'),
        ('Design & Wonen', 'http://www.standaard.be/rss/section/f4dd4e8d-6cb1-4eef-abc2-06b0e3d72de4'),
        ('Gezondheid & Psycho', 'http://www.standaard.be/rss/section/a166bb48-b6b4-4c1a-beb3-9f0301160b75'),
        ('Glamour', 'http://www.standaard.be/rss/section/06b5429e-beb1-4e76-909c-9f0301162a9c'),
        ('Lifestyleblog', 'http://www.standaard.be/rss/section/246d27cb-ce7b-4245-bad4-a09f0119b450'),
        # Weblogs
        ('Autoblog', 'http://www.standaard.be/rss/tag/autoblog'),
        ('Beursexperts', 'http://www.standaard.be/rss/tag/beursexperts'),
        ('En nu even elders', 'http://www.standaard.be/rss/tag/blog-en-nu-even-elders'),
        ('Marketingblog', 'http://www.standaard.be/rss/tag/marketingblog'),
        ('TV-blog', 'http://www.standaard.be/rss/tag/tv-blog'),
        # Interactie
        ('Opinies', 'http://feeds.feedburner.com/dso-meningen-opinie')
    ]

    keep_only_tags = [
        dict(name='header', attrs={'class':'article__header'}),
        dict(name='footer', attrs={'class':'article__meta'}),
        dict(name='article', attrs={'class':'article-full'}),
        dict(name='figure', attrs={'class':'article__image'})
    ]

    remove_tags = [
        dict(name=['embed', 'object']),
        dict(name='div', attrs={'class':['note NotePortrait', 'note']}),
        dict(name='ul', attrs={'class':re.compile('article__share')}),
        dict(name='div', attrs={'class':'slideshow__controls'}),
        dict(name='a', attrs={'role':'button'}),
        dict(name='figure', attrs={'class':re.compile('video')})
    ]

    remove_attributes = ['width', 'height']

    def preprocess_html(self, soup):
        del soup.body['onload']
        for item in soup.findAll(style=True):
            del item['style']
        return soup
