#!/usr/bin/env python
# vim:fileencoding=utf-8
'''
Fetch sueddeutsche.de
'''
from calibre.web.feeds.news import BasicNewsRecipe


class Sueddeutsche(BasicNewsRecipe):

    title = 'Süddeutsche Zeitung'
    __author__ = 'unkn0wn'
    oldest_article = 1.2
    masthead_url = 'https://upload.wikimedia.org/wikipedia/commons/4/42/S%C3%BCddeutsche_Zeitung_Logo.svg'
    description = 'Deutschlands führende Nachrichtenseite. Alles Wichtige aus Politik, Wirtschaft, Sport, Kultur, Wissenschaft, Technik und mehr.'
    encoding = 'utf-8'
    language = 'de'
    remove_attributes = ['style', 'height', 'width']
    ignore_duplicate_articles = {'url'}
    resolve_internal_links = True
    remove_empty_feeds = True
    no_javascript = True
    no_stylesheets = True

    recipe_specific_options = {
        'days': {
            'short': 'Oldest article to download from this news source. In days ',
            'long': 'For example, 0.5, gives you articles from the past 12 hours',
            'default': str(oldest_article)
        }
    }

    def __init__(self, *args, **kwargs):
        BasicNewsRecipe.__init__(self, *args, **kwargs)
        d = self.recipe_specific_options.get('days')
        if d and isinstance(d, str):
            self.oldest_article = float(d)

    extra_css = '''
        [data-manual="overline"] { font-size:small; color: #404040; }
        [data-manual="date"], [data-manual^="headerImageCaption"], [data-manual="author"] { font-size:small; }
         [data-manual="teaserText"] { font-style:italic; color:#202020; }
        blockquote, em { color: #202020; }
    '''

    def get_cover_url(self):
        soup = self.index_to_soup('https://www.frontpages.com/suddeutsche-zeitung/')
        return 'https://www.frontpages.com' + soup.find('img', attrs={'id':'giornale-img'})['src']

    keep_only_tags = [
        dict(attrs={'data-manual':['overline', 'title', 'date', 'headerImage', 'teaserText', 'author', 'body']}),
    ]
    remove_tags = [
        dict(name=['svg', 'button', 'meta']),
        dict(attrs={'data-manual-remove':'true'})
    ]

    # https://www.sueddeutsche.de/service/updates-mit-rss-uebersicht-aller-rss-feeds-fuer-sz-de-sz-magazin-und-jetzt-de-1.393950
    feeds = [
        (u'Politik', u'http://rss.sueddeutsche.de/rss/Politik'),
        (u'Wirtschaft', u'http://rss.sueddeutsche.de/rss/Wirtschaft'),
        (u'Geld', u'http://rss.sueddeutsche.de/rss/Geld'),
        (u'Kultur', u'http://rss.sueddeutsche.de/rss/Kultur'),
        (u'Sport', u'http://rss.sueddeutsche.de/rss/Sport'),
        (u'Leben', u'http://rss.sueddeutsche.de/rss/Leben'),
        (u'Karriere', u'http://rss.sueddeutsche.de/rss/Karriere'),
        (u'Bildung', u'http://rss.sueddeutsche.de/rss/Bildung'),
        (u'Gesundheit', u'http://rss.sueddeutsche.de/rss/gesundheit'),
        (u'Stil', u'http://rss.sueddeutsche.de/rss/stil'),
        (u'München & Region', u'http://rss.sueddeutsche.de/rss/muenchen'),
        (u'Bayern', u'http://rss.sueddeutsche.de/rss/Bayern'),
        (u'Medien', u'http://rss.sueddeutsche.de/rss/Medien'),
        (u'Digital', u'http://rss.sueddeutsche.de/rss/Digital'),
        (u'Auto', u'http://rss.sueddeutsche.de/rss/Auto'),
        (u'Wissen', u'http://rss.sueddeutsche.de/rss/Wissen'),
        (u'Panorama', u'http://rss.sueddeutsche.de/rss/Panorama'),
        (u'Reise', u'http://rss.sueddeutsche.de/rss/Reise'),
        (u'Alles', u'https://rss.sueddeutsche.de/alles')
    ]

    def get_article_url(self, article):
        url = BasicNewsRecipe.get_article_url(self, article)
        url = url.split('?')[0]
        if 'sz-magazin.sueddeutsche.de/' not in url and 'artikel' not in url:
            return url

    def preprocess_html(self, soup):
        sub = soup.find(attrs={'data-manual':['overline', 'date']})
        if sub:
            sub.name = 'div'
        h1 = soup.find(attrs={'data-manual':'title'})
        if h1:
            h1.name = 'h1'
        for img in soup.findAll('img', attrs={'data-src':True}):
            img['src'] = img['data-src']
        return soup

    def print_version(self, url):
        return 'https://och.to/unlock/' + url
