mandarons / icloud-docker

Dockerized iCloud Client - make a local copy of your iCloud documents and photos, and keep it automatically up-to-date.
BSD 3-Clause "New" or "Revised" License
1.07k stars 50 forks source link

[FEATURE] iCloud Photos Shared Library Support #106

Closed coughlanio closed 10 months ago

coughlanio commented 1 year ago

Use case As an iOS 16 user, I want the ability to backup both shared and personal photo libraries

Describe the solution you'd like I had a quick look at icloudpy and I wasn't able to find any references to iOS 16's shared photo library feature. I'm currently looking for a tool that will allow me to do so.

Describe alternatives you've considered I currently use icloudpd, but it ran into some issues with shared libraries, so the feature was removed from main.

Additional context https://github.com/boredazfcuk/docker-icloudpd/issues/239

tymmej commented 11 months ago

Recently iCloud-drive-docker added support for Shared libraries.

Using pyicloud_pd from that project I hacked initial support for shared libraries: https://github.com/tymmej/icloud-drive-docker/tree/shared_library

Currently there's some limitations:

I wanted to ask if there's any plans to support shared libraries. If yes should we add support for shared libraries to icloudpy or use pyicloud_pd? @mandarons do you have any thoughts what should be next steps?

mandarons commented 11 months ago

Absolutely! In general, whatever you see in next-gen milestone is planned to be done in near future. Shared Libraries support is one of them.

For this feature, we need to split the implementation in two - icloudpy and iCloud-drive-docker projects. Not sure what needs to be changed in iCloud-drive-docker just yet but icloudpy certainly needs to be changed.

tymmej commented 11 months ago

Changes to iCloud-drive-docker seems minimal (using pyicloud_pd):

-                album=photos.albums[album],
+                album=photos.libraries[library].albums[album],

in 3 places in sync_photos.py and few lines to add support for library key in config.yaml.

I did not analyze library changes.

mandarons commented 11 months ago

Great. Looks like this can be targeted to 1.16.0 release.

mandarons commented 11 months ago

Here is equivalent issue for icloudpy https://github.com/mandarons/icloudpy/issues/13 (for reference)

tymmej commented 11 months ago

I created initial PR: https://github.com/mandarons/icloud-drive-docker/pull/156