WIP ajoute generation flux rss

This commit is contained in:
Florestan Bredow
2025-06-06 08:41:37 +02:00
committed by Florestan Bredow
parent 945aa6e57b
commit ee19286ee8
3 changed files with 17 additions and 2 deletions

View File

@@ -1,5 +1,6 @@
theme: './theme/default' theme: './theme/default'
inbox: './inbox' inbox: './inbox'
outbox: './outbox' outbox: './outbox'
url: 'https://blog.example.com'
title: 'Blog title' title: 'Blog title'
presentation: 'Blog presentation.' presentation: 'Blog presentation.'

View File

@@ -4,7 +4,7 @@ from pathlib import Path
from blog.page import Page from blog.page import Page
from blog.config import Config from blog.config import Config
from jinja2 import Environment, FileSystemLoader, Template from jinja2 import Environment, FileSystemLoader, Template
from rss import RssFeed
class Blog: class Blog:
@@ -34,6 +34,7 @@ class Blog:
self._copy_css() self._copy_css()
self._build_all_pages(page_template) self._build_all_pages(page_template)
self._build_index(index_template) self._build_index(index_template)
self._build_rss()
def _build_all_pages(self, template: Template): def _build_all_pages(self, template: Template):
"""Convertit les pages markdown dans conf.inbox en html dans conf.outbox""" """Convertit les pages markdown dans conf.inbox en html dans conf.outbox"""
@@ -55,6 +56,19 @@ class Blog:
with open(f"{self.conf.outbox}/index.html", "w+") as html_file: with open(f"{self.conf.outbox}/index.html", "w+") as html_file:
html_file.write(html_content) html_file.write(html_content)
def _build_rss(self):
""" """
feed = RssFeed(language="fr-fr", title=self.conf.title, link=self.conf.url, description=self.conf.presentation )
for page in self.pages:
feed.add_item(
title = self.pages[page].meta["title"],
link = Path(self.conf.url) / 'pages' / (page + '.html'),
description = "Ma description a moi !",
pubdate = self.pages[page].meta["date"]
)
with open(Path(self.conf.outbox) / "flux.rss", 'w+') as rss_file:
feed.write(rss_file, 'utf-8')
def _copy_css(self): def _copy_css(self):
css_path = Path(self.conf.theme) / "css" css_path = Path(self.conf.theme) / "css"
dest_path = Path(self.conf.outbox) / "css" dest_path = Path(self.conf.outbox) / "css"

View File

@@ -5,7 +5,7 @@ from pathlib import Path
class Config: class Config:
_conf = dict() _conf = dict()
_list_valid_parameters = {"inbox", "outbox", "theme", "title", "presentation"} _list_valid_parameters = {"inbox", "outbox", "theme", "title", "presentation", "url"}
def __init__(self, config_file: Path): def __init__(self, config_file: Path):
"""Constructeur : charge les paramètres depuis le fichier de configuration""" """Constructeur : charge les paramètres depuis le fichier de configuration"""