{"id":13584984,"url":"https://github.com/Zebradil/Gimme-iPhotos","last_synced_at":"2025-04-07T06:32:11.183Z","repository":{"id":38195224,"uuid":"256617200","full_name":"Zebradil/Gimme-iPhotos","owner":"Zebradil","description":"Download media files from iCloud.","archived":true,"fork":false,"pushed_at":"2024-03-24T00:59:44.000Z","size":298,"stargazers_count":119,"open_issues_count":24,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-14T02:48:39.757Z","etag":null,"topics":["icloud","icloud-photos","icloud-sync","python"],"latest_commit_sha":null,"homepage":"","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/Zebradil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"github":["zebradil"],"patreon":"zebradil","custom":["https://www.paypal.me/zebradil"]}},"created_at":"2020-04-17T21:51:45.000Z","updated_at":"2024-11-14T22:45:44.000Z","dependencies_parsed_at":"2024-11-06T03:03:03.741Z","dependency_job_id":null,"html_url":"https://github.com/Zebradil/Gimme-iPhotos","commit_stats":{"total_commits":140,"total_committers":6,"mean_commits":"23.333333333333332","dds":"0.34285714285714286","last_synced_commit":"b2333fb1dcf0e8d08e0be175eac73fe1b729f4e7"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zebradil%2FGimme-iPhotos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zebradil%2FGimme-iPhotos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zebradil%2FGimme-iPhotos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zebradil%2FGimme-iPhotos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Zebradil","download_url":"https://codeload.github.com/Zebradil/Gimme-iPhotos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247607235,"owners_count":20965942,"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":["icloud","icloud-photos","icloud-sync","python"],"created_at":"2024-08-01T15:04:38.567Z","updated_at":"2025-04-07T06:32:11.174Z","avatar_url":"https://github.com/Zebradil.png","language":"Python","funding_links":["https://github.com/sponsors/zebradil","https://patreon.com/zebradil","https://www.paypal.me/zebradil"],"categories":["Install from Source","Python"],"sub_categories":["Photos"],"readme":"# Gimme-iPhotos\n\n## 🪦 Discontinued\n\nThis project is no longer maintained. Check https://github.com/icloud-photos-downloader/icloud_photos_downloader instead.\n\nI have not been using iCloud and Apple devices since 2021 and I do not plan to.\nThis project was started to first off-load my photos from iCloud and then migrate out of iCloud completely.\n\nProbably, it doesn't make sense to fork or attempt to recover it, as https://github.com/picklepete/pyicloud, on which Gimme-iPhotos relies is not maintained for a couple of years as well.\n\n\n## Overview\n\n[![PyPI](https://img.shields.io/pypi/v/gimme-iphotos.svg)](https://pypi.python.org/pypi/gimme-iphotos)\n[![PyPI](https://img.shields.io/pypi/l/gimme-iphotos.svg)](https://opensource.org/licenses/MIT)\n\nDownload media files from iCloud.\n\nThis tool uses [pyicloud] to synchronize photos and videos from iCloud to your\nlocal machine.\n\n## Features\n\n- Downloads media files from iCloud in parallel (might be beneficial on small files and wide bandwidth)\n- Keeps local collection in sync with iCloud by:\n  - skipping files which exist locally\n  - removing local files which were removed from the cloud\n- Reads configuration from ini-file\n- Stores password in the keychain (provided by [pyicloud])\n- Supports two-factor authentication\n- Shows nice progress bars (thanks to [tqdm])\n\n## Installation\n\n```sh\n$ pip3 install gimme-iphotos\n```\n\nor\n\n```sh\n$ docker pull zebradil/gimme-iphotos\n```\n\n## Usage\n\n```\n$ gimme-iphotos --help\nusage: gimme-iphotos [-h] [-c CONFIG] [-v] [-u USERNAME] [-p PASSWORD] [-d DESTINATION] [-o] [-r] [-n PARALLEL] [-g] [--zero-pad]\n\nDownloads media files from iCloud\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -c CONFIG, --config CONFIG\n                        Configuration file.\n                        It's ini-like file (see configparser module docs), must contain [main] section.\n                        Keys are fully-named arguments, except help, config and verbose.\n                        Values specified using command line arguments take precedence over values from a provided config file.\n  -v, --verbose         Increase verbosity. Can be specified multiple times.\n                        Use -vvvv to get maximum verbosity.\n  -u USERNAME, --username USERNAME\n                        iCloud username (email). Can be specified interactively if not set.\n  -p PASSWORD, --password PASSWORD\n                        iCloud password. Can be specified interactively if not set.\n  -d DESTINATION, --destination DESTINATION\n                        Destination directory. Can be specified interactively if not set.\n  -o, --overwrite       Overwrite existing files. Default: false.\n  -r, --remove          Remove missing files. Default: false.\n  -n PARALLEL, --num-parallel-downloads PARALLEL\n                        Max number of concurrent downloads.\n                        Increase this number if bandwidth is not fully utilized. Default: 3\n  -g, --group           Group the photos into year and month directories.\n  --zero-pad            Zero pad months when grouping photos.\n```\n\nUsing config file:\n\n```sh\n$ cat john.cfg\n[main]\nusername = john.doe@example.com\npassword = not-secure123\ndestination = /home/john/Photos\nremove = True\n\n$ gimme-iphotos -c john.cfg\n```\n\nOverriding config file:\n\n```sh\n$ gimme-iphotos -c john.cfg --destination /tmp/icloud\n```\n\nWithout config file:\n\n```sh\n$ # Password will be requested interactively\n$ gimme-iphotos -u john.doe@rexample.com --destination /tmp/icloud\nEnter iCloud password for john.doe@rexample.com:\n```\n\n### Docker\n\nThe CLI is the same but requires mounting the destination directory and config file (if needed).\n\n```sh\n$ docker run --interactive --tty \\\n    -v \u003cdestination\u003e:/somedir \\\n    -v ${PWD}/john.cfg:/app/john.cfg \\\n    zebradil/gimme-iphotos -c john.cfg\n```\n\n## License\n\nLicensed under the [MIT License].\n\nBy [German Lashevich].\n\n[MIT License]: https://github.com/zebradil/Gimme-iPhotos/blob/master/LICENSE\n[pyicloud]: https://github.com/picklepete/pyicloud\n[tqdm]: https://github.com/tqdm/tqdm\n[German Lashevich]: https://github.com/zebradil\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZebradil%2FGimme-iPhotos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FZebradil%2FGimme-iPhotos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZebradil%2FGimme-iPhotos/lists"}