{"id":19694737,"url":"https://github.com/simulot/photofolder","last_synced_at":"2026-06-08T01:32:42.156Z","repository":{"id":75014378,"uuid":"79847217","full_name":"simulot/photofolder","owner":"simulot","description":"Reorganize your photo library using photo date","archived":false,"fork":false,"pushed_at":"2017-01-24T21:03:02.000Z","size":4067,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-27T12:35:18.815Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/simulot.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-01-23T20:57:06.000Z","updated_at":"2017-06-28T13:28:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"5d7dcce2-2e4f-4dfc-a8b4-f1e812721ae5","html_url":"https://github.com/simulot/photofolder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/simulot/photofolder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simulot%2Fphotofolder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simulot%2Fphotofolder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simulot%2Fphotofolder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simulot%2Fphotofolder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simulot","download_url":"https://codeload.github.com/simulot/photofolder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simulot%2Fphotofolder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34044919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"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":[],"created_at":"2024-11-11T19:24:20.378Z","updated_at":"2026-06-08T01:32:42.138Z","avatar_url":"https://github.com/simulot.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cleansing photo folder\n\n## Introduction\nAfter several years of shooting photos everydays with several devices, my photo repository is getting messy:\n* some have been copied accross directories\n* some copied,with a different names\n* some distinct photo have same name\n* unconsistent folder naming\nI wrote this utility in order to have a simple but proven \nfolder organisation :\nYEAR\\YEAR.MONTH\\YEAR.MONTH.DAY hierarchy based on taken date available in exif metadata when available.\n\nThe utility scans the given folder. For each photo, it checks the path where it should be\nlocated. When it differs from the actual path, it moves it.\n\nAt the end of the process, empty folders are removed.\n\n# Usage\n\n```\nusage: photofolder [\u003cflags\u003e] \u003crepository\u003e [\u003cpath\u003e]\n\nFlags:\n      --help                     Show context-sensitive help (also try\n                                 --help-long and --help-man).\n  -m, --model=/{{.YYYY}}/{{.YYYY}}.{{.MM}}/{{.YYYY}}.{{.MM}}.{{.DD}}  \n                                 model for path\n  -d, --dryrun                   show actions to be done, but doesn't touch files\n      --delete=Thumbs.db... ...  to be deleted file patterns, like thumb*.* or\n                                 picasa.ini\n      --delete-small             delete small image smaller than 256x256 pixels\n\nArgs:\n  \u003crepository\u003e  media repository\n  [\u003cpath\u003e]      path to be cleaned, if empty, the whole repository is cleanned\n```\n\n\n## Settings\n### model name definition\n   * .YYYY\n   * .YY \n   * .MM \n   * .DD \n   * .HH \n   * .MN \n   * .SS\n\n   When several pictures have been taken during the same second, names are same.\n   A number is append to the file name.\n\n   \n## Duplicate detection\n  \n  * Same taken date \n  * Image MD5 hash identical \n\n    \n\n\n## Langage choice : GO\nGO language is my current favorite tool for this kind of project. Easy, portable, efficient.\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimulot%2Fphotofolder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimulot%2Fphotofolder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimulot%2Fphotofolder/lists"}