Skip to content

Commit 5594317

Browse files
bump v1.17.1 (#745)
1 parent 548769e commit 5594317

File tree

8 files changed

+1307
-1305
lines changed

8 files changed

+1307
-1305
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## Unreleased
44

5+
## 1.17.1 (2023-12-20)
6+
57
- fix: main macos binary failing [#668](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/668) [#700](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/700)
68
- fix: debian glibc error [#741](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/741)
79

CONTRIBUTING.md

Lines changed: 183 additions & 183 deletions
Large diffs are not rendered by default.

EXPERIMENTAL.md

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
1-
# Experimental Mode
2-
3-
Goal is to try new things and get feedback from users without breaking existing behavior.
4-
5-
Anything in this section can change without backward compatibity or even completely removed.
6-
7-
DANGER ZONE: Code may not work as expected.
8-
9-
## CLI format
10-
11-
Goal: reduce user confusion and maintanence burden by restructuring CLI interface for better matching use cases and related options
12-
13-
### New Structure
14-
15-
Ideas:
16-
- Each use case is matched to command
17-
- Customizations are available as options
18-
19-
Use Cases:
20-
- Maintain local copy/backup of iCloud: **COPY** command
21-
- Use iCloud as a transfer meduim to local storage (and clean iCloud afterwards): **MOVE** command
22-
23-
Othrogonal Needs:
24-
- Scheduled sync: **WATCH** command
25-
- management of persistent credentials: **AUTH** command
26-
- monitoring/notification/alerting: TBD
27-
28-
29-
### How to Use
30-
31-
Legacy command (compatible with prior versions):
32-
33-
`docker run -it --rm icloudpd:icloudpd icloudpd --help`
34-
35-
`docker run -it --rm icloudpd:icloudpd icloud --help`
36-
37-
`icloudpd-1.17.0-windows-amd64 --help`
38-
39-
Help:
40-
41-
`docker run -it --rm icloudpd:icloudpd`
42-
43-
`icloudpd-ex-1.17.0-windows-amd64 --help`
44-
45-
Example:
46-
47-
`docker run -it --rm icloudpd:icloudpd copy [email protected] /path/to/{album}/{date_created:%Y/%Y-%m}`
48-
49-
`icloudpd-ex-1.17.0-windows-amd64 copy [email protected] /path/to/{album}/{date_created:%Y/%Y-%m}`
50-
1+
# Experimental Mode
2+
3+
Goal is to try new things and get feedback from users without breaking existing behavior.
4+
5+
Anything in this section can change without backward compatibity or even completely removed.
6+
7+
DANGER ZONE: Code may not work as expected.
8+
9+
## CLI format
10+
11+
Goal: reduce user confusion and maintanence burden by restructuring CLI interface for better matching use cases and related options
12+
13+
### New Structure
14+
15+
Ideas:
16+
- Each use case is matched to command
17+
- Customizations are available as options
18+
19+
Use Cases:
20+
- Maintain local copy/backup of iCloud: **COPY** command
21+
- Use iCloud as a transfer meduim to local storage (and clean iCloud afterwards): **MOVE** command
22+
23+
Othrogonal Needs:
24+
- Scheduled sync: **WATCH** command
25+
- management of persistent credentials: **AUTH** command
26+
- monitoring/notification/alerting: TBD
27+
28+
29+
### How to Use
30+
31+
Legacy command (compatible with prior versions):
32+
33+
`docker run -it --rm icloudpd:icloudpd icloudpd --help`
34+
35+
`docker run -it --rm icloudpd:icloudpd icloud --help`
36+
37+
`icloudpd-1.17.1-windows-amd64 --help`
38+
39+
Help:
40+
41+
`docker run -it --rm icloudpd:icloudpd`
42+
43+
`icloudpd-ex-1.17.1-windows-amd64 --help`
44+
45+
Example:
46+
47+
`docker run -it --rm icloudpd:icloudpd copy [email protected] /path/to/{album}/{date_created:%Y/%Y-%m}`
48+
49+
`icloudpd-ex-1.17.1-windows-amd64 copy [email protected] /path/to/{album}/{date_created:%Y/%Y-%m}`
50+

FAQ.md

Lines changed: 73 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,73 @@
1-
# Nuances and Known Issues
2-
3-
## iCloud Authentication
4-
5-
### MFA
6-
7-
If your Apple account has two-factor authentication (multi-factor authentication, MFA) enabled,
8-
you will be prompted for a code when you run the script. Two-factor authentication will expire after an interval set by Apple,
9-
at which point you will have to re-authenticate. This interval is currently two months. Apple requires MFA for all new accounts.
10-
11-
You can receive an email notification when two-factor authentication expires by passing the
12-
`--smtp-username` and `--smtp-password` options. Emails will be sent to `--smtp-username` by default,
13-
or you can send to a different email address with `--notification-email`.
14-
15-
If you want to send notification emails using your Gmail account, and you have enabled two-factor authentication, you will need to generate an App Password at <https://myaccount.google.com/apppasswords>
16-
17-
### FIDO
18-
19-
Authentication to iCloud with hardware keys (FIDO) is not supported.
20-
21-
### ADP
22-
23-
Advanced Data Protection (ADP) for iCloud accounts is not supported because iCloudPD simulates web access, which is disabled with ADP.
24-
25-
### System Keyring
26-
27-
You can store your password in the system keyring using the `icloud` command-line tool:
28-
29-
``` plain
30-
$ icloud --username [email protected]
31-
ICloud Password for [email protected]:
32-
Save password in keyring? (y/N)
33-
```
34-
35-
If you have stored a password in the keyring, you will not be required to provide a password
36-
when running the script.
37-
38-
If you would like to delete a password stored in your system keyring,
39-
you can clear a stored password using the `--delete-from-keyring` command-line option:
40-
41-
``` sh
42-
icloud --username [email protected] --delete-from-keyring
43-
```
44-
45-
## Error on the First Run
46-
47-
When you run the script for the first time, you might see an error message like this:
48-
49-
``` plain
50-
Bad Request (400)
51-
```
52-
53-
This error often happens because your account hasn't used the iCloud API before, so Apple's servers need to prepare some information about your photos. This process can take around 5-10 minutes, so please wait a few minutes and try again.
54-
55-
If you are still seeing this message after 30 minutes, then please [open an issue on GitHub](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/new) and post the script output.
56-
57-
## Access from Mainland China
58-
59-
Access to iCloud.com is blocked from mainland China. `icloudpd` can be used with `--domain cn` parameter to support downloading iCloud phtotos from mainland China, however, people reported mixed results with that parameter.
60-
61-
## MacOS binary
62-
63-
`icloudpd` is available as Intel 64bit binary for MacOS, but works on ARM macs too (M1, M2).
64-
65-
Here are the steps to make it working:
66-
- download binary from Github [Releases](https://github.com/icloud-photos-downloader/icloud_photos_downloader/releases) into desired local folder
67-
- add executable flag by running `chmod +x icloudpd-1.17.0-macos-amd64`
68-
- start it from the terminal: `icloudpd-1.17.0-macos-amd64`
69-
- Apple will tell you that it cannot check for malicous software and refuse to run the app; click "Ok"
70-
- Open "System Settings"/"Privacy & Security" and find `icloudpd-1.17.0-macos-amd64` as blocked app; Click "Allow"
71-
- Start `icloudpd-1.17.0-macos-amd64` from the terminal again
72-
- Apple will show another warning; click "Open"
73-
- After that you can run `icloudpd-1.17.0-macos-amd64 --help` or any other supported command/option
1+
# Nuances and Known Issues
2+
3+
## iCloud Authentication
4+
5+
### MFA
6+
7+
If your Apple account has two-factor authentication (multi-factor authentication, MFA) enabled,
8+
you will be prompted for a code when you run the script. Two-factor authentication will expire after an interval set by Apple,
9+
at which point you will have to re-authenticate. This interval is currently two months. Apple requires MFA for all new accounts.
10+
11+
You can receive an email notification when two-factor authentication expires by passing the
12+
`--smtp-username` and `--smtp-password` options. Emails will be sent to `--smtp-username` by default,
13+
or you can send to a different email address with `--notification-email`.
14+
15+
If you want to send notification emails using your Gmail account, and you have enabled two-factor authentication, you will need to generate an App Password at <https://myaccount.google.com/apppasswords>
16+
17+
### FIDO
18+
19+
Authentication to iCloud with hardware keys (FIDO) is not supported.
20+
21+
### ADP
22+
23+
Advanced Data Protection (ADP) for iCloud accounts is not supported because iCloudPD simulates web access, which is disabled with ADP.
24+
25+
### System Keyring
26+
27+
You can store your password in the system keyring using the `icloud` command-line tool:
28+
29+
``` plain
30+
$ icloud --username [email protected]
31+
ICloud Password for [email protected]:
32+
Save password in keyring? (y/N)
33+
```
34+
35+
If you have stored a password in the keyring, you will not be required to provide a password
36+
when running the script.
37+
38+
If you would like to delete a password stored in your system keyring,
39+
you can clear a stored password using the `--delete-from-keyring` command-line option:
40+
41+
``` sh
42+
icloud --username [email protected] --delete-from-keyring
43+
```
44+
45+
## Error on the First Run
46+
47+
When you run the script for the first time, you might see an error message like this:
48+
49+
``` plain
50+
Bad Request (400)
51+
```
52+
53+
This error often happens because your account hasn't used the iCloud API before, so Apple's servers need to prepare some information about your photos. This process can take around 5-10 minutes, so please wait a few minutes and try again.
54+
55+
If you are still seeing this message after 30 minutes, then please [open an issue on GitHub](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/new) and post the script output.
56+
57+
## Access from Mainland China
58+
59+
Access to iCloud.com is blocked from mainland China. `icloudpd` can be used with `--domain cn` parameter to support downloading iCloud phtotos from mainland China, however, people reported mixed results with that parameter.
60+
61+
## MacOS binary
62+
63+
`icloudpd` is available as Intel 64bit binary for MacOS, but works on ARM macs too (M1, M2).
64+
65+
Here are the steps to make it working:
66+
- download binary from Github [Releases](https://github.com/icloud-photos-downloader/icloud_photos_downloader/releases) into desired local folder
67+
- add executable flag by running `chmod +x icloudpd-1.17.1-macos-amd64`
68+
- start it from the terminal: `icloudpd-1.17.1-macos-amd64`
69+
- Apple will tell you that it cannot check for malicous software and refuse to run the app; click "Ok"
70+
- Open "System Settings"/"Privacy & Security" and find `icloudpd-1.17.1-macos-amd64` as blocked app; Click "Allow"
71+
- Start `icloudpd-1.17.1-macos-amd64` from the terminal again
72+
- Apple will show another warning; click "Open"
73+
- After that you can run `icloudpd-1.17.1-macos-amd64 --help` or any other supported command/option

binary_dist/pyproject.toml

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
1-
[build-system]
2-
requires = [
3-
"setuptools>=68.0.0,<69",
4-
"wheel>=0.40.0,<0.41",
5-
]
6-
build-backend = "setuptools.build_meta"
7-
8-
[project]
9-
version="1.17.0"
10-
name = "icloudpd"
11-
description = "icloudpd is a command-line tool to download photos and videos from iCloud."
12-
readme = "README_PYPI.md"
13-
requires-python = ">=2"
14-
keywords = ["icloud", "photo"]
15-
license = {file="LICENSE.md"}
16-
authors=[
17-
{name = "The iCloud Photo Downloader Authors"}
18-
]
19-
classifiers = [
20-
"Intended Audience :: End Users/Desktop",
21-
"Operating System :: OS Independent",
22-
"License :: OSI Approved :: MIT License",
23-
]
24-
# https://pypi.org/pypi?%3Aaction=list_classifiers
25-
26-
[project.optional-dependencies]
27-
dev = [
28-
"wheel>=0.40.0,<0.41"
29-
]
30-
31-
[project.urls]
32-
Homepage="https://github.com/icloud-photos-downloader/icloud_photos_downloader"
33-
34-
[tool.setuptools.package-data]
35-
"*" = ["icloud*"]
36-
37-
[tool.distutils.bdist_wheel]
38-
universal = true
39-
40-
[project.scripts]
41-
icloudpd = "icloudpd:__main__"
42-
icloud = "icloud:__main__"
1+
[build-system]
2+
requires = [
3+
"setuptools>=68.0.0,<69",
4+
"wheel>=0.40.0,<0.41",
5+
]
6+
build-backend = "setuptools.build_meta"
7+
8+
[project]
9+
version="1.17.1"
10+
name = "icloudpd"
11+
description = "icloudpd is a command-line tool to download photos and videos from iCloud."
12+
readme = "README_PYPI.md"
13+
requires-python = ">=2"
14+
keywords = ["icloud", "photo"]
15+
license = {file="LICENSE.md"}
16+
authors=[
17+
{name = "The iCloud Photo Downloader Authors"}
18+
]
19+
classifiers = [
20+
"Intended Audience :: End Users/Desktop",
21+
"Operating System :: OS Independent",
22+
"License :: OSI Approved :: MIT License",
23+
]
24+
# https://pypi.org/pypi?%3Aaction=list_classifiers
25+
26+
[project.optional-dependencies]
27+
dev = [
28+
"wheel>=0.40.0,<0.41"
29+
]
30+
31+
[project.urls]
32+
Homepage="https://github.com/icloud-photos-downloader/icloud_photos_downloader"
33+
34+
[tool.setuptools.package-data]
35+
"*" = ["icloud*"]
36+
37+
[tool.distutils.bdist_wheel]
38+
universal = true
39+
40+
[project.scripts]
41+
icloudpd = "icloudpd:__main__"
42+
icloud = "icloud:__main__"

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ requires = [
66
build-backend = "setuptools.build_meta"
77

88
[project]
9-
version="1.17.0"
9+
version="1.17.1"
1010
name = "icloudpd"
1111
description = "icloudpd is a command-line tool to download photos and videos from iCloud."
1212
readme = "README_PYPI.md"

scripts/publish_pypi

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
#!/bin/bash
2-
set -euo pipefail
3-
4-
# dev script
5-
# expecting dist/binary_dist to be set
6-
# required param registry_url
7-
#
8-
# prereq
9-
# disable auth on pypi server
10-
#
11-
# cleint use: pip install --index http://192.168.1.20:4880 --trusted-host 192.168.1.20 icloudpd
12-
13-
# linux
14-
twine upload --repository-url $1 --non-interactive -u bogus -p bogus dist/icloudpd-1.17.0-py2.py3-none-manylinux*.whl dist/icloudpd-1.17.0-py2.py3-none-macos*.whl dist/icloudpd-1.17.0-py2.py3-none-win*.whl dist/icloudpd-1.17.0-py3-none-any.whl
1+
#!/bin/bash
2+
set -euo pipefail
3+
4+
# dev script
5+
# expecting dist/binary_dist to be set
6+
# required param registry_url
7+
#
8+
# prereq
9+
# disable auth on pypi server
10+
#
11+
# cleint use: pip install --index http://192.168.1.20:4880 --trusted-host 192.168.1.20 icloudpd
12+
13+
# linux
14+
twine upload --repository-url $1 --non-interactive -u bogus -p bogus dist/icloudpd-1.17.1-py2.py3-none-manylinux*.whl dist/icloudpd-1.17.1-py2.py3-none-macos*.whl dist/icloudpd-1.17.1-py2.py3-none-win*.whl dist/icloudpd-1.17.1-py3-none-any.whl

0 commit comments

Comments
 (0)