calibre/recipes/naszdziennik.recipe
Kovid Goyal 29cd8d64ea
Change shebangs to python from python2
Also remove a few other miscellaneous references to python2
2020-08-22 18:47:51 +05:30

70 lines
3.3 KiB
Python

#!/usr/bin/env python
__license__ = 'GPL v3'
from calibre.web.feeds.news import BasicNewsRecipe
class naszdziennik(BasicNewsRecipe):
title = u'Nasz Dziennik'
__author__ = 'Artur Stachecki <artur.stachecki@gmail.com>'
language = 'pl'
description = u'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
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