{"id":15372591,"url":"https://github.com/jkbrzt/geotagger","last_synced_at":"2026-02-17T17:33:12.692Z","repository":{"id":41045299,"uuid":"65645477","full_name":"jkbrzt/geotagger","owner":"jkbrzt","description":"📸 🗺 Geotag your photos from GPS-less cameras with your phone's location history data","archived":false,"fork":false,"pushed_at":"2019-10-22T23:50:22.000Z","size":289,"stargazers_count":39,"open_issues_count":2,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-15T14:13:35.851Z","etag":null,"topics":["exif","geolocation","gpx","jakubroztocil","location","moves","movesapp","photography","photos"],"latest_commit_sha":null,"homepage":"https://twitter.com/jakubroztocil","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jkbrzt.png","metadata":{"files":{"readme":"README.rst","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}},"created_at":"2016-08-14T01:59:15.000Z","updated_at":"2025-02-14T05:51:56.000Z","dependencies_parsed_at":"2022-08-27T21:11:18.156Z","dependency_job_id":null,"html_url":"https://github.com/jkbrzt/geotagger","commit_stats":null,"previous_names":["jkbrzt/geotagger","jakubroztocil/geotagger"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/jkbrzt/geotagger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkbrzt%2Fgeotagger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkbrzt%2Fgeotagger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkbrzt%2Fgeotagger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkbrzt%2Fgeotagger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkbrzt","download_url":"https://codeload.github.com/jkbrzt/geotagger/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkbrzt%2Fgeotagger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29551257,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T14:33:00.708Z","status":"ssl_error","status_checked_at":"2026-02-17T14:32:58.657Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["exif","geolocation","gpx","jakubroztocil","location","moves","movesapp","photography","photos"],"created_at":"2024-10-01T13:52:07.684Z","updated_at":"2026-02-17T17:33:12.673Z","avatar_url":"https://github.com/jkbrzt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"GeoTagger\n#########\n\nGeotag your photos from GPS-less cameras with your phone's location\nhistory data.\n\n\n.. image:: https://github.com/jakubroztocil/geotagger/raw/master/geotagger.png\n    :alt: GeoTagger\n    :align: center\n\n\nIs it for me?\n=============\n\n* Do you take photos with a camera without a GPS tracking feature?\n* Do you have https://moves-app.com/ installed on your phone?\n* Do you want to have your photos geotagged?\n\n…if your answer is 3x yes, then this tool is for you.\n\n\nHow does it work?\n=================\n\n* You already walk around with your location-aware phone and Moves\n  records your location.\n* You snap photos with your GPS-less camera.\n* GeoTagger uses the creation timestamps from photos\n  to find your location at the time of taking them in your Moves log.\n* GeoTagger is able to retrospectively add GEO tags to even old photos,\n  as long as your location for the period is logged with Moves.\n\n\nHow is it implemented?\n======================\n\nWhen you ask GeoTagger to tag your photos, this process takes places:\n\n1. Unique creation dates are extracted from the photo files.\n2. Your Moves history for those days is fetched from the Moves API.\n3. A `GPX \u003chttps://en.wikipedia.org/wiki/GPS_Exchange_Format\u003e`_ file is\n   generated from the data.\n4. ``exiftool -geotag`` is used behind to scene to apply that location\n   log to your photos.\n\n\nStatus\n======\n\nBeta quality.\n\n\nInstallation\n============\n\n1. `Install \u003chttp://www.sno.phy.queensu.ca/~phil/exiftool/install.html\u003e`_\n   ``exiftool``, for example, with: ``$ brew install exiftool``\n2. Install ``geotagger`` from PyPi with: ``$ pip install geotagger``\n\n\nUsage\n=====\n\nSee ``$ geotagger --help`` and ``$ geotagger sub-command --help``.\n\n\nMoves authentication\n--------------------\n\n1. Create a new app under your Moves account: https://dev.moves-app.com/apps/new\n2. Specify ``http://127.0.0.1:7777/redirect`` as ``Redirect URI``.\n3. Create ``~/.geotagger.json`` with credentials for your app:\n   ``{\"MOVES_ID\": \"\u003cCLIENT_ID\u003e\", \"MOVES_SECRET\": \"\u003cCLIENT_SECRET\u003e\"}``\n4. Run ``geotagger auth`` and follow the instruction to authenticate the app.\n\n\nGeotagging\n----------\n\nGeotag all images in a folder:\n\n.. code-block:: bash\n\n    $ geotagger tag ./photos\n\nYou can also just generate a GPX log for the dates without applying it:\n\n.. code-block:: bash\n\n    $ geotagger gpx ./photos \u003e log.gpx\n\nThe ``tag`` sub-command also optionally accepts a path to a GPX log file:\n\n.. code-block:: bash\n\n    $ geotagger tag ./photos log.gpx\n\n\nTODO\n====\n\n* Improve UX: simplify installation and setup\n* Make the external metadata updates play well with photos already imported to Lightroom\n* Add Geosync support http://www.sno.phy.queensu.ca/~phil/exiftool/geotag.html#geosync\n* Consider Electron-based GUI app\n* Consider additional GPS log sources than Moves\n\n\nChangelog\n=========\n\n0.0.3 (2017-09-09)\n------------------\n\n* Fixed ``missing configuration: MOVES__ID`` #1\n\n\nContact\n=======\n\nJakub Roztocil\n\n* https://github.com/jakubroztocil\n* https://twitter.com/jakubroztocil\n* https://roztocil.co\n\n\nContribute\n==========\n\n* https://github.com/jakubroztocil/geotagger\n\n\nLicence\n=======\n\nMIT. See `LICENCE \u003c./LICENCE\u003e`_.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkbrzt%2Fgeotagger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkbrzt%2Fgeotagger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkbrzt%2Fgeotagger/lists"}