#!/usr/bin/env python3 """ MASS RENAME: Vse slike v projektu dobijo logična slovenska imena POMEMBNO: NE spreminja ozadij ali barv - samo imena! """ import os from pathlib import Path # Koren projekta PROJECT_ROOT = Path("/Users/davidkotnik/repos/novafarma") # Kompletna mapa preimenovanj (stara pot → novo ime) # Pot je relativna od PROJECT_ROOT RENAME_MAP = { # _TRASH_SAMPLES "_TRASH_SAMPLES/sample_1.png": "graf_ai_voice_ocena.png", "_TRASH_SAMPLES/sample_2.jpg": "gepard_odrasel_portret.jpg", "_TRASH_SAMPLES/sample_3.jpg": "gepard_mladic_portret.jpg", "_TRASH_SAMPLES/sample_4.png": "ikona_shrani_disketa.png", "_TRASH_SAMPLES/sample_5.png": "ikona_shrani_disketa_blur.png", # NOVE_SLIKE/UI "NOVE_SLIKE/UI/amnezija_maska.png": "ui_amnezija_vinjeta_cyberpunk.png", "NOVE_SLIKE/UI/amnezia.png": "ui_amnezija_vinjeta_radial.png", "NOVE_SLIKE/UI/merilec_zdravja.png": "ui_merilec_zdravja_zarjavel.png", "NOVE_SLIKE/UI/okvir_zarjavel.png": "ui_okvir_zarjavel_bodeca_zica.png", "NOVE_SLIKE/UI/zlati_okvir.png": "ui_okvir_zlati_okrasni.png", "NOVE_SLIKE/UI/srce_health.png": "ui_srce_pixel_art_rdece.png", "NOVE_SLIKE/UI/gumb_glavni.png": "ui_gumb_play_lesen_zlat.png", "NOVE_SLIKE/UI/gumb_recikliran.png": "ui_gumb_start_zarjavel_rjav.png", # INTRO_STORY_IMAGES/01_Sreca "INTRO_STORY_IMAGES/01_Sreca:/download.jpg": "druzina_chibi_sprane_barve.jpg", "INTRO_STORY_IMAGES/01_Sreca:/ana_barbershop_dreads_dreamy.png": "ana_frizerstvo_ogledalo_sanjavo.png", "INTRO_STORY_IMAGES/01_Sreca:/assets_BACKUP_20260112_064319_references_intro_shots_birthday_cake_rd.png": "rojstnodnevna_torta_vrt_sonce.png", "INTRO_STORY_IMAGES/01_Sreca:/assets_BACKUP_20260112_064319_references_intro_shots_ana_barbershop_dreads.png": "ana_frizerstvo_ogledalo.png", "INTRO_STORY_IMAGES/01_Sreca:/assets_images_intro_sequence_kai_first_dreads_family_dreamy.png": "druzina_chibi_prva_dreadi_sanjavo.png", "INTRO_STORY_IMAGES/01_Sreca:/assets_BACKUP_20260112_064319_references_intro_shots_kai_first_dreads_family.png": "druzina_chibi_prva_dreadi.png", "INTRO_STORY_IMAGES/01_Sreca:/assets_BACKUP_20260112_064319_references_intro_shots_otac_longboard_pier.png": "oce_kai_longboard_pomol.png", "INTRO_STORY_IMAGES/01_Sreca:/assets_images_intro_sequence_otac_longboard_pier_dreamy.png": "oce_kai_longboard_pomol_sanjavo.png", "INTRO_STORY_IMAGES/01_Sreca:/assets_BACKUP_20260112_064319_references_intro_shots_kai_ana_twins_childhood.png": "kai_ana_dvojcka_otrostvo.png", "INTRO_STORY_IMAGES/01_Sreca:/assets_images_intro_sequence_birthday_cake_rd_dreamy.png": "rojstnodnevna_torta_sanjavo.png", "INTRO_STORY_IMAGES/01_Sreca:/assets_BACKUP_20260112_064319_references_intro_shots_family_portrait_punk_complete.png": "druzina_portret_punk_celoten.png", # INTRO_STORY_IMAGES/02_Kaos "INTRO_STORY_IMAGES/02_Kaos:/05_Chernobyl_assets_BACKUP_20260112_064319_references_intro_shots_virus_city_aerial.png": "virus_mesto_iz_zraka.png", "INTRO_STORY_IMAGES/02_Kaos:/05_Chernobyl_assets_BACKUP_20260112_064319_references_intro_shots_chaos_streets_apocalypse.png": "kaos_ulice_apokalipsa.png", "INTRO_STORY_IMAGES/02_Kaos:/assets_images_intro_sequence_zombie_silhouettes_panic_dreamy.png": "zombie_siluete_panika_sanjavo.png", "INTRO_STORY_IMAGES/02_Kaos:/assets_BACKUP_20260112_064319_references_intro_shots_zombie_silhouettes_panic.png": "zombie_siluete_panika.png", "INTRO_STORY_IMAGES/02_Kaos:/assets_BACKUP_20260112_064319_references_intro_shots_virus_xnoir_microscope.png": "virus_xnoir_mikroskop_zeleni.png", # INTRO_STORY_IMAGES/03_Locitev "INTRO_STORY_IMAGES/03_Locitev:/assets_BACKUP_20260112_064319_references_intro_shots_parents_transparent_ghosts.png": "starsa_duha_chibi_apokalipsa.png", "INTRO_STORY_IMAGES/03_Locitev:/assets_BACKUP_20260112_064319_references_intro_shots_gronk_doorway_silhouette.png": "gronk_silueta_vrata_magenta.png", "INTRO_STORY_IMAGES/03_Locitev:/MOJE_SLIKE_KONCNA_ostalo_parents_transparent_ghosts_dreamy.png": "starsa_duha_sanjavo.png", "INTRO_STORY_IMAGES/03_Locitev:/assets_BACKUP_20260112_064319_references_intro_shots_ana_taken_military.png": "ana_ugrabljena_vojska.png", # INTRO_STORY_IMAGES/04_Amnesia "INTRO_STORY_IMAGES/04_Amnesia:/assets_BACKUP_20260112_064319_references_intro_shots_kai_alone_basement.png": "kai_sam_klet_prezivetje.png", "INTRO_STORY_IMAGES/04_Amnesia:/assets_BACKUP_20260112_064319_references_intro_shots_kai_bedroom_wakeup.png": "kai_spalnica_zbujanje.png", "INTRO_STORY_IMAGES/04_Amnesia:/10_Volcanic_Zone_assets_BACKUP_20260112_064319_references_intro_shots_ana_memory_flash_purple.png": "ana_spomin_blisk_vijoličast.png", # assets/characters "assets/characters/gronk_pro_sheet.png": "gronk_cevlji_rozni_sprite_sheet.png", "assets/characters/gronk_full_sheet.png": "gronk_full_sprite_sheet.png", "assets/characters/gronk_sheet.png": "gronk_sprite_sheet.png", "assets/characters/zombie_statistician/portrait.png": "zombie_statistik_portret.png", "assets/characters/zombie_statistician/idle_north.png": "zombie_statistik_idle_sever.png", "assets/characters/zombie_statistician/idle_south.png": "zombie_statistik_idle_jug.png", "assets/characters/zombie_statistician/idle_east.png": "zombie_statistik_idle_vzhod.png", "assets/characters/zombie_statistician/idle_west.png": "zombie_statistik_idle_zahod.png", "assets/characters/zombie_statistician/walk_north.png": "zombie_statistik_hodi_sever.png", "assets/characters/zombie_statistician/walk_south.png": "zombie_statistik_hodi_jug.png", "assets/characters/zombie_statistician/walk_east.png": "zombie_statistik_hodi_vzhod.png", "assets/characters/zombie_statistician/walk_west.png": "zombie_statistik_hodi_zahod.png", "assets/characters/zombie_statistician/action_calculate.png": "zombie_statistik_akcija_racuna.png", "assets/characters/zombie_statistician/action_update.png": "zombie_statistik_akcija_posodobi.png", "assets/characters/electrician/portrait.png": "elektricar_portret.png", "assets/characters/electrician/idle_north.png": "elektricar_idle_sever.png", "assets/characters/electrician/idle_south.png": "elektricar_idle_jug.png", "assets/characters/electrician/idle_east.png": "elektricar_idle_vzhod.png", "assets/characters/electrician/idle_west.png": "elektricar_idle_zahod.png", "assets/characters/electrician/walk_north.png": "elektricar_hodi_sever.png", "assets/characters/electrician/walk_south.png": "elektricar_hodi_jug.png", "assets/characters/electrician/walk_east.png": "elektricar_hodi_vzhod.png", "assets/characters/electrician/walk_west.png": "elektricar_hodi_zahod.png", "assets/characters/electrician/action_repair.png": "elektricar_akcija_popravlja.png", # assets/slike/dekoracije "assets/slike/dekoracije/tall_grass.png": "trava_visoka_sop.png", # assets/slike/intro "assets/slike/intro/kai_dreads.png": "kai_dreadi_druzina_chibi.png", "assets/slike/intro/virus_micro.png": "virus_xnoir_mikroskop.png", "assets/slike/intro/gronk_sil.png": "gronk_silueta_vrata_rec.png", "assets/slike/intro/parents_ghosts.png": "starsa_duha_chibi.png", "assets/slike/intro/story_separation.png": "zgodba_locitev.png", "assets/slike/intro/story_2_twins.png": "zgodba_dvojcka.png", "assets/slike/intro/story_6_alone.png": "zgodba_sam.png", "assets/slike/intro/story_wakeup.png": "zgodba_zbujanje.png", "assets/slike/intro/city_chaos.png": "mesto_kaos.png", "assets/slike/intro/story_1_family.png": "zgodba_druzina.png", "assets/slike/intro/story_4_dreads.png": "zgodba_dreadi.png", "assets/slike/intro/story_3_longboard.png": "zgodba_longboard.png", "assets/slike/intro/story_5_panic.png": "zgodba_panika.png", # assets/slike/nova mapa faza 0-1/Characters "assets/slike/nova mapa faza 0-1/Characters/kaj/Izdelek brez naslova (2).png": "kai_portret_zeleni_dreadi.png", "assets/slike/nova mapa faza 0-1/Characters/ana/ana_blisk_magenta.png": "ana_blisk_magenta.png", "assets/slike/nova mapa faza 0-1/Characters/ana/ana_idle_frame3.png": "ana_idle_animacija_3.png", "assets/slike/nova mapa faza 0-1/Characters/gronk/gronk_vape_stoječ.png": "gronk_vape_stoji.png", "assets/slike/nova mapa faza 0-1/Characters/starsa/Ghost/duh_oče_cian.png": "duh_oce_cian.png", "assets/slike/nova mapa faza 0-1/Characters/starsa/Ghost/duha_starsi_skupaj.png": "duha_starsi_skupaj.png", # assets/slike/nova mapa faza 0-1/Environment/narava "assets/slike/nova mapa faza 0-1/Environment/narava/blato_luzice.png": "blato_luzice.png", "assets/slike/nova mapa faza 0-1/Environment/narava/grm_bodice.png": "grm_z_bodicami.png", "assets/slike/nova mapa faza 0-1/Environment/narava/kamnita_piramida.png": "kamnita_piramida_siva.png", "assets/slike/nova mapa faza 0-1/Environment/narava/korenine_zeleno_ozadje.png": "korenine_dreves_temne.png", "assets/slike/nova mapa faza 0-1/Environment/narava/mrtvo_drevo_nazobcano.png": "mrtvo_drevo_nazobcano_temno.png", "assets/slike/nova mapa faza 0-1/Environment/narava/mrtvo_drevo_veje.png": "mrtvo_drevo_razvejano.png", "assets/slike/nova mapa faza 0-1/Environment/narava/mrtvo_drevo_zvito.png": "mrtvo_drevo_zvito.png", "assets/slike/nova mapa faza 0-1/Environment/narava/skala_trikotna.png": "skala_trikotna.png", "assets/slike/nova mapa faza 0-1/Environment/narava/skale_formacija.png": "skal_formacija.png", "assets/slike/nova mapa faza 0-1/Environment/narava/trava_sopi_6x.png": "trava_visoka_sopi_6x.png", # assets/slike/nova mapa faza 0-1/Environment/props "assets/slike/nova mapa faza 0-1/Environment/props/MOJE_SLIKE_KONCNA_ostalo_campfire_frame1.png": "taborisc_ogenj_animacija_1.png", "assets/slike/nova mapa faza 0-1/Environment/props/MOJE_SLIKE_KONCNA_ostalo_campfire_frame2.png": "taborisc_ogenj_animacija_2.png", "assets/slike/nova mapa faza 0-1/Environment/props/MOJE_SLIKE_KONCNA_predmeti_oprema_orodja_tool_bucket_old.png": "vedro_staro_zarjavelo.png", "assets/slike/nova mapa faza 0-1/Environment/props/debelopoles_razrez.png": "les_debelopoles_razrez.png", } def main(): """Izvede mass rename""" renamed = [] errors = [] skipped = [] print("=" * 80) print(" MASS RENAME: VSE SLIKE V PROJEKTU") print("=" * 80) print(f"Skupaj preimenovanj: {len(RENAME_MAP)}") print() for old_rel_path, new_name in RENAME_MAP.items(): old_path = PROJECT_ROOT / old_rel_path # Preveri če datoteka obstaja if not old_path.exists(): errors.append(f"❌ NE NAJDEM: {old_rel_path}") continue # Nova pot v isti mapi new_path = old_path.parent / new_name # Preveri če nova datoteka že obstaja if new_path.exists() and new_path != old_path: skipped.append(f"⚠️ ŽE OBSTAJA: {new_name} (preskočeno)") continue # Preimenuj try: old_path.rename(new_path) renamed.append((old_path.name, new_name)) print(f"✅ {old_path.name}") print(f" → {new_name}") print() except Exception as e: errors.append(f"❌ NAPAKA: {old_rel_path} → {e}") # Poročilo print("=" * 80) print(" KONČNO POROČILO") print("=" * 80) print(f"✅ PREIMENOVANIH: {len(renamed)}") print(f"⚠️ PRESKOČENIH: {len(skipped)}") print(f"❌ NAPAK: {len(errors)}") print("=" * 80) if errors: print("\n❌ NAPAKE:") for error in errors: print(f" {error}") if skipped: print("\n⚠️ PRESKOČENO:") for skip in skipped: print(f" {skip}") print(f"\n✅ USPEŠNO PREIMENOVANIH: {len(renamed)} / {len(RENAME_MAP)}") # Shrani log log_file = PROJECT_ROOT / "rename_log.txt" with open(log_file, 'w', encoding='utf-8') as f: f.write("MASS RENAME LOG\n") f.write("=" * 80 + "\n\n") for old_name, new_name in renamed: f.write(f"{old_name} → {new_name}\n") print(f"\n📄 Log shranjen: rename_log.txt") if __name__ == "__main__": main()