mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
70 lines
3.3 KiB
Python
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
|