import os
import re
import sys

sys.stdout.reconfigure(errors='backslashreplace')
# Log zhistorią zmian do odzyskania pełnych nazw i rozszerzeń
log_data = """
przemianowany './cropped-images/LOGO S┼üO┼âCE 1_tif-8-2-384-245-1664731847.webp' -> './cropped-images/LOGO SŁOŃCE 1_tif-8-2-384-245-1664731847.webp'
przemianowany './cropped-images/LOGO S┼üO┼âCE PL-0-0-0-0-1664729576.jpg' -> './cropped-images/LOGO SŁOŃCE PL-0-0-0-0-1664729576.jpg'
przemianowany './Zgoda - zaj─Öcia grupowe w formie zdalnej.docx' -> './Zgoda - zajęcia grupowe w formie zdalnej.docx'
przemianowany './en/Zgoda na zaj─Öcia grupowe w formie zdalnej_EN.odt' -> './en/Zgoda na zajęcia grupowe w formie zdalnej_EN.odt'
przemianowany './en/Wniosek rodzic na Zesp├│┼é Orzekaj─ůcy_EN.odt' -> './en/Wniosek rodzic na Zespół Orzekaj'$'\304'
przemianowany './en/Zgoda na zajÔîÉcia indywidualne w formie zdalnej_EN.odt' -> './en/Zgoda na zaj'
przemianowany './en/Zgoda na zaj─Öcia indywidualne w formie zdalnej_EN.odt' -> './en/Zgoda na zajęcia indywidualne w formie zdalnej_EN.odt'
przemianowany './en/Zgoda na zajÔîÉcia grupowe w formie zdalnej_EN.odt' -> './en/Zgoda na zaj'
przemianowany './en/Wniosek rodzic na Zesp├│├¬ Orzekaj├Ĺcy_EN.odt' -> './en/Wniosek rodzic na Zespóê Orzekaj'$'\303'
przemianowany './en/Zgoda na udzia├¬ w badaniu_EN.odt' -> './en/Zgoda na udziaê w badaniu_EN.odt'
przemianowany './en/Zgoda na samodzielny powr├│t do domu_EN.odt' -> './en/Zgoda na samodzielny powrót do domu_EN.odt'
przemianowany './en/Wniosek rodzica o zindywidualizowan─ů ┼Ťcie┼╝k─Ö kszta┼écenia_EN.odt' -> './en/Wniosek rodzica o zindywidualizowan'$'\304'
przemianowany './en/Zgoda na udzia┼é w zaj─Öciach_EN.odt' -> './en/Zgoda na udział w zajęciach_EN.odt'
przemianowany './en/Zgoda na udzia├¬ w zajÔîÉciach_EN.odt' -> './en/Zgoda na udziaê w zaj'
przemianowany './en/Zgoda na udzia┼é w badaniu_EN.odt' -> './en/Zgoda na udział w badaniu_EN.odt'
przemianowany './en/Wniosek rodzica o zindywidualizowan├Ĺ ├┐cieÔĽŤkÔîÉ kszta├¬cenia_EN.odt' -> './en/Wniosek rodzica o zindywidualizowan'$'\303'
przemianowany './LOGO S┼üO┼âCE PL.jpg' -> './LOGO SŁOŃCE PL.jpg'
przemianowany './do-pobrania/Zgoda na zaj─Öcia indywidualne w formie zdalnej.docx' -> './do-pobrania/Zgoda na zajęcia indywidualne w formie zdalnej.docx'
przemianowany './M├│zg w czasie pandemii cz II.pdf' -> './Mózg w czasie pandemii cz II.pdf'
przemianowany './ua/Wniosek rodzic na Zesp├│┼é Orzekaj─ůcy_UA.odt' -> './ua/Wniosek rodzic na Zespół Orzekaj'$'\304'
przemianowany './ua/Zgoda na udzia┼é w badaniu_UA.odt' -> './ua/Zgoda na udział w badaniu_UA.odt'
przemianowany './ua/Wniosek rodzica o zindywidualizowan├Ĺ ├┐cieÔĽŤkÔîÉ kszta├¬cenia_UA.odt' -> './ua/Wniosek rodzica o zindywidualizowan'$'\303'
przemianowany './ua/Zgoda na zajÔîÉcia grupowe w formie zdalnej_UA.odt' -> './ua/Zgoda na zaj'
przemianowany './ua/Zgoda na zaj─Öcia grupowe w formie zdalnej_UA.odt' -> './ua/Zgoda na zajęcia grupowe w formie zdalnej_UA.odt'
przemianowany './ua/Zgoda na udzia├¬ w badaniu_UA.odt' -> './ua/Zgoda na udziaê w badaniu_UA.odt'
przemianowany './ua/Zgoda na samodzielny powr├│t do domu_UA.odt' -> './ua/Zgoda na samodzielny powrót do domu_UA.odt'
przemianowany './ua/Zgoda na zaj─Öcia indywidualne w formie zdalnej_UK.odt' -> './ua/Zgoda na zajęcia indywidualne w formie zdalnej_UK.odt'
przemianowany './ua/Zgoda na zajÔîÉcia indywidualne w formie zdalnej_UK.odt' -> './ua/Zgoda na zaj'
przemianowany './ua/Wniosek rodzica o zindywidualizowan─ů ┼Ťcie┼╝k─Ö kszta┼écenia_UA.odt' -> './ua/Wniosek rodzica o zindywidualizowan'$'\304'
przemianowany './ua/Zgoda na udzia├¬ w zajÔîÉciach_UK.odt' -> './ua/Zgoda na udziaê w zaj'
przemianowany './ua/Wniosek rodzic na Zesp├│├¬ Orzekaj├Ĺcy_UA.odt' -> './ua/Wniosek rodzic na Zespóê Orzekaj'$'\303'
przemianowany './ua/Zgoda na udzia┼é w zaj─Öciach_UK.odt' -> './ua/Zgoda na udział w zajęciach_UK.odt'
przemianowany './LOGO S┼üO┼âCE 1_tif.webp' -> './LOGO SŁOŃCE 1_tif.webp'
przemianowany './M├│zg w czasie pandemii cz.2 - plakat.pdf' -> './Mózg w czasie pandemii cz.2 - plakat.pdf'
przemianowany './Dzie┼ä Nauczyciela 2020.mp4' -> './Dzień Nauczyciela 2020.mp4'
przemianowany './uploaded-files/pakiet informacyjny_konferencja dzieci i młodzieży-1.pdf' -> './uploaded-files/pakiet informacyjny_konferencja dzieci i m'
przemianowany './uploaded-files/Zasady dotycz─ůce uczestnictwa w zaj─Öciach teraoeutycznych na terenie poradni.pdf' -> './uploaded-files/Zasady dotycz'$'\304'
przemianowany './uploaded-files/formularz zgłoszenia  SPWPPP 2019-1.docx' -> './uploaded-files/formularz zg'
przemianowany './uploaded-files/Kiermasz Wypieków Wielkanocnych.png' -> './uploaded-files/Kiermasz Wypiek'$'\242''w Wielkanocnych.png'
przemianowany './uploaded-files/Materiały dla Rodziców i Nauczycieli.jpg' -> './uploaded-files/Materia'
przemianowany './uploaded-files/Jak rozmawiać z uczniami.pdf' -> './uploaded-files/Jak rozmawia'
przemianowany './uploaded-files/Za┼Ťwiadczenie lekarskie okulista ZO.docx' -> './uploaded-files/Za'$'\305'
przemianowany './uploaded-files/Za┼Ťwiadczenie lekarskie og├│lne ZO.docx' -> './uploaded-files/Za'$'\305'
przemianowany './uploaded-files/BIULETYN nr 1 jesień 2024-25.pdf' -> './uploaded-files/BIULETYN nr 1 jesie'
przemianowany './uploaded-files/Plakat Warsztaty dla rodziców.png' -> './uploaded-files/Plakat Warsztaty dla rodzic'$'\242''w.png'
przemianowany './uploaded-files/Formularz zgłoszenia   do sieci 2021-22 - SPPPDDZNE.doc' -> './uploaded-files/Formularz zg'
przemianowany './uploaded-files/Ulotka specyficzne trudno┼Ťci w uczeniu si─Ö.pdf' -> './uploaded-files/Ulotka specyficzne trudno'$'\305'
przemianowany './uploaded-files/Tabela szkoleń 2018.pdf' -> './uploaded-files/Tabela szkole'
przemianowany './uploaded-files/Zgoda na zajęcia indywidualne w formie zdalnej.docx' -> './uploaded-files/Zgoda na zaj'
przemianowany './uploaded-files/LOGO SŁOŃCE PL.jpg' -> './uploaded-files/LOGO S'
przemianowany './uploaded-files/Karta zgłoszenia- Wspomaganie 2019-2020.doc' -> './uploaded-files/Karta zg'
przemianowany './uploaded-files/program na sierpień AM.pdf' -> './uploaded-files/program na sierpie'
przemianowany './uploaded-files/Za┼Ťwiadczenie lekarskie okulista ZO.pdf' -> './uploaded-files/Za'$'\305'
przemianowany './uploaded-files/zgoda na powrót do domu.doc.pdf' -> './uploaded-files/zgoda na powr'$'\242''t do domu.doc.pdf'
przemianowany './uploaded-files/Jak oswoić koronawirusa.pdf' -> './uploaded-files/Jak oswoi'
przemianowany './uploaded-files/Zabłocie 1 UK.png' -> './uploaded-files/Zab'
przemianowany './uploaded-files/BIULETYN nr 1 jesień 2023-24.pdf' -> './uploaded-files/BIULETYN nr 1 jesie'
przemianowany './uploaded-files/karta-zgloszenia-szkoły-spppddzne-wspomaganie-2024-2025.docx' -> './uploaded-files/karta-zgloszenia-szko'
przemianowany './uploaded-files/upoważnienie do obdioru opinii.pdf' -> './uploaded-files/upowa'
przemianowany './uploaded-files/Warsztaty dla rodzciów - grudzień.png' -> './uploaded-files/Warsztaty dla rodzci'$'\242''w - grudzie'
przemianowany './uploaded-files/Profilaktyka zdrowia psychicznego dzieci i młodzieży.pdf' -> './uploaded-files/Profilaktyka zdrowia psychicznego dzieci i m'
przemianowany './uploaded-files/Za┼Ťwiadczenie lekarskie og├│lne ZO.pdf' -> './uploaded-files/Za'$'\305'
przemianowany './uploaded-files/Różowa Kwiecista Życzenia Dzień Matki Kartka.png' -> './uploaded-files/R'$'\242'
przemianowany './uploaded-files/Zrzeczenie się odwołania od orzeczenia.docx' -> './uploaded-files/Zrzeczenie si'
przemianowany './uploaded-files/Broszurka - j─ůkanie.pdf' -> './uploaded-files/Broszurka - j'$'\304'
przemianowany './uploaded-files/Zgoda na zajęcia grupowe w formie zdalnej.docx' -> './uploaded-files/Zgoda na zaj'
przemianowany './uploaded-files/Karta zgłoszenia 2025.doc' -> './uploaded-files/Karta zg'
przemianowany './uploaded-files/formularz zgłoszenia SPPPDDzNE 2019.doc' -> './uploaded-files/formularz zg'
przemianowany './uploaded-files/formularz zgłoszenia SPPPDDzNE 2020.doc' -> './uploaded-files/formularz zg'
przemianowany './uploaded-files/Za┼Ťwiadczenie lekarskie otolaryngolog ZO.docx' -> './uploaded-files/Za'$'\305'
przemianowany './uploaded-files/Standardy ochrony małoletnich.docx' -> './uploaded-files/Standardy ochrony ma'
przemianowany './uploaded-files/formularz zgłoszenia SPWPPP 2020.docx' -> './uploaded-files/formularz zg'
przemianowany './uploaded-files/IDO Wniosek_o zindywidualizowan─ů ┼Ťcie┼╝k─Ö_ ZO 2017.doc' -> './uploaded-files/IDO Wniosek_o zindywidualizowan'$'\304'
przemianowany './uploaded-files/Turkusowy Uroczy Witaj Szkoło Post Instagram.png' -> './uploaded-files/Turkusowy Uroczy Witaj Szko'
przemianowany './uploaded-files/BIULETYN nr 1 JESIEŃ 2025-26.pdf' -> './uploaded-files/BIULETYN nr 1 JESIE'
przemianowany './uploaded-files/Standardy ochrony małoletnich.pdf' -> './uploaded-files/Standardy ochrony ma'
przemianowany './uploaded-files/Załocie 1 pol.png' -> './uploaded-files/Za'
przemianowany './uploaded-files/Karta zgłoszenia 2026.doc' -> './uploaded-files/Karta zg'
przemianowany './uploaded-files/Koralowe Zdj─Öcie Kobiet R├│wno┼Ť─ç Dzie┼ä Instagram Post.jpg' -> './uploaded-files/Koralowe Zdjęcie Kobiet Równo'$'\305'
przemianowany './uploaded-files/Broszurka dla rodziców .pdf' -> './uploaded-files/Broszurka dla rodzic'$'\242''w .pdf'
przemianowany './uploaded-files/Gry planszowe - propozycje dla rodziców.pdf' -> './uploaded-files/Gry planszowe - propozycje dla rodzic'$'\242''w.pdf'
przemianowany './uploaded-files/Zabłocie 2 pol.png' -> './uploaded-files/Zab'
przemianowany './uploaded-files/BIULETYN nr 1 jesień 2021-22.pdf' -> './uploaded-files/BIULETYN nr 1 jesie'
przemianowany './uploaded-files/Bez tytułu.png' -> './uploaded-files/Bez'$'\377''tytu'
przemianowany './uploaded-files/Mózg w czasie pandemii-1.pdf' -> './uploaded-files/M'$'\242''zg w czasie pandemii-1.pdf'
przemianowany './uploaded-files/LOGO SŁOŃCE UA.jpg' -> './uploaded-files/LOGO S'
przemianowany './uploaded-files/SKIRLIŃSKI BARTOSZ OPINIA KL. VIII.docx' -> './uploaded-files/SKIRLI'
przemianowany './uploaded-files/program o U┼Ťmiech Dziecka S.Bobula.pdf' -> './uploaded-files/program o U'$'\305'
przemianowany './uploaded-files/BIULETYN nr 1 jesień 2022-23.pdf' -> './uploaded-files/BIULETYN nr 1 jesie'
przemianowany './uploaded-files/zaproszenie na konferencję.pdf' -> './uploaded-files/zaproszenie na konferencj'
przemianowany './uploaded-files/Projekt bez tytułu.jpg' -> './uploaded-files/Projekt bez tytu'
przemianowany './uploaded-files/za┼é─ůcznik nr 2.jpg' -> './uploaded-files/zał'$'\304'
przemianowany './uploaded-files/Za┼Ťwiadczenie lekarskie otolaryngolog ZO.pdf' -> './uploaded-files/Za'$'\305'
przemianowany './uploaded-files/pomoc dla dzieci w wieku 2 -6 lat przebywaj─ůcych w stalowej woli.jpg' -> './uploaded-files/pomoc dla dzieci w wieku 2 -6 lat przebywaj'$'\304'
przemianowany './uploaded-files/Zabłocie 2 UK.png' -> './uploaded-files/Zab'
przemianowany './uploaded-files/Karta zgłoszenia SZKOŁY- SPPPDDZNE Wspomaganie 2021-2022.doc' -> './uploaded-files/Karta zg'
przemianowany './uploaded-files/Dodaj nagłówek.jpg' -> './uploaded-files/Dodaj nag'
przemianowany './uploaded-files/Opalanie i Lody Kremowe Plaża Wakacje Fotograficzny Kolaż.png' -> './uploaded-files/Opalanie i Lody Kremowe Pla'
przemianowany './uploaded-files/Na PE tabela szkolenia koordynatorów 2020.pdf' -> './uploaded-files/Na PE tabela szkolenia koordynator'$'\242''w 2020.pdf'
przemianowany './uploaded-files/Karta zgłoszenia SZKOŁY- SPPPDDZNE Wspomaganie 2020-2021.doc' -> './uploaded-files/Karta zg'
przemianowany './uploaded-files/Oferta zajęć terapeutycznych SPPPDDZNE 25-26.pdf' -> './uploaded-files/Oferta zaj'
przemianowany './uploaded-files/Karta zgłoszenia SZKOŁY- SPPPDDZNE Wspomaganie 2022-2023.doc' -> './uploaded-files/Karta zg'
przemianowany './uploaded-files/opinia szkoły o uczniu SPPPdDzNE.docx' -> './uploaded-files/opinia szko'
przemianowany './uploaded-files/zgoda na terapię wersja pozioma.pdf' -> './uploaded-files/zgoda na terapi'
przemianowany './uploaded-files/Zrzeczenie się odwołania od orzeczenia.pdf' -> './uploaded-files/Zrzeczenie si'
przemianowany './ru/Zgoda na udzia├¬ w zajÔîÉciach_RU.odt' -> './ru/Zgoda na udziaê w zaj'
przemianowany './ru/Zgoda na samodzielny powr├│t do domu_RU.odt' -> './ru/Zgoda na samodzielny powrót do domu_RU.odt'
przemianowany './ru/Wniosek rodzic na Zesp├│├¬ Orzekaj├Ĺcy_RU.odt' -> './ru/Wniosek rodzic na Zespóê Orzekaj'$'\303'
przemianowany './ru/Wniosek rodzica o zindywidualizowan├Ĺ ├┐cieÔĽŤkÔîÉ kszta├¬cenia_RU.odt' -> './ru/Wniosek rodzica o zindywidualizowan'$'\303'
przemianowany './ru/Zgoda na udzia┼é w badaniu_RU.odt' -> './ru/Zgoda na udział w badaniu_RU.odt'
przemianowany './ru/Zgoda na udzia┼é w zaj─Öciach_RU.odt' -> './ru/Zgoda na udział w zajęciach_RU.odt'
przemianowany './ru/Zgoda na zaj─Öcia indywidualne w formie zdalnej_RU.odt' -> './ru/Zgoda na zajęcia indywidualne w formie zdalnej_RU.odt'
przemianowany './ru/Zgoda na zaj─Öcia grupowe w formie zdalnej_RU.odt' -> './ru/Zgoda na zajęcia grupowe w formie zdalnej_RU.odt'
przemianowany './ru/Zgoda na udzia├¬ w badaniu_RU.odt' -> './ru/Zgoda na udziaê w badaniu_RU.odt'
przemianowany './ru/Wniosek rodzic na Zesp├│┼é Orzekaj─ůcy_RU.odt' -> './ru/Wniosek rodzic na Zespół Orzekaj'$'\304'
przemianowany './ru/Wniosek rodzica o zindywidualizowan─ů ┼Ťcie┼╝k─Ö kszta┼écenia_RU.odt' -> './ru/Wniosek rodzica o zindywidualizowan'$'\304'
przemianowany './ru/Zgoda na zajÔîÉcia grupowe w formie zdalnej_RU.odt' -> './ru/Zgoda na zaj'
przemianowany './ru/Zgoda na zajÔîÉcia indywidualne w formie zdalnej_RU.odt' -> './ru/Zgoda na zaj'
"""

