mandarons / icloud-drive-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
985 stars 47 forks source link

[FEATURE] iCloud Photos Shared Library Support #106

Closed coughlanio closed 8 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 9 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 9 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 9 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 9 months ago

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

mandarons commented 9 months ago

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

tymmej commented 9 months ago

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