import os # --- INNSTILLINGER --- # Filtyper vi vil ta med (legg til flere hvis du trenger) FILTYPER = ['.kt', '.java', '.xml', '.gradle', '.kts', '.pro'] # Mapper vi skal ignorere (viktig for å unngå tusenvis av autogenererte filer) IGNORER_MAPPER = { 'build', '.gradle', '.idea', '.git', 'captures', 'cxx', 'generated', 'intermediates', 'outputs', 'tmp' } OUTPUT_FILNAVN = 'hele_prosjektet.txt' def samle_filer(): # Finner mappen scriptet kjøres fra start_mappe = os.getcwd() print(f"Starter skanning i: {start_mappe}") print(f"Lagrer til: {OUTPUT_FILNAVN} ...") teller = 0 with open(OUTPUT_FILNAVN, 'w', encoding='utf-8') as ut_fil: # Skriv en liten header til Gemini ut_fil.write("Dette er kildekoden til et Android Studio-prosjekt.\n") ut_fil.write("Hver fil er separert med overskrifter.\n\n") # Gå gjennom alle mapper og filer for root, dirs, files in os.walk(start_mappe): # Fjern mapper vi vil ignorere slik at skriptet ikke går inn i dem dirs[:] = [d for d in dirs if d not in IGNORER_MAPPER] for fil in files: if any(fil.endswith(ext) for ext in FILTYPER): # Hopp over selve output-filen og script-filen if fil == OUTPUT_FILNAVN or fil == os.path.basename(__file__): continue full_sti = os.path.join(root, fil) relativ_sti = os.path.relpath(full_sti, start_mappe) try: with open(full_sti, 'r', encoding='utf-8') as inn_fil: innhold = inn_fil.read() # Lag en tydelig separator som Gemini forstår ut_fil.write(f"\n{'='*60}\n") ut_fil.write(f"FILSTI: {relativ_sti}\n") ut_fil.write(f"{'='*60}\n") ut_fil.write(innhold + "\n") print(f"La til: {relativ_sti}") teller += 1 except Exception as e: print(f"Kunne ikke lese {relativ_sti}: {e}") print(f"\nFerdig! Samlet {teller} filer i '{OUTPUT_FILNAVN}'.") if __name__ == "__main__": samle_filer() input("\nTrykk Enter for å avslutte...")