MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    New Module to download photos from Apple iCloud

    Scheduled Pinned Locked Moved Entertainment
    13 Posts 3 Posters 666 Views 4 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • msimon360M
      msimon360 @Bungle68
      last edited by msimon360

      @Bungle68 Thanks let me know how it works for you. A few things I have found so far. I am using it with MMM-ImagesPhotos. When I add photos to the Album they sync to the uploads directory but they don’t display until I restart mm. It may just be my config values. Still testing. Also if I remove a photo from the Album a blank is shown for the removed photo until MMM-ImagesPhotos refreshes. I guess this is expected. I am looking into sending a Notification to force a refresh.

      S 1 Reply Last reply
      Reply Quote 0
      • S
        sdetweil @msimon360
        last edited by sdetweil

        @msimon360 imagesphotos should refresh its list of images every 60 seconds by default
        I use it linked to a file share on my nas
        Because there are so many pics no idea when the new pic will appear, add random on to that and it’s worse for predictably

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        msimon360M 1 Reply Last reply
        Reply Quote 0
        • msimon360M
          msimon360 @sdetweil
          last edited by

          @sdetweil I was testing on an album with only 4 photos and set to sequential. What I found, with help of Claude, was Before the Dec 2023 fetch rewrite, every completed request did:

          if (retry) {
            self.scheduleUpdate(self.loaded ? -1 : self.config.retryDelay);
          }
          

          After the rewrite it became:

          if (!photosResponse.ok) {
            if (retry) self.scheduleUpdate(...);
          }
          

          So the directory list only refreshed on HTTP failure, not every getInterval. I have an updated MMM-ImagesPhotos.js with a fix but I don’t know the best way to send it. Would you like a diff, patch, GitHub branch, other?

          S 1 Reply Last reply
          Reply Quote 0
          • S
            sdetweil @msimon360
            last edited by

            @msimon360 ImagePhotos isn’t mine, I have a fork…

            so, generally how you do this , for any change to any repo on github

            on github, find the source module repo
            make a fork (copy on YOUR github)
            checkout your fork
            make a new branch
            make the changes
            commit to local branch
            push to your github fork
            github will see this and offer to create a PULL request to the original source , and the author can execute that PULL , from yours to theirs (merge is the operation)

            once its merged, then you can delete your branch
            and then sync the source to your fork (if you still want the fork)
            git pull on your fork to get the update,
            OR
            delete your local copy of the fork, and redownload the original repo again
            and maybe delete your fork on github, if you think you will never need it again

            as for the bug

            retry is a bad choice of variable, if its not in a failure path!.. lol…

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            msimon360M 1 Reply Last reply
            Reply Quote 0
            • msimon360M
              msimon360 @sdetweil
              last edited by

              @sdetweil Thanks for the detailed instructions. I am using your fork and I made the pull request. The only files changed are MMM-ImagesPhotos.js and I put my GitHub link in the README.md.

              S 1 Reply Last reply
              Reply Quote 0
              • S
                sdetweil @msimon360
                last edited by

                @msimon360 merged… also merged support for apple HEIC images…

                git pull
                to get the latest
                or sync your fork, then git pull

                Sam

                How to add modules

                learning how to use browser developers window for css changes

                msimon360M 1 Reply Last reply
                Reply Quote 0
                • msimon360M
                  msimon360 @sdetweil
                  last edited by

                  @sdetweil I gave it a try and no photos displayed. I went back to my repo. The explanation I got from AI was this;
                  Why photos disappeared
                  non-fullscreen (bottom_center) crashes in getDomnotFS because EXIF is appended to this.wrapper (fullscreen-only) instead of the local wrapper. With default showExifDate: true, getDom throws → blank module.

                  S 1 Reply Last reply
                  Reply Quote 0
                  • S
                    sdetweil @msimon360
                    last edited by

                    @msimon360 ok. Set the showexif: false

                    Will review

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

                    S 1 Reply Last reply
                    Reply Quote 0
                    • S
                      sdetweil @sdetweil
                      last edited by

                      I fixed the crash, git pull

                      Sam

                      How to add modules

                      learning how to use browser developers window for css changes

                      msimon360M 1 Reply Last reply
                      Reply Quote 0
                      • msimon360M
                        msimon360 @sdetweil
                        last edited by

                        @sdetweil It still failed to show photos. I merged the latest sdetweil/MMM-ImagesPhotos master into my fork and pushed it to https://github.com/msimon360/MMM-ImagesPhotos (6bb682d). The changes below are working on my Raspberry Pi, where MMM-iCloudPhotos drops files into uploads and the module is not fullscreen.

                        MMM-ImagesPhotos.js

                        getPhotos() requests /MMM-ImagesPhotos/photos/?t= with cache: “no-store”, so the browser does not reuse an old photo list.
                        After a successful fetch it always calls scheduleUpdate(), so getInterval keeps rereading the folder. Previously the next read was scheduled only when the response failed, so new uploads never appeared.
                        A failed fetch retries after retryDelay.
                        notificationReceived() reloads the list when it receives MMM_IMAGESPHOTOS_REFRESH. That is what MMM-iCloudPhotos sends after a sync.
                        scheduleUpdate() clears any pending refresh timer before setting the next one.
                        In the non-fullscreen layout, the EXIF date is appended to the local wrapper. this.wrapper exists only for fullscreen, so the old this.wrapper.appendChild(exifDate) threw when the module was in a normal region such as bottom_center.
                        Both the normal and fullscreen city lookups check photoImage.lat before reading .length, so a photo with no GPS data does not crash.
                        The default for showExifDate stays false, from upstream.

                        node_helper.js

                        extraRoutes() registers the photo routes once per module id.
                        The photo-list response sets Cache-Control: no-store.
                        getPhotosImages() reads EXIF per file inside its own try/catch. A file with no EXIF, or a parse error, is still added to the list with empty date and coordinates.
                        The list is always sent, including when the EXIF loop fails. Upstream’s outer try did not see errors inside the async EXIF loop, so the response could never be sent and the slideshow never started.

                        README.md

                        Notes that a failed EXIF read no longer blocks the slideshow, that the folder is refreshed on getInterval, and that other modules can send MMM_IMAGESPHOTOS_REFRESH.
                        package.json

                        Version is 0.3.0.
                        Repository URL is https://github.com/msimon360/MMM-ImagesPhotos.
                        Mark

                        S 1 Reply Last reply
                        Reply Quote 0
                        • S
                          sdetweil @msimon360
                          last edited by

                          @msimon360 thanks… I merged your code…

                          Sam

                          How to add modules

                          learning how to use browser developers window for css changes

                          1 Reply Last reply
                          Reply Quote 0

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Register Login
                          • 1 / 1
                          • First post
                            Last post
                          Enjoying MagicMirror? Please consider a donation!
                          MagicMirror created by Michael Teeuw.
                          Forum managed by Sam, technical setup by Karsten.
                          This forum is using NodeBB as its core | Contributors
                          Contact | Privacy Policy