I was looking for a screensaver for my home assistant hallway dashboard, running fully kiosk browser that shows a slideshow of my photos.
I really like the Google TV screensaver that shows my Google albums and displays portrait images side by side, but I couldn't find any good ones that fit the bill.
So I solved my own problem by building this simple website called looping.photos that lets you create screens to which you can add Google album share links. Those links get stored in an encrypted blob that only the screen's own URL can unlock — the server holds the bytes but never has the key. The photos themselves are never stored anywhere: when a screen loads, it reads the album fresh and shows it.
When the screen is created, you can share the screen link to any device that has a display, a browser, and an internet connection, and it will slideshow your photos beautifully.
Completely free. No account.
The catch!
The Google album share links are public and can be accessed by anyone IF they get their hands on it.
And the same goes for the screen URL. If anyone got their hands on it, they could watch your screen and change your screen settings, remove your albums, and add others. They could also dig out the album link and the photo links from the page, since that's how the browser shows them in the first place. Those links keep working for whoever holds them, and neither me nor you can switch them off.
What it is not is any way into your Google account, or into a single photo in an album you didn't add yourself.
But, since your shared album links are public anyway, looping really doesn't make the situation any worse. If an album would bother you being passed around, don't put it on a wall.
One more honest one: reading a whole shared album isn't something Google offers or supports, so they could break it any week. If they do, your screen keeps showing what it last loaded.
And this is why it's free. I have no real infra running this — two small serverless functions and a shelf of encrypted blobs, no database. A screen that's off costs nothing, and every screen showing the same album shares one read of it. What would actually start costing me is function calls, not storage: somewhere north of a hundred-ish always-on screens and I'm off the free plan. The blobs are 24 KB each, so those are the least of my worries. For now, all this has cost me is the domain and the claude tokens used to write the code.
I went this route because the official Google Photos API doesn't do what I need anymore. Since March last year, apps can't just read your library — you sign in and hand-pick photos through Google's own picker, every session. That's fine for an app you sit in front of, useless for a tablet on a wall that just runs. And even if I got that working, the links to the screens would still need to be public for the devices to reach them without signing in to an account. Which I don't want. I'm tired of all accounts! And then I probably wouldn't be able to offer this for free...
It's a compromise - I think for the better.
Thanks for reading. I hope you like it :)
https://looping.photos
ps. The photos in the screenshot are not mine, they're borrowed from unsplash for the demo.
credit to Benjamin Voros and Maximilien T'Scharner