input gevraagd voor design van een foto-reorganisatie tool

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • 107mb
  • Registratie: Juni 2004
  • Laatst online: 15:48
ik heb vanaf 2006 een grote collectie foto's opgebouwd (80.000+ foto's). Toen Lightroom nog gewoon een tool was zonder abonnement heb ik daar een mooie library mee opgebouwd. Die library werd keurig gebackupped naar Backblaze dus de foto's tot 2019 zijn veilig.

Sinds een aantal jaar ben ik gestopt met lightroom en door aanschaf van meerdere nieuwe laptops, geen goed fotobeleid heb ik een zooitje van mijn foto's. Om te voorkomen dat ik foto's mis maak ik backups van de laptop op externe schijven, maar ook naar mijn nas e.d. Bij het aanschaffen van een nieuwe laptop werd de inhoud van de oude laptop naar de NAS gekopieerd. Maar die foto's heb ik ook al op een externe schijf staan. En misschien eerder al - voor de zekerheid - ook op de NAS in een andere map gekopieerd. Met andere woorden: ik heb er een enorme teringbende van gemaakt.

Conclusie: Het is tijd voor een grote schoonmaak!

Omdat het zo verschrikkelijk veel foto's zijn, en ik niet wil dat ik per ongeluk foto's wis bij het opschonen zit ik er aan te denken om een tooltje te schrijven die directory's op foto's scant en ze kopieert/verplaatst naar een centrale plek. Omdat ik geen software developer ben vraag ik input van jullie om de opschoonactie tot een goed einde te laten brengen.

Waar staan foto's op:
- externe schijven
- NAS
- iMac
- windows laptop
- windows PC

Waar zijn de foto's mee gemaakt?
- Canon
- Sony
- Fuji
Elk merk heeft eigen naamvoering van afbeeldingen.
De foto's zijn in RAW en JPEG geschoten

wat moet de tool functioneel doen:
- het gaat alleen om foto's die ik gemaakt heb. Ik hoef dus geen plaatjes van Calibre (book-covers), plex cover art, internet cache.
- de foto's moeten gekopieerd/verplaatst worden naar een centrale plek
- op de centrale plek moeten de foto's in directory's opgeslagen worden in de volgende structuur:
/yyyy/MM/dd

Hoe zou het kunnen werken?
De tool (gewoon te starten in CMD of de terminal) start ik op in een directory waar foto's staan. Dit voorkomt dat er allemaal afbeeldingen die geen foto's zijn verwerkt worden. Na het starten worden alle foto's in deze directory en alle onderliggende directory's gekopieerd naar de NAS. De doel-locatie geef ik als parameter op bij de start. Uit de metadata van de foto wordt de datum gehaald en op basis daarvan een directory aangemaakt indien deze nog niet bestaat. Mappenstructuur: DOELMAP/yyyy/MM/dd
Voordat er gekopieerd wordt, wordt eerst in de doelmap gecontroleerd of de foto aanwezig is. De controle vindt plaats op basis van bestandsnaam, bestandsgrootte en metadata (aanmaakdatum en -tijd).
Na het kopieren van een foto, of dat er geconstateerd is dat de foto al in de doelmap aanwezig, wordt de foto verwijderd (spannend).

de Techniek
De programmeertaal vind ik eigenlijk niet zo boeiend. De tool moet op OSX en windows kunnen draaien. Ik heb bash ervaring, een beetje Python en nog minder Go, hoewel ik die laatste wel het interessantst vind. Die keuze maak ik later.

De vragen:
- Zijn er zaken die ik over het hoofd zie?
- is het direct wissen van de foto's wel handig? is het niet beter om alle directory's die ik verwerkt heb te hernoemen en de string 'verwerkt'
- is het handig om logging te maken en die in de doelmap te plaatsen?
- zou ik een parameter meegeven zodat ik een test-run kan uitvoeren?
- wie heeft er op- en aanmerkingen op mijn denkwijze?

Beste antwoord (via 107mb op 05-03-2025 21:12)


  • CubicQ
  • Registratie: September 1999
  • Nu online
Besef dat je niet de eerste bent met dit idee, en dat deze tools al gewoon bestaan. Dus in plaats van zelf iets bouwen, waarom niet 'gewoon' exiftools (voor hernoemen + verplaatsen) + rdfind (voor deduplicatie) gebruiken?

