JPG-Fotodateinamen nach einem iPhone in "Fotos-App" importieren

Seit Jahren zentralisieren wir alle unsere Familienfotos auf einer (lokalen) Festplatte, die von Windows, Linux und Mac OS X gelesen werden kann. Die Dateinamen sind normalerweise so etwas wie oder , D:\Photos\2020-05\IMG_76843.jpgwenn D:\Photos\2020-05\20200502_1256_2.jpgsie von verschiedenen Digitalkameras oder Android-Smartphones stammen.

Jetzt habe ich ein iPhone und ich habe fast 10 GB Fotos mit der Macbook- App „Fotos“ importiert . Ich möchte sie nicht in dieser App behalten, mein Endziel ist es, die JPG-Dateien selbst zu verwalten und sie auf die externe Festplatte (oben erwähnt) zu verschieben. Also nahm ich alle Dateien von ~/Pictures/Photos Library.photoslibrary/Masters/und verschob sie auf die externe Platte. (oder ~/Pictures/Photos Library.photoslibrary/originals/mit Catalina). Das hat funktioniert. Danach habe ich gelöscht Photos Library.photoslibrary(nicht mehr benötigt, ich werde beim nächsten Importieren eine neue Fotobibliothek neu erstellen; auch hier möchte ich die Fotos-App nur zum Importieren vom iPhone verwenden).

Frage: Ich habe jetzt Dateien wie:

DE017ACB-5ABD-4113-B110-95DABF7F28F7.jpeg
DE017ACB-5ABD-4113-B110-95DABF7F28F7_1_105_c.jpeg
DE017ACB-5ABD-4113-B110-95DABF7F28F7_4_5005_c.jpeg

und es gibt zwei probleme:

  • Sie sind Duplikate unterschiedlicher Größe (das ist wahrscheinlich einfach, ich kann ein Skript ausführen, um die kleineren Dateien zu entfernen *_1_105_c.jpgund nur die ursprüngliche große Datei zu behalten)

  • Die Dateien sind in einer völlig zufälligen Reihenfolge!

Bevor ich mein eigenes Python-Skript ausführe (Exif untersuche und "neue Dateinamen" entsprechend der Datumszeit des Fotos neu erstelle), gibt es Tricks/Wissenswertes/Techniken, um bessere Fotodateinamen aus diesen zufällig aussehenden Dateinamen wiederherzustellen DE017ACB-5ABD-4113-B110-95DABF7F28F7.jpeg:

Ist es allgemeiner möglich, beim Importieren von Fotos von einem iPhone weniger Probleme mit JPG-Dateinamen zu haben?

Randnotizen:

  • Ich mache automatisierte Backups, sowohl lokal als auch entfernt

  • Wir möchten keine Cloud-Lösung zur Verwaltung von Fotos verwenden, und auch keine Katalogisierungssoftware (wie Lightroom oder ähnliches).

  • Grund für dieses "Ich möchte selbst mit Fotodateien umgehen" : Mit dieser Methode "einfache JPG-Dateien in Ordnern" können Fotos auf jedem Gerät (Win, Linux, Mac usw.) gelesen werden, ohne dass eine bestimmte Software erforderlich wäre nicht gewartet/nicht verfügbar im Jahr 2079, wenn meine Kinder sie öffnen wollen ;)
    "Nur JPG-Dateien in einem Ordner" ist wahrscheinlich die Methode, die die Chance maximiert, in 50 oder 100 Jahren geöffnet zu werden.

  • Gibt es für meinen nächsten Import vom iPhone eine andere Software als die App "Fotos", die beim Import direkt bessere Dateinamen festlegt? Dies scheint zu zeigen, dass "Image Capture" in meinem Fall besser funktionieren würde: Wie importiere ich Fotos in OS X, ohne Photos.app zu verwenden?

Antworten (1)

Für zukünftige iPhone -> Computerimporte

Die Verwendung der App „Image Capture“ anstelle der App „Photos“ löst tatsächlich die meisten Probleme (wie hier erklärt: Wie importiere ich Fotos in OS X, ohne Photos.app zu verwenden? ). Anmerkungen:

  • Stellen Sie "Originale behalten" auf deaktiviert, damit HEIC-Dateien beim Import automatisch in JPG konvertiert werden (ich bin mir nicht sicher, ob die Computer meiner Kinder HEIC-Dateien in 70 Jahren problemlos verstehen können, aber sicherlich wird JPG unterstützt!)

  • "Nach dem Import löschen" ist wichtig.

  • Am Ende des Imports hatte ich bei einigen MOV-Dateien "Error 9937". Wiederholen Sie dann den Export für diese Dateien mit aktivierter Option "Originale behalten".

Für einen bereits erfolgten Export mit zufälligen Dateinamen

1) Führen Sie zuerst ein Skript aus, das Variationen desselben Fotos gruppiert, wie zum Beispiel:

DE017ACB-5ABD-4113-B110-95DABF7F28F7.jpeg
DE017ACB-5ABD-4113-B110-95DABF7F28F7_1_105_c.jpeg
DE017ACB-5ABD-4113-B110-95DABF7F28F7_4_5005_c.jpeg

Das geht ganz einfach mit Python mit:

import glob, os
H = dict()
for f in glob.glob('*.jpeg'):
    h = f[:36]  
    H.setdefault(h, []).append(f)

Dann können Sie für jede GruppeDE017ACB-5ABD-4113-B110-95DABF7F28F7.jpeg die Datei mit dem kürzesten Dateinamen behalten (zB ) und die anderen löschen (mit os.remove(...)).

2) Führen Sie ein Python-Skript aus, das einen zufälligen Dateinamen DE017ACB-5ABD-4113-B110-95DABF7F28F7.jpegbasierend 20200502_120003.jpgauf der in den EXIF-Metadaten gespeicherten Datumszeit umwandelt

import glob, os, PIL.Image, datetime

for f in glob.glob('*.jpeg'):
    with PIL.Image.open(f) as img:
        exif_data = img._getexif()
    if exif_data == None:
        # do something here
        continue
    model, software, dt = exif_data.get(272, ''), exif_data.get(305, ''), exif_data.get(306, '')
    newfname = datetime.datetime.strptime(dt, '%Y:%m:%d %H:%M:%S').strftime('%Y%m%d_%H%M%S') + '.jpg' if dt != '' else f
    # rename the file with the new filename
    # and also move it in a specific folder according to model/software
    # special case to handle: filename collisions