def decode_mojibake(path):
    try:
        return path.encode('cp437').decode('utf-8')
    except Exception:
        return path

lines = log_data.strip().split('\n')

for line in lines:
    if '->' not in line:
        continue
    
    parts = line.split('->')
    raw_src = parts[0].replace("przemianowany ", "").strip().strip("'")
    raw_dst = parts[1].strip().strip("'")
    
    # 1. Naprawa zdekodowanej nazwy docelowej na podstawie lewej strony loga
    clean_target = decode_mojibake(raw_src)
    
    dir_name = os.path.dirname(clean_target)
    target_filename = os.path.basename(clean_target)
    
    if not os.path.exists(dir_name):
        continue

    # 2. Szukanie pliku na dysku (wersji uszkodzonej lub częściowo obciętej)
    candidates = os.listdir(dir_name)
    found_file = None
    
    # Sprawdzenie dokładnej ścieżki
    if os.path.exists(raw_dst):
        found_file = raw_dst
    elif os.path.exists(raw_src):
        found_file = raw_src
    else:
        # Dopasowanie po prefiksie obciętej nazwy
        dst_base = os.path.basename(raw_dst).split("$")[0].strip("'")
        for c in candidates:
            if c.startswith(dst_base) and c != target_filename:
                found_file = os.path.join(dir_name, c)
                break
                
    if found_file and os.path.exists(found_file):
        final_path = os.path.join(dir_name, target_filename)
        if found_file != final_path:
            os.rename(found_file, final_path)
            print(f"Odzyskano: {found_file} -> {final_path}")
