__license__ = 'GPL v3'
from calibre.web.feeds.news import BasicNewsRecipe


class LinuxPortal(BasicNewsRecipe):
    title = u'LinuxPortal'
    __author__ = 'fenuks'
    description = u'Na LinuxPortal.pl znajdziesz wiadomości o systemie Linux, open source oraz Androidzie.'
    category = 'it'
    language = 'pl'
    cover_url = 'http://www.linuxportal.pl/templates/css/loga/Linuxportal.gif'
    masthead_url = 'http://www.linuxportal.pl/templates/css/loga/Linuxportal.gif'
    use_embedded_content = False
    oldest_article = 7
    max_articles_per_feed = 20
    no_stylesheets = True
    remove_empty_feeds = True
    remove_javascript = True
    remove_attributes = ['style', 'font']
    ignore_duplicate_articles = {'title', 'url'}
    auto_cleanup = True

    def parse_index(self):
        feeds = []
        feeds.append((u'Wszystkie wiadomości', self.get_articles(
            'http://www.linuxportal.pl/news/wszystkie')))
        return feeds

    def get_articles(self, url):
        articles = []
        blacklist = {'dobreprogramy.pl', 'osworld.pl', 'osnews.pl', }
        nexturl = url
        counter = 0
        skip = False
        while counter < self.max_articles_per_feed:
            soup = self.index_to_soup(nexturl)
            nexturl = soup.find(attrs={'title': 'Starsze wyniki'})['href']
            for tag in soup.findAll(attrs={'class': 'lista_wizyt_kol_tytul_news'}):
                title = tag.h2.a.string
                url = tag.find(attrs={'class': 'linkzrodlo'})['href']
                date = ''
                for item in blacklist:
                    if item in url:
                        counter -= 1
                        skip = True
                        break
                if skip:
                    skip = False
                    continue

                articles.append({'title': title,
                                 'url': url,
                                 'date': date,
                                 'description': ''
                                 })
                counter += 1
        return articles
