{"id":17000427,"url":"https://github.com/pascalre/photo-organizer","last_synced_at":"2025-09-11T02:09:28.077Z","repository":{"id":119720756,"uuid":"114179190","full_name":"pascalre/photo-organizer","owner":"pascalre","description":"Sort your photos!","archived":false,"fork":false,"pushed_at":"2023-12-15T14:29:52.000Z","size":11,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-30T05:37:10.411Z","etag":null,"topics":["photos"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pascalre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-13T23:22:32.000Z","updated_at":"2019-04-12T21:48:01.000Z","dependencies_parsed_at":"2023-12-15T15:44:18.317Z","dependency_job_id":null,"html_url":"https://github.com/pascalre/photo-organizer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pascalre/photo-organizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascalre%2Fphoto-organizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascalre%2Fphoto-organizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascalre%2Fphoto-organizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascalre%2Fphoto-organizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pascalre","download_url":"https://codeload.github.com/pascalre/photo-organizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascalre%2Fphoto-organizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274564258,"owners_count":25308558,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["photos"],"created_at":"2024-10-14T04:12:03.341Z","updated_at":"2025-09-11T02:09:28.057Z","avatar_url":"https://github.com/pascalre.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"In Zeiten digitaler Fotografie und Smartphones drucken wenige Leute die ich kenne noch aufgenommene Fotos aus und kleben diese in ein Album. Digital aufgenommene Fotos und Videos werden meist vom Speichermedium des Fotoapparats bzw. des Smartphones auf den Computer gezogen und dort abgelegt. Um auf lange Sicht nicht den Überblick über eine private Fotosammlung zu verlieren, bedarf es einer gewissen Ordnung.\n\nFür die Verwaltung meiner Fotosammlung habe ich mich seit jeher gegen den Einsatz spezieller Fotosoftware entschieden. Es gibt durchaus gute Programme, die einen Benutzer bei der Verwaltung einer Fotosammlung unterstüzen können, aber einen negativen Punkt haben alle Fotoverwaltungsprogramme gemein: Sie machen abhängig. Google hat es erst letzes Jahr gezeigt und hat seinen [Fotodienst Picasa eingestellt](http://winfuture.de/news,91068.html). Die Nutzer der Software waren gezwungen sich nach Alternativen umzusehen.\n# Eine gute Ordnerstruktur\nEine chronologische Ordnerstruktur ist eine Lösung, mit der man nicht an einzelne Programme gebunden ist. Bei mir hat sich die Gruppierung nach Jahr, Monat und Ereignis etabliert. Diese sieht folgendermaßen aus:\n```\nBilder/\n  2015/\n  2016/\n  2017/\n    2017-01/\n    2017-02/\n      2017-02-13 Geburtstag/\n    2017-03/\n      2017-03-05 Urlaub/\n      2017-03-07/\n```\nDiese Strukturierung ist extrem simpel aber dennoch nützlich.\n# Dateibenennung\nIn vielen Systemen werden Inhalte eines Ordners standardmäßig nach Dateinamen sortiert aufgelistet. Liegen in einem Ordner Fotos, die von verschiedenen Kameras aufgenommen wurden, so haben diese oft unterschiedliche Bennenungsschemen und unterscheiden sich auch in der Laufnummer. Eine Sortierung nach Dateinamen entspricht folglich nicht mehr der chronologischen Abfolge der Aufnahmen. Die Fotos sind durcheinander gemischt, wie man an folgendem Beispiel erkennt:\n```\n10990832_10152595682692484_5628450190846343807_o.jpg\n20170228001226.JPG\nCA064BDD-479F-403B-B582-B97E06EB58E5.jpeg\nIMG_6498.JPG\nIMG_6507.JPG\n```\nDa das Erstellungsdatum eines Bildes nicht unbedingt mit dem tatsächlichen Aufnahmezeitpunkt übereinstimmen muss, ist auch eine Sortierung nach Erstellungsdatum nicht zwingend chronologisch.\n\nDie beste Lösung ist meines Erachtens den Aufnahmezeitpunkt in den Dateinamen zu übernehmen. Die Dateinamen sollen Datum sowie Uhrzeit enthalten:\n```\n20170124_143108.jpg\n20170124_143639.jpg\n20170124_202956.m4v\n```\n# Umgang mit Metadaten\nWas ist nun wenn der eigentliche Zeitstempel eines Bildes verloren geglaubt scheint? Nahezu alle modernen Kameras speichern Metadaten eines JPEG-Bildes in der Bilddatei selbst ab. Diese Metadaten sind vom Format Exif und können z. B. folgendes beinhalten:\n* Kameramodell mit dem das Foto aufgenommen wurde \n* geografische Koordinaten \n* Aufnahmezeitpunkt\n\n# ExifTool: Dein bester Freund\nIch habe das Anlegen der Ordnerstruktur für neue Bilder lange Zeit händisch gemacht. Da das sehr aufwändig ist, habe mich nach einer automatisierten Möglichkeit umgesehen. Dabei bin ich schnell über die beiden Tools __exiv2__ und __ExifTool__ gestolpert. Diese Kommandozeilenwerkzeuge können Metadaten auslesen und anhand dieser Informationen Dateien ordnen und umbenennen. Da der Funktionsumfang von ExifTool deutlich größer ist - und vor allem weil es auch Metadaten aus Videos auslesen kann - habe ich mich dazu entschieden meine Bilder mit Hilfe dieses Tools zu ordnen.\n\nDas Programm lässt sich über die Webseite von [The Sudbury Neutrino Observatory](https://www.sno.phy.queensu.ca/~phil/exiftool) herunterladen. Nach der Installation kann das Programm über eine Kommandozeile genutzt werden.\n\nDer Befehl, mit dem ich meine Bildersammlung ordne, ist der Folgende:\n```\nexiftool -v -r -d ./%Y/%Y-%m/%Y-%m-%d/%Y%m%d_%H%M%S%%+2c.%%e '-FileName\u0026lt;CreateDate' *\n```\nIch möchte den Befehl kurz zerlegen und erklären:\n* __exiftool__ ist der Aufruf des Programmes, danach folgenden diverse Parameter: \n* __-v__ erzeugt eine Ausgabe mit mehr Informationen als üblich \n* __-r__ bedeutet, dass gefundene Ordner rekursiv nach Dateien durchsucht werden \n* -d ./%Y/%Y-%m/%Y-%m-%d/%Y%m%d_%H%M%S%%+2c.%%e spezifiziert wie die gewünschte Ordnerstruktur und Dateibenennung ist. Dabei steht\n  * __.__ für das aktuelle Verzeichnis \n  * __%Y__ für Jahr, \n  * __%m__ für Monat, \n  * __%d__ für Tag, \n  * __%H__ für Stunde, \n  * __%M__ für Minute und \n  * __%S__ für Sekunde. \n  * __%+2c__ hängt an den Dateinamen eine zweistellige Laufnummer falls bereits eine Datei mit dem erzeugten Namen existiert \n  * __%e__ ist die Dateiendung der Originaldatei. \n \n* Mit __-FileName\u0026lt;CreateDate__ wird angegeben, dass die Informationen zu Tag, Monat, Jahr aus dem Metadaten-Feld CreateDate genommen werden. \n* __*__ bedeutet, dass alle Dateien in dem aktuellen Verzeichnis prozessiert werden sollen.\n\n# Ausgabe des Befehls\nAngenommen im Ausgangsordner liegt eine Reihe an unsortierten Bildern:\n```\nIMG_8850.JPG   IMG_8856.JPG   IMG_8859.JPG   IMG_8862.JPG   IMG_8890.JPG   IMG_8927.JPG   IMG_8931.AAE   IMG_8933.JPG   IMG_8938.JPG   IMG_8940.JPG   IMG_8942.JPG   IMG_9023.JPG   IMG_E8931.JPG\nIMG_8853.JPG   IMG_8858.JPG   IMG_8861.JPG   IMG_8868.JPG   IMG_8891.JPG   IMG_8928.JPG   IMG_8931.JPG   IMG_8937.JPG   IMG_8939.JPG   IMG_8941.JPG   IMG_9018.JPG   IMG_9024.JPG\n```\n\nNach Ausführung des Befehls sind die Bilder nach Jahr, Monat, Tag sortiert:\n```\n./2017:\n12/\n\n./2017/12:\n17-12-04/ 17-12-05/ 17-12-07/ 17-12-10/\n\n./2017/12/17-12-04:\n20171204_225809.JPG  20171204_225814.JPG  20171204_234802.JPG\n\n./2017/12/17-12-05:\n20171205_011440.JPG  20171205_011443.JPG  20171205_011451.JPG  20171205_011456.JPG\n\n./2017/12/17-12-07:\n20171207_072143.JPG\n\n./2017/12/17-12-10:\n20171210_013357.JPG     20171210_013515.JPG     20171210_125503.JPG     20171210_130349.JPG     20171210_130351.JPG\n20171210_013452.JPG     20171210_013515_01.JPG  20171210_125814.JPG     20171210_130350.JPG\n```\n\n# Weitere Infos\nDieses Vorgehen funktioniert nicht bei Bildern bei denen die Metadaten entfernt wurden (z. B. durch sog. Metadaten-Stripping). Beispielsweise werden beim Versenden von Bildern über WhatsApp die Metadatendaten entfernt.\n\nWeiterhin kann das Tool natürlich nicht wissen, welches Ereignis an einem Tag stattgefunden hat. Die Ereignisbeschreibung muss also zusätzlich noch manuell angegeben werden.\n\nWenn ich also neue Bilder vom iPhone auf das Laptop ziehe, dann lege ich alle neuen Bilder in einen neuen Ordner und navigiere mit dem Terminal hinein. In dem Ordner wird der obige Befehl ausgeführt und erzeugt anschließen die gewünschte Strukturierung. Die erzeugten Ordner müssen jetzt nur noch an die Stelle kopiert werden, wo die bereits geordneten Bilder liegen.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpascalre%2Fphoto-organizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpascalre%2Fphoto-organizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpascalre%2Fphoto-organizer/lists"}