Skip to content

Firefox-1998/PhotoVideoOrganizer

Repository files navigation

📸 Photo/Video Organizer

🇺🇸 English

I created this free software to solve my own need: organizing photos and videos scattered across cloud, folders, external drives, USB sticks, etc.
Since it might be useful to others, I decided to make it available for everyone!
This is not a commercial product: it is released under the MIT license, with no warranty.
The program organizes your media files by year and month, automatically discarding duplicates.

Features

  • Organizes by year/month 📅
  • Discards duplicates 🗑️
  • Supports images & videos 🎞️
  • Extracts date from Exif or filename 🕒
  • Multi-language UI (🇺🇸 English, 🇮🇹 Italian, 🇫🇷 French, 🇩🇪 German) 🌍
  • Asynchronous processing with cancellation support ⚡
  • Configurable multi-threading for faster processing 🚀
  • Real-time progress reporting 📊

🔍 How duplicates and dates are detected

  • Duplicates are found using:
    • File hash (SHA-256) 🧮
    • Exif UniqueImageID (when available) 🆔
    • File name and size pre-check for performance optimization
  • Shooting date is detected from:
    • Exif data: DateTimeOriginal, DateTimeDigitized, DateTime 🗓️
    • Filename (if it contains a date/time) 🏷️
    • Filesystem date as fallback 📁

⚙️ Technical Features

  • Modern Architecture: Clean separation between UI and services (SOLID principles)
  • Async/Await Pattern: Non-blocking file processing using Parallel.ForEachAsync
  • Thread-Safe Logging: Background queue-based logging system
  • Cancellation Support: Graceful operation cancellation via CancellationToken
  • Progress Reporting: Real-time UI updates via IProgressReporter interface
  • Resource Management: Proper IDisposable implementation to prevent memory leaks

Example output:

    Example:
        search in folder 1 and folder 2
		results
		folder 3
			1970  
				01
					picture1.jpg
					picture2.jpg
			2023
				01
					picture77.jpg
				02
					picture10.jpg
					picture11.jpg
				08
					picture23.jpg
					picture24.jpg
			2024
				04
					...
				05
				06
				07
				12
			2025
				01
				02
				03
				04
				05			

(1970/01 is used when no valid date is found)


📚 Libraries & Licenses

Photo/Video Organizer is released under the MIT License.
See the LICENSE file for details.

This program uses third-party libraries, each with its own license:

Library Version License Link
MetadataExtractor 2.8.1 Apache 2.0 https://github.com/drewnoakes/metadata-extractor

Please refer to each library's repository for the full license text.


🛠️ Requirements

  • .NET 9.0 or later
  • Windows Forms compatible OS

2026 © G.L. Develop aka Firefox_1998


🇮🇹 Italiano

Ho creato questo software gratuito per risolvere una mia esigenza: organizzare foto e video sparsi tra cloud, cartelle, dischi esterni, chiavette USB, ecc.
Visto che può essere utile anche ad altri, ho deciso di renderlo disponibile a tutti!
Non è un prodotto commerciale: è distribuito con licenza MIT, senza alcuna garanzia.
Il programma organizza i file multimediali per anno e mese, scartando automaticamente i duplicati.

Funzionalità

  • Organizza per anno/mese 📅
  • Scarta i duplicati 🗑️
  • Supporta immagini e video 🎞️
  • Estrae la data da Exif o dal nome file 🕒
  • Interfaccia multilingua (🇺🇸 Inglese, 🇮🇹 Italiano, 🇫🇷 Francese, 🇩🇪 Tedesco) 🌍
  • Elaborazione asincrona con supporto annullamento ⚡
  • Multi-threading configurabile per elaborazione più veloce 🚀
  • Report progresso in tempo reale 📊

🔍 Come vengono rilevati duplicati e date

  • I duplicati vengono trovati tramite:
    • Hash del file (SHA-256) 🧮
    • UniqueImageID Exif (se disponibile) 🆔
    • Pre-controllo nome file e dimensione per ottimizzare le prestazioni
  • La data di scatto viene rilevata da:
    • Dati Exif: DateTimeOriginal, DateTimeDigitized, DateTime 🗓️
    • Nome file (se contiene data/ora) 🏷️
    • Data del filesystem come fallback 📁

⚙️ Caratteristiche Tecniche

  • Architettura Moderna: Separazione pulita tra UI e servizi (principi SOLID)
  • Pattern Async/Await: Elaborazione file non bloccante con Parallel.ForEachAsync
  • Logging Thread-Safe: Sistema di logging basato su code in background
  • Supporto Annullamento: Cancellazione operazioni tramite CancellationToken
  • Report Progresso: Aggiornamenti UI in tempo reale via interfaccia IProgressReporter
  • Gestione Risorse: Implementazione corretta di IDisposable per prevenire memory leak

Esempio di risultato:

	Example:
		search in folder 1 and folder 2
		results
		folder 3
			1970  
				01
					picture1.jpg
					picture2.jpg
			2023
				01
					picture77.jpg
				02
					picture10.jpg
					picture11.jpg
				08
					picture23.jpg
					picture24.jpg
			2024
				04
					...
				05
				06
				07
				12
			2025
				01
				02
				03
				04
				05

(1970/01 viene usata quando non si trova una data valida)


📚 Librerie & Licenze

Photo/Video Organizer è distribuito con licenza MIT.
Consulta il file LICENSE per i dettagli.

Questo programma utilizza librerie di terze parti, ciascuna con la propria licenza:

Libreria Versione Licenza Link
MetadataExtractor 2.8.1 Apache 2.0 https://github.com/drewnoakes/metadata-extractor

Consulta il repository di ogni libreria per il testo completo della licenza.


🛠️ Requisiti

  • .NET 9.0 o successivo
  • Sistema operativo compatibile con Windows Forms

2026 © G.L. Develop aka Firefox_1998

Made with ❤️ by Firefox_1998

About

How many of you have thousands of photos scattered everywhere (cloud, folders, external hard drives, USB sticks, etc. etc.)?

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages