Synchronize shared iCloud photo albums with your Netgear Meural Canvas.
The Netgear Meural Canvas is a digital photo frame which allows you to display your own photos, or photos from their library. While it has the ability to manually upload photos or link a iOS photo library to it, their software tends to choke on iOS Live Photos & those taken in portrait mode. Using their app's sync tool for an album of 204 photos, I was only able to get 134 of them to upload properly - with no option to retry or see the ones which had failed.
This docker image downloads the highest resolution images available in a shared iCloud album as stills (converting Live/Portrait photos to jpeg), and uploads them via api to Meural while also linking them to an album. It will also delete images from Meural which have been removed from the iCloud album.
Note: In order to access the iCloud album, it must first be shared with a public link. The link generated allows public viewing of the album, but only to those which are given the URL.
The as of June 2023, the Meural app seems to have issues syncing certain types of images in a linked iOS album. Live Photos & photos taken in Portrait mode seem to cause it issue, with the items being skipped. When skipped, theres no indication of WHAT was skipped. Therefore, I built out this tool which actually works.
Yes. Whenever you delete an item in your iCloud album, that item will be removed from Meural (and therefore all associated playlists) when the next sync occurs.
No, and this is by design. As an example, I have a shared album which my wife and I both post images to. These images are synced to multiple meural playlists, which serve different purposes. An image that suits one playlist may not suit the second, and so we remove the image from the second playlist. However, the image should remain in my Meural uploads as it is still displayed in the first playlist.
To re-sync an item to Meural, you must first delete the item from your shared iCloud album, and wait for the next sync to occur. Once MeuralCanvas-iCloudSync
considers the item to be deleted, re-add the image to your album. On the next sync, the image will be re-uploaded to Meural.
docker-compose (recommended, click here for more info)
---
version: "3.9"
services:
meural-canvas-icloud-sync:
image: ghcr.io/mikefez/meuralcanvas-icloudsync:main
container_name: meural-canvas-icloud-sync
environment:
- MEURAL_USERNAME=XXXX
- MEURAL_PASSWORD=XXXX
- UPDATE_FREQUENCY_MINS=30
# Optional env vars
- DRY_RUN=true
- VERIFY_SSL_CERTS=true
- LOG_LEVEL=INFO
volumes:
- path/to/config/dir:/config
restart: unless-stopped
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal>
respectively. For example, -p 8080:80
would expose port 80
from inside the container to be accessible from the host's IP on port 8080
outside the container.
Note: There are no defaults for the parameters mentioned here - each one MUST be provided
Parameter | Function |
---|---|
-e MEURAL_USERNAME |
Your Netgear Meural email address. |
-e MEURAL_PASSWORD |
Your Netgear Meural email password. |
-e UPDATE_FREQUENCY_MINS |
The frequency between syncronization runs. |
These parameters do not have to be provided, as they have defaults
| Parameter | Default | Function |
| :----: | --- |
| -e DRY_RUN
| false
| Will output actions (deleting/uploading) that would have occurred. |
| -e VERIFY_SSL_CERTS
| true
| Ignore SSL certs for iCloud & Meural when enabled. |
| -e LOG_LEVEL
| INFO
| The level of logging which should be outputted. |
Configuration is managed via config.yaml
, which should be mounted into the /config
directory. This file must exist prior to launching the container, and will be validated before syncing occurs. An example of the file can be seen here:
sync:
- icloud_album: "https://hyperlink_to_album_1"
meural_playlists:
- "Playlist to sync to"
- icloud_album: "https://hyperlink_to_album_2"
meural_playlists:
- "Playlist to sync to"
- "Another playlist to sync to"