{"id":25629215,"url":"https://github.com/dewey/my-life-in-weeks","last_synced_at":"2026-01-12T14:36:11.748Z","repository":{"id":188306496,"uuid":"678496830","full_name":"dewey/my-life-in-weeks","owner":"dewey","description":"Scanning your photo library and creating a high level overview over countries you visited. Just for fun. 🌎","archived":false,"fork":false,"pushed_at":"2023-08-14T17:49:16.000Z","size":2442,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-15T03:06:05.201Z","etag":null,"topics":["quantified-self","waitbutwhy"],"latest_commit_sha":null,"homepage":"","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/dewey.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}},"created_at":"2023-08-14T17:28:49.000Z","updated_at":"2023-08-17T12:53:33.000Z","dependencies_parsed_at":"2023-08-14T21:11:41.230Z","dependency_job_id":null,"html_url":"https://github.com/dewey/my-life-in-weeks","commit_stats":null,"previous_names":["dewey/my-life-in-weeks"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dewey%2Fmy-life-in-weeks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dewey%2Fmy-life-in-weeks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dewey%2Fmy-life-in-weeks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dewey%2Fmy-life-in-weeks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dewey","download_url":"https://codeload.github.com/dewey/my-life-in-weeks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240222477,"owners_count":19767460,"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","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":["quantified-self","waitbutwhy"],"created_at":"2025-02-22T19:17:06.569Z","updated_at":"2026-01-12T14:36:11.731Z","avatar_url":"https://github.com/dewey.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# My Life in Weeks\n\nThis is a small fun project inspired by KrauseFx's [howisfelix.today](https://howisfelix.today/?), which, in turn, is inspired by [Wait But Why's project](https://waitbutwhy.com/2014/05/life-weeks.html).\n\nI decided to do it based on the EXIF data of my personal photo collection in Photos.app. The caveat there is that properly GPS tagged data is only available from the point in time when I got my first iPhone (January 2008).\n\n## Output\n\nHere's a work in progress screenshot, with around 50% of my images correctly tagged with the location (I ran out of API credits).\n\n\u003cimg width=\"1918\" alt=\"Screenshot 2023-08-14 at 19 07 58 png@2x\" src=\"https://github.com/dewey/my-life-in-weeks/assets/790262/357046d1-4f7a-4e7f-a331-a6028a288a12\"\u003e\n\n\n## Usage\n\nThis is a two-step process, first we are scanning the Photos.app library and extracting the GPS coordinates. Then we use a service like [Positionstack.com](http://positionstack.com) to reverse geocode these into Country / City information.\n\nAll this information is stored in a local SQLite database. Running the import step another time will skip all entries which are in the database already.\n\nWhile the data is importing you can already watch the progress by starting the web interface of the tool (See: \"Generate report\" below).\n\n### Configuration\n\n- `POSITIONSTACK_TOKEN`: Add your API token from http://positionstack.com\n- `PHOTO_PATH`: The absolute path to your Photos.app originals directory\n- `LOCATION_BACKEND` (Default: positionstack): The backend used to translate coordinates to country / city information.\n\n### Import data\n\nMake sure [Exiftool](https://exiftool.org) is installed and available in your $PATH.\n\nRun `./run_develop.sh` to scan your Photos.app library.\n\n### Generate report\n\nRun `./run_develop_web.sh` to generate the report. You can look at it on \"http://localhost:8080\" by default.\n\n## Other thoughts\n\n- It might be more efficient to dig into the SQLite database of Photos.app directly. The schema is [not straight forward](https://simonwillison.net/2020/May/21/dogsheep-photos/) though. This could be implemented as a different importer plugin.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdewey%2Fmy-life-in-weeks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdewey%2Fmy-life-in-weeks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdewey%2Fmy-life-in-weeks/lists"}