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)