#!/usr/bin/env python

__license__ = 'GPL v3'

from calibre.web.feeds.news import BasicNewsRecipe


class naszdziennik(BasicNewsRecipe):
    title = 'Nasz Dziennik'
    __author__ = 'Artur Stachecki <artur.stachecki@gmail.com>'
    language = 'pl'
    description = 'Nasz Dziennik - Ogólnopolska gazeta codzienna. Podejmuje tematykę dotyczącą życia społecznego, kulturalnego, politycznego i religijnego. Propaguje wartości chrześcijańskie oraz tradycję i kulturę polską.'  # noqa: E501
    masthead_url = 'http://www.naszdziennik.pl/images/logo-male.png'
    max_articles_per_feed = 100
    remove_javascript = True
    no_stylesheets = True

    keep_only_tags = [dict(attrs={'id': 'article'})]

    # definiujemy nową funkcje; musi zwracać listę feedów wraz z artykułami
    def parse_index(self):
        # adres do parsowania artykułów
        soup = self.index_to_soup('http://www.naszdziennik.pl/news')
        # deklaracja pustej listy feedów
        feeds = []
        # deklaracja pustego słownika artykułów
        articles = {}
        # deklaracja pustej listy sekcji
        sections = []
        # deklaracja pierwszej sekcji jako pusty string
        section = ''

        # pętla for, która analizuje po kolei każdy tag "news-article"
        for item in soup.findAll(attrs={'class': 'news-article'}):
            # w tagu "news-article szukamy pierwszego taga h4"
            section = item.find('h4')
            # zmiennej sekcja przypisujemy zawartość tekstową taga
            section = self.tag_to_string(section)
            # sprawdzamy czy w słowniku artykułów istnieje klucz dotyczący sekcji
            # jeśli nie istnieje to :
            if section not in articles:
                # do listy sekcji dodajemy nową sekcje
                sections.append(section)
                # deklarujemy nową sekcje w słowniku artykułów przypisując jej
                # klucz odpowiadający nowej sekcji, którego wartością jest
                # pusta lista
                articles[section] = []
            # przeszukujemy kolejny tag "title-datetime"
            article_title_datetime = item.find(attrs={'class': 'title-datetime'})
            # w tagu title-datetime znajdujemy pierwszy link
            article_a = article_title_datetime.find('a')
            # i tworzymy z niego link absolutny do właściwego artykułu
            article_url = 'http://naszdziennik.pl' + article_a['href']
            # jako tytuł użyty będzie tekst pomiędzy tagami <a>
            article_title = self.tag_to_string(article_a)
            # a data będzie tekstem z pierwszego taga h4 znalezionego w tagu
            # title-datetime
            article_date = self.tag_to_string(article_title_datetime.find('h4'))
            # zebrane elementy dodajemy do listy zadeklarowanej w linijce 44
            articles[section].append({'title': article_title, 'url': article_url, 'date': article_date})
        # po dodaniu wszystkich artykułów dodajemy sekcje do listy feedów,
        # korzystając z list sekcji znajdujących się w słowniku
        for section in sections:
            feeds.append((section, articles[section]))
        # zwracamy listę feedów, której parsowaniem zajmie się calibre
        return feeds
