import os import shutil import re def prestrukturiraj_spletno_stran(): """ Skripta prestrukturira spletno stran tako, da vsako .html datoteko (razen index.html v korenu) premakne v svojo mapo in jo preimenuje v index.html. Na koncu posodobi vse povezave v vseh HTML datotekah. """ korenski_direktorij = '.' datoteke_za_obdelavo = [] mapa_povezav = {} # --- FAZA 1: Najdi vse .html datoteke, ki jih je treba premakniti --- print("--- Faza 1: Iskanje HTML datotek za prestrukturiranje ---") for pot, mape, datoteke in os.walk(korenski_direktorij): # Izognemo se sistemskim in skritim mapam if any(part in pot for part in ['.git', '.vscode', '__pycache__']): continue for datoteka in datoteke: # Obdelamo samo .html datoteke, ki niso že index.html if datoteka.endswith('.html') and datoteka != 'index.html': ime_brez_koncnice = datoteka[:-5] stara_pot = os.path.join(pot, datoteka) # Posebna obravnava za "omeni.html", kot je bilo zahtevano if ime_brez_koncnice == "omeni": ime_nove_mape = "o-meni" else: ime_nove_mape = ime_brez_koncnice nova_mapa_pot = os.path.join(pot, ime_nove_mape) nova_datoteka_pot = os.path.join(nova_mapa_pot, 'index.html') datoteke_za_obdelavo.append({ 'stara_pot': stara_pot, 'nova_mapa_pot': nova_mapa_pot, 'nova_datoteka_pot': nova_datoteka_pot }) # Shranimo preslikavo za kasnejšo zamenjavo povezav mapa_povezav[datoteka] = ime_nove_mape + '/' if not datoteke_za_obdelavo: print("Ni datotek za prestrukturiranje. Postopek končan.") return # --- FAZA 2: Ustvari mape, premakni in preimenuj datoteke --- print("\n--- Faza 2: Ustvarjanje map in prestavljanje datotek ---") for info in datoteke_za_obdelavo: stara_pot = info['stara_pot'] nova_mapa_pot = info['nova_mapa_pot'] nova_datoteka_pot = info['nova_datoteka_pot'] try: os.makedirs(nova_mapa_pot, exist_ok=True) print(f" -> Ustvarjena mapa: {nova_mapa_pot}") shutil.move(stara_pot, nova_datoteka_pot) print(f" -> Datoteka '{stara_pot}' uspešno prestavljena v '{nova_datoteka_pot}'") except Exception as e: print(f"NAPAKA pri prestavljanju '{stara_pot}': {e}") # --- FAZA 3: Posodobi vse povezave v vseh HTML datotekah --- print("\n--- Faza 3: Posodabljanje povezav v vseh HTML datotekah ---") vse_html_datoteke = [] for pot, _, datoteke in os.walk(korenski_direktorij): if any(part in pot for part in ['.git', '.vscode', '__pycache__']): continue for datoteka in datoteke: if datoteka.endswith('.html'): vse_html_datoteke.append(os.path.join(pot, datoteka)) for html_datoteka in vse_html_datoteke: try: with open(html_datoteka, 'r', encoding='utf-8') as f: vsebina = f.read() originalna_vsebina = vsebina # Zamenjaj povezave na podlagi ustvarjene mape for stara_datoteka, nova_pot in mapa_povezav.items(): # Regularni izraz, ki najde href="...stara_datoteka.html" in ga zamenja vzorec = re.compile(f'href=(["\'])([^"\'#?]*?){re.escape(stara_datoteka)}(["\'])') vsebina = vzorec.sub(f'href=\\1\\2{nova_pot}\\3', vsebina) # Posebna obravnava za glavno datoteko index.html, da postane relativna pot "/" vzorec_index = re.compile(f'href=(["\'])index.html(["\'])') vsebina = vzorec_index.sub('href=\\1/\\2', vsebina) if vsebina != originalna_vsebina: with open(html_datoteka, 'w', encoding='utf-8') as f: f.write(vsebina) print(f" -> Posodobljene povezave v datoteki: {html_datoteka}") except Exception as e: print(f"NAPAKA pri posodabljanju povezav v '{html_datoteka}': {e}") # Zaženi glavno funkcijo if __name__ == "__main__": prestrukturiraj_spletno_stran() print("\nPrestrukturiranje spletne strani je končano.")