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.
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.
pip3 install "git+https://github.com/xchwarze/samsung-tv-ws-api.git#egg=samsungtvws[async,encrypted]"
tv = SamsungTVWS('192.168.0.9')
in art.py
to your own IP address./images
python3 art.py
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.
python3 art.py
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:
art.sh
then put something like this in it:
cd /Users/your-username/samsung-frame-art && /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 /Users/your-username/samsung-frame-art/art.py
chmod +x art.sh
crontab -e
that runs regularly. I do mine every 12 hours, so it looks like this: 0 */12 * * * /Users/your-username/samsung-frame-art/art.sh
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
art.py
! 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.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!
uploaded_files.json
— if you run the script again and the file is already on the TV, the script will ensure it's not duplicated repeatedly on the TV.