summaryrefslogtreecommitdiff
path: root/src/pyssg/rss.py
blob: 7de29ae682bcb666811b838d38f6b106ff56e995 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import os
from jinja2 import Environment, Template
from importlib.metadata import version
from datetime import datetime, timezone

from .page import Page
from .configuration import Configuration


VERSION = version('pyssg')
# specific format for rss
DFORMAT = '%a, %d %b %Y %H:%M:%S GMT'
RUN_DATE = datetime.now(tz=timezone.utc).strftime(DFORMAT)


class RSSBuilder:
    def __init__(self, config: Configuration,
                 env: Environment,
                 pages: list[Page],
                 tags: list[tuple[str]]):
        self.config: Configuration = config
        self.env: Environment = env
        self.pages: list[Page] = pages
        self.tags: list[tuple[str]] = tags


    def build(self):
        template: Template = self.env.get_template("rss.xml")
        content: str = template.render(site_title=self.config.title,
                                       site_base_url=self.config.base_url,
                                       site_base_static_url=self.config.base_static_url,
                                       pyssg_version=VERSION,
                                       run_date=RUN_DATE,
                                       all_pages=self.pages,
                                       all_tags=self.tags)

        with open(os.path.join(self.config.dst, 'rss.xml'), 'w') as f:
            f.write(content)