[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9123":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},9123,"GooglePhotosTakeoutHelper","TheLastGimbus\u002FGooglePhotosTakeoutHelper","TheLastGimbus","Script that organizes the Google Takeout archive into one big chronological folder","https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fgpth-bin",null,"Dart",5758,312,43,63,0,14,65,1,38.49,"Apache License 2.0",false,"master",[25,26,27,28,29,30],"exif","exif-data","google-photos","google-takeout","json","python-scripts","2026-06-12 02:02:03","[![AUR](https:\u002F\u002Fimg.shields.io\u002Faur\u002Fversion\u002Fgpth-bin?logo=arch-linux)](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fgpth-bin)\n[![total Github Releases downloads](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper\u002Ftotal?label=total%20downloads)](https:\u002F\u002Fgithub.com\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper\u002Freleases\u002F)\n[![latest version downloads](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper\u002Flatest\u002Ftotal?label=latest%20version%20downloads)](https:\u002F\u002Fgithub.com\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper\u002Freleases\u002Flatest)\n[![resolved Github issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-closed\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper?label=resolved%20issues)](https:\u002F\u002Fgithub.com\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper\u002Fissues)\n[![commit activity](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcommit-activity\u002Fy\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper)](https:\u002F\u002Fgithub.com\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper\u002Fgraphs\u002Fcontributors)\n\n# Google Photos Takeout Helper 📸🆘\n## What is this for 🧐\nIf you ever want to move from Google Photos to other platform\u002Fsolution, your fastest choice to export all photos is [Google Takeout 🥡](https:\u002F\u002Ftakeout.google.com\u002F)\n\nBut when you download it, you will find yourself with zips with hundreds of little folders with weird `.json` files inside 🍝. \nWhat if you want to just have one folder with all photos, in chronological order? Good luck copying all of that 🙃\n\nThis script does just that - it organizes and cleans up your Takeout for you 🧹😌\n\nIt will take all of those folders, find all photos in them, set their `file last modified` correctly, and put it in one big folder (or folders divided by a month) 🗄\n\n## How to use:\nSince `v3.2.0`, `gpth` is interactive 🎉 - you don't need to type any complicated arguments - just get your takeout, run gpth, and follow prompted instructions 💃\n\nIf you want to run it on Synology, have problems with interactive, or just love cmd, look at [\"Running manually with cmd\"](#running-manually-with-cmd). Otherwise, just:\n\n### 1. Get all your photos from [Google Takeout](https:\u002F\u002Ftakeout.google.com\u002F) 📥\n\"deselect all\" and then select only Google Photos\n      \n\u003Cimg width=\"75%\" alt=\"gpth usage image tutorial\" src=\"https:\u002F\u002Fgithub.com\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper\u002Fassets\u002F40139196\u002F8e85f58c-9958-466a-a176-51af85bb73dd\">\n\n### 2. Unzip them all and merge into one, so that all \"Takeout\" folders become one\n   \n   **NOTE:** Keep those original zips, you may need them if anything goes wrong\n   \n   \u003Cimg width=\"75%\" alt=\"Unzip image tutorial\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F40139196\u002F229361367-b9803ab9-2724-4ddf-9af5-4df507e02dfe.png\">\n   \n### 3. Download the executable for your system from [releases tab](https:\u002F\u002Fgithub.com\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper\u002Freleases) 🛒 ([also available on AUR 😏](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fgpth-bin))\n\n### 4. Run `gpth`\n   - On Windoza: just double-click the downloaded `.exe` 🎉 - tell windoza defender that it's safe, and follow prompted instructions 🧾\n   - On Mac\u002FLinux: open terminal, `cd` to the folder with downloaded executable and run it:\n     ```bash\n     # if you have Mac with M1\u002FM2 chip, you need to enable x86 emulation\n     # otherwise, just skip it\n     softwareupdate --install-rosetta\n     \n     cd Downloads # probably\n     # add execute permission for file\n     chmod +x gpth-macos # or gpth-linux\n     # tell MacOS Gatekeeper to not worry\n     xattr -r -d com.apple.quarantine gpth-macos\n     # run it 🏃\n     .\u002Fgpth-macos # or .\u002Fgpth-linux\n     # follow prompted instructions 🥰\n     ```\n\n   **Fun fact:** `gpth` *moves* files around by default - so if anything goes wrong mid-way, re-export the zips again :pray:\n     \n### 5. Most of your photos should have correct original EXIFs (metadata), but if you want, you can insert them everywhere with `exiftool`, so you won't lose their creation time\n   - Download Phil Harvey's exiftool: https:\u002F\u002Fexiftool.sourceforge.net\u002F\n   - Open the cmd\u002Fterminal, and run\n     ```bash\n     # cd to folder where you downloaded exiftool\n     cd Downloads\n     # run it on your output folder:\n     # (the '-r' means \"run on all files\u002Fin sub-folders\" aka recursively)\n     # (Make sure you didn't change file modify dates aka didn't do anything with the files after running gpth\n     exiftool -overwrite_original -r -if 'not defined DateTimeOriginal' -P \"-AllDates\u003CFileModifyDate\" \"your\u002Foutput\u002Ffolder\u002FALL_PHOTOS\u002F\"\n     ```\n\nDone! Enjoy your photos!!!\n\n### Running manually with cmd\n\nYou may still need this mode if:\n- You want to run on Synology where there are no ui programs required for interactive\n  - You can read\u002Fdiscuss in [#157](https:\u002F\u002Fgithub.com\u002FTheLastGimbus\u002FGooglePhotosTakeoutHelper\u002Fdiscussions\u002F157) for any help\n- ~~Interactive unzipping crashes for you (known issue in windoza 😢 #178)~~ - disabled for now\n- Want to use this in other script\u002Fautomation\n\nIn that case:\n1. Manually unzip all your takeout zips and merge them into one folder\n2. Open cmd and:\n   - For windoza:\n     ```bash\n     # psst: in windoza cmd, you can just drag and drop files\u002Ffolders to type them in\n     # 1. change working directory to where gpth.exe is:\n     cd Downloads  # Most probably\n     # run it, selecting input and output folders with options like this:\n     # (you can try to drag and drop them)\n     gpth.exe --input \"Downloads\\you\\input\\folder\" --output \"C:\\some\\other\\location\" --albums \"shortcut\"\n     # select which album solution you like - see --help for all of them\n     # remember to use \"\" !\n     ```\n   - For Linux\u002FmacOS:\n     ```bash\n     # ssh\u002Fwhatever to where you're running it\n     cd Downloads  # folder with gpth\n     chmod +x gpth  # add execute permission\n     # tell MacOS Gatekeeper to not worry\n     xattr -r -d com.apple.quarantine gpth-macos\n     .\u002Fgpth --input \"\u002Fsome\u002Finput\u002Ffolder\" --output \"other\u002Foutput\u002Ffolder\" --albums \"shortcut\"\n     # select which album solution you like - see --help for all of them\n     ```\n\nYou can check all cmd flags by running `gpth --help` - for example, the `--divide-to-dates` flag\n\n## If I helped you, you can consider donating me ☕\nI spent **a lot of** time fixing bugs and making this work stable 💖 - would be super thankful for any donations 🥰\n\n[![Donate](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDonate-PayPal-blue.svg?logo=paypal&style=for-the-badge)](https:\u002F\u002Fwww.paypal.me\u002FTheLastGimbus)\n[![Donate using ko-fi](https:\u002F\u002Fko-fi.com\u002Fimg\u002Fgithubbutton_sm.svg)](https:\u002F\u002Fko-fi.com\u002FA0A6HO71P)\n[![Donate using Liberapay](https:\u002F\u002Fliberapay.com\u002Fassets\u002Fwidgets\u002Fdonate.svg)](https:\u002F\u002Fliberapay.com\u002FTheLastGimbus\u002Fdonate)\n\n## After exporting 🤔\n### Be aware if you move your photos on your Android phone... ☝\n(99% of the times), if you move some files in Android, their creation and modification time is reset to current.\n\n\"Simple Gallery\" app usually keeps original file creation time when moving and copying (but I don't guarantee it). It's also pretty cool - check it out: https:\u002F\u002Fgithub.com\u002FSimpleMobileTools\u002FSimple-Gallery\n\n### What to do when you got rid of Google Photos? What are the alternatives? 🗺\n - I really recommend you using [Syncthing](https:\u002F\u002Fsyncthing.net\u002F) for syncing your photos and files across devices. It does so through your local Wi-Fi, so you're not dependent on any service or internet connection. It will also keep original file creation date and metadata, so it resolves Android issue that I mentioned before.\n\n - [Immich](https:\u002F\u002Fimmich.app\u002F) aims to be full blown GPhotos replacement - it's still under development, but already looks great!\n\n - Same with [Photoprism](https:\u002F\u002Fphotoprism.org\u002F), tho this one is in development longer (may be more mature)\n\n - If you want something more centralized but also self-hosted, [Nextcloud](https:\u002F\u002Fnextcloud.com) is a nice choice, but its approach to photos is still not perfect. (And you need to set up your own server)\n\n### Other Takeout projects\nI used this tool to export my notes to markdown - you can then edit them with any markdown editor you like :)\n\nhttps:\u002F\u002Fgithub.com\u002FvHanda\u002Fgoogle-keep-exporter\n\n### Where is the Python script 🐍 ??\nYeah, the whole thing got re-written in Dart, and now it's way more stable and faster. If you still want Python for some reason, check out v2.x - in releases\u002Ftags\n\n### TODO (Pull Requests welcome):\n- [ ] GPS data: from JSON to Exif - ~~Thank you @DalenW 💖~~ still thank you, but it is now missing in the Dart version\n- [ ] Writing data from `.json`s back to `EXIF` data\n- [x] Some way to handle albums - THANK YOU @bitsondatadev 😘 🎉 💃\n","Google Photos Takeout Helper 是一个用于整理 Google Takeout 导出照片的脚本，将多个小文件夹中的照片按时间顺序归档到一个大文件夹中。该项目使用 Dart 语言编写，能够读取并解析导出文件中的 JSON 数据，根据 EXIF 信息修正图片的最后修改时间，并支持按月划分子文件夹以保持文件结构清晰。它特别适合那些希望从 Google Photos 迁移到其他平台或解决方案的用户，在需要批量处理大量照片时非常有用。此外，该工具自 v3.2.0 版本起提供了交互式命令行界面，简化了用户的操作流程。",2,"2026-06-11 03:21:19","top_language"]