Uit mijn .sh die dagelijks een directory die via syncthing de fotos van mijn telefoon importeert in een directory (die weer via Immich getoond wordt):

```
/usr/bin/exiftool '-filename<CreateDate' -d ~/tijdelijke_directory %Y/%m/%Y-%m-%d-%H-%M-%S%%-c.%%le -r ~/import_directory
/usr/bin/rdfind -deleteduplicates true ~/opslag ~/tijdelijke_directory
```

(Shellscript doet wel iets meer nog, ik sync 3 maanden aan fotos weer terug naar m'n telefoon, zodat ik op m'n telefoon de laatste drie maanden aan fotos lokaal heb - en er zit wat foutafhandeling en checks in zodat het script wat robuuster is.)

Alle reacties


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
107mb schreef op vrijdag 14 februari 2025 @ 11:53:
- Zijn er zaken die ik over het hoofd zie?
Dat weten wij natuurlijk niet ;) JIJ hebt iets voor ogen en het moet doen wat JIJ (wel of niet) wil.
107mb schreef op vrijdag 14 februari 2025 @ 11:53:
- is het direct wissen van de foto's wel handig? is het niet beter om alle directory's die ik verwerkt heb te hernoemen en de string 'verwerkt'
Daar is de prullenbak / trashcan / bin voor uitgevonden ;)
Verder kun je natuurlijk ook gewoon argumenten ondersteunen zoals -d voor delete, -r voor rename of -m voor move (naar een "deleteme" map) ofzo; ik roep maar wat...
107mb schreef op vrijdag 14 februari 2025 @ 11:53:
- is het handig om logging te maken en die in de doelmap te plaatsen?
"Log" naar stdout/stderr en laat gebruikers zelf bepalen of ze dat pipen naar een file of hun printer voor mijn part. Gebruik desnoods een -v argument voor 'verbose'. Doe wat common practice is op je platform van keus.
107mb schreef op vrijdag 14 februari 2025 @ 11:53:
- zou ik een parameter meegeven zodat ik een test-run kan uitvoeren?
Again: JIJ bent de maker, doe wat JIJ wil? Maar een --dry-run argument of iets dergelijks is niet ongebruikelijk.
107mb schreef op vrijdag 14 februari 2025 @ 11:53:
- wie heeft er op- en aanmerkingen op mijn denkwijze?
Ik vind vooral dat je weinig concrete Softwareontwikkeling vragen stelt en meer algemene vragen die alleen jijzelf kan beantwoorden ;)
107mb schreef op vrijdag 14 februari 2025 @ 11:53:
De tool (gewoon te starten in CMD of de terminal) start ik op in een directory waar foto's staan. Dit voorkomt dat er allemaal afbeeldingen die geen foto's zijn verwerkt worden.
IK zou gewoon een source en target directory accepteren als argumenten zodat je gewoon
mytool -x -y --dry-run /foo/bar/baz /output/here
kunt doen en niet per-se naar die directory moet toe cd'en; dat maakt je tool een stuk gebruiksvriendelijker, meer in lijn met standaard commando's en veel scriptbaarder.

Als de tool alleen voor eigen gebruik is kun je 't natuurlijk zo gek (of "a-standaard") maken als je wil natuurlijk, niemand die gaat klagen over gekke dingen behalve jijzelf over X jaar :P

[ Voor 28% gewijzigd door RobIII op 14-02-2025 12:18 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • CubicQ
  • Registratie: September 1999
  • Nu online
Besef dat je niet de eerste bent met dit idee, en dat deze tools al gewoon bestaan. Dus in plaats van zelf iets bouwen, waarom niet 'gewoon' exiftools (voor hernoemen + verplaatsen) + rdfind (voor deduplicatie) gebruiken?

Uit mijn .sh die dagelijks een directory die via syncthing de fotos van mijn telefoon importeert in een directory (die weer via Immich getoond wordt):

```
/usr/bin/exiftool '-filename<CreateDate' -d ~/tijdelijke_directory %Y/%m/%Y-%m-%d-%H-%M-%S%%-c.%%le -r ~/import_directory
/usr/bin/rdfind -deleteduplicates true ~/opslag ~/tijdelijke_directory
```

(Shellscript doet wel iets meer nog, ik sync 3 maanden aan fotos weer terug naar m'n telefoon, zodat ik op m'n telefoon de laatste drie maanden aan fotos lokaal heb - en er zit wat foutafhandeling en checks in zodat het script wat robuuster is.)