ow / samsung-frame-art

A small script that makes it easy to fling a folder of images onto the Samsung Frame TV
458 stars 23 forks source link

Samsung Frame Art Mode++

TV with some art on it

I love the Samsung Frame TV—which is designed to look like art when it's off—but I got tired of paying a monthly fee for the official art. I also found uploading images to it manually to be tedious, especially when using a very large set of images, like those from Google's Earth View image library.

This Python script allows you to change your Samsung Frame's art based on a folder of images on your computer. The script picks an image from folder on your computer, then sends it to your TV and sets it as the active image automatically—it also does its best to try not repeatedly upload the same photo to your TV.

You can use this script with a folder of thousands of images to have your Samsung Frame TV change art constantly, for free. All you need is your own images!

You can choose between a 'randomizer' mode that changes the image each time the script is run, or a bulk upload mode that puts all of your images on the TV at once and use the internal slideshow mode to have them shuffle.

Using the script

Note: I have tested this with the 2020 and 2021 Samsung Frame TVs, which I own. I am not sure if it works with other TVs yet—let me know if it works on your TV if it isn't listed here. There is a rumor that the 2022 Frame TVs no longer allow art mode to work with the API—if you try this with a 2022 Frame TV and it works (or doesn't) let me know; I probably can't help but it would be good for others to know.

Randomly change art mode

This is the mode I originally built this for, where a Raspberry Pi or something on your network runs the script and chooses a random image each time it runs. I prefer this mode because it allows me to just keep adding images and eventually they'll show up as art.

To get images to change on a schedule: If you have a Raspberry Pi or other computer that is always on, you could set up a cronjob to change it on a regular rotation! I do this on a Mac Mini, so these are the steps I used for that:

Bulk upload mode

This mode uploads all of the photos in the /images directory to your TV—which is great if you'd rather just use the TV's internal slideshow mode. Once you've uploaded all of your photos, just go to 'my images' on your TV and choose the shuffle icon. Each time you run this script in bulk mode, as long as you have kept the uploaded_files.json intact, it'll check for anything new and sling that to your TV.

Warning: uploading a lot of images may take a long time.

To run bulk upload mode: python3 art.py --upload-all

Need images?

  1. I originally wanted to do this with the Google Earth View images, which are lovely and of which there are many thousands of images. I can't distribute those, but you can learn how to download these here—they work really well with this library.
  2. mmargauxx made an amazing version of this that allows you directly download images from the Rijsmuseum's API, then run the art changer :)

Troubleshooting

  1. Check if you added the IP address of your TV in art.py!
  2. If it doesn't work, check your TV responds by going to your TV's URL in the browser: http://YOUR_IP_HERE:8001/api/v2/ — if you get a response that's a big messy blob of data, your TV is definitely reachable.
  3. If the script locks up it's likely you haven't accepted the permissions request on your TV. If you did accept the permissions, you can check if the script can reach your TV by running: python3 art.py --debug

If you don't get an error running in debug mode, something else is going on and you should file an issue!

Caveats

To-Do