Skript copy_custom_html.py

Automaticky generovaná dokumentace skriptu scripts/copy_custom_html.py.

Přehled modulu

Zkopíruje vlastní HTML šablony do datového svazku nginx a zachová stávající obsah nadpisů p.

U každého souboru HTML ve zdrojovém adresáři, pokud již cílový soubor existuje, se text nadpisu p uloží a obnoví v nově zkopírované šabloně.

Funkce

copy_with_preserved_p(src, dst)

Zkopíruje HTML šablony ze zdrojového adresáře do cílového, přičemž zachová obsah elementu p.

Pro každý HTML soubor ve zdrojovém adresáři: pokud cílový soubor existuje, uloží se text jeho p a po zkopírování nové šablony se obnoví.

Parametry:
  • src – Zdrojový adresář s novými HTML šablonami.

  • dst – Cílový adresář (persistentní volume).

Zdrojový kód

 1"""
 2Zkopíruje vlastní HTML šablony do datového svazku nginx a zachová stávající obsah nadpisů p.
 3
 4U každého souboru HTML ve zdrojovém adresáři, pokud již cílový soubor existuje,
 5se text nadpisu p uloží a obnoví v nově zkopírované šabloně.
 6"""
 7
 8import os
 9import shutil
10
11from bs4 import BeautifulSoup
12
13SRC = "/custom_html"
14DST = "/vol/web/nginx/data"
15
16
17def copy_with_preserved_p(src: str, dst: str) -> None:
18    """
19    Zkopíruje HTML šablony ze zdrojového adresáře do cílového, přičemž zachová obsah elementu p.
20
21    Pro každý HTML soubor ve zdrojovém adresáři: pokud cílový soubor existuje,
22    uloží se text jeho p a po zkopírování nové šablony se obnoví.
23
24    :param src: Zdrojový adresář s novými HTML šablonami.
25    :param dst: Cílový adresář (persistentní volume).
26    """
27    for root, dirs, files in os.walk(src):
28        for filename in files:
29            if not filename.endswith(".html"):
30                continue
31            src_file = os.path.join(root, filename)
32            rel_path = os.path.relpath(src_file, src)
33            dst_file = os.path.join(dst, rel_path)
34
35            # Save existing p content if destination exists
36            p_text = None
37            if os.path.exists(dst_file):
38                with open(dst_file, encoding="utf-8") as fp:
39                    soup = BeautifulSoup(fp, "html.parser")
40                    p = soup.find("p")
41                    if p and p.string:
42                        p_text = str(p.string)
43
44            # Copy new template (overwrite)
45            os.makedirs(os.path.dirname(dst_file), exist_ok=True)
46            shutil.copy2(src_file, dst_file)
47
48            # Restore p content if it was saved
49            if p_text is not None:
50                with open(dst_file, encoding="utf-8") as fp:
51                    soup = BeautifulSoup(fp, "html.parser")
52                p = soup.find("p")
53                if p:
54                    p.string = p_text
55                with open(dst_file, "w", encoding="utf-8") as fp:
56                    fp.write(str(soup))
57
58
59if __name__ == "__main__":
60    copy_with_preserved_p(SRC, DST)