Any TV Art GitHub

Set it up without AI.

Every step, by hand, on a Mac. Copy each command into Terminal, press Return, and wait for it to finish before the next one.

What you need

  • A Google TV or Android TV, or a Samsung with Art Mode (2021 or newer), on your home Wi-Fi.
  • A Mac on the same Wi-Fi. Linux works the same way and is in beta. Windows is not supported.
  • Google Chrome on the Mac. It draws the picture.
  • A few of your photos, as JPEG or iPhone photos.
  • Google TV only: the TV app has no download yet, so you build it once on the Mac with free tools from Google and Eclipse (step G4).

There is no phone only setup. A Google TV only lets a computer change its screensaver.

1. On the Mac, for every TV

  1. Open Terminal

    Applications, Utilities, Terminal. Check Python is 3.10 or newer:

    python3 --version

    If the Mac offers to install the command line developer tools, choose Install and wait. If Python is missing or older, install Homebrew, then run brew install python@3.12.

  2. Get the code

    git clone https://github.com/Seagey/any-tv-art.git && cd any-tv-art

    Every command from here on runs inside this any-tv-art folder. If you close Terminal, open it again and run cd any-tv-art first.

  3. Install it in its own folder

    python3 -m venv .venv && .venv/bin/pip install -r requirements.txt && .venv/bin/pip install -e .

    This stays inside any-tv-art. If pillow-heif will not install, delete that line from requirements.txt and run it again. You only lose iPhone .heic photos.

  4. Add your photos

    mkdir photos && open photos

    Drag your photos into the folder that opens. Name one 12-25 tree.jpg and it shows on Christmas Day each year.

  5. Make your settings file

    cp config.example.json config.json && open -e config.json

    In TextEdit, first choose Edit, Substitutions and untick Smart Quotes, or the file will stop working. Then change:

    • "timezone" to yours, for example "Australia/Sydney".
    • "place" to your suburb or town, never a street, for the weather.
    • Under "tvs" there are two example TVs, each from a { to its }. "Lounge" is the Google TV, "Hall" the Samsung. Keep the one for your kind of TV and delete the other, with the comma between them, so no comma is left before the closing ].
    • In the one you kept, set "size_inch" to your screen size. Leave "ip" for now.
    • Delete the example reminder ("Bins out tonight") unless you want it.

    Save and close. If any command later says config.json: ..., it names the line to fix. Every setting is explained here.

  6. See your picture on the Mac first

    .venv/bin/anytvart preview && open data/preview-*.png

    The picture opens on the Mac with your photo, today's date and your weather. Nothing is sent to the TV. Not happy with it? Change "look" in config.json and run it again.

Now follow the steps for your TV: Google TV or Samsung.

2. Google TV and Android TV

The art becomes the TV's own screensaver. These steps are the no computer way: once it is set up, the Mac can be switched off.

  1. Install Google's adb tool

    brew install --cask android-platform-tools

    Check it with adb version.

  2. Turn on network debugging on the TV

    With the TV remote: Settings, System, About, then press Android TV OS build seven times. Go back to System, Developer options and turn on USB debugging, then Network debugging.

    Older Android TVs: Settings, Device Preferences, About, press Build seven times. Names move between makers. If you only see Wireless debugging with a pairing code, see troubleshooting.

  3. Find the TV and add its address

    .venv/bin/anytvart identify

    It looks for about 20 seconds and changes nothing. Copy the address it prints next to android into "ip" in config.json, then run:

    .venv/bin/anytvart read --tv "Lounge"

    The TV asks Allow USB debugging?: choose Always allow. If the Mac asks to find devices on your local network, choose Allow. Giving the TV a fixed address in your router stops it changing later.

  4. Build the TV app, once

    There is no download of the TV app yet, so the Mac builds it from the code you just got. First the free tools it needs, Java 21 and Google's Android SDK:

    brew install --cask temurin@21 android-commandlinetools
    sdkmanager --sdk_root="$HOME/Library/Android/sdk" "platforms;android-34" "build-tools;34.0.0"

    Type y to accept Google's licence when it asks. Then build the app:

    sh scripts/build-apk.sh

    The first build downloads its own build tool and takes a few minutes. It is done when it prints Built: and a path ending in dist/any-tv-art.apk.

  5. Read the plan, then put the art on

    .venv/bin/anytvart plan --tv "Lounge" --mode alone

    It lists every setting it would change. Nothing changes yet. When you are happy:

    .venv/bin/anytvart apply --tv "Lounge" --mode alone

    Type yes when it asks. It installs the app, copies up to 60 of your photos onto the TV, writes down every old setting for the undo, and sets art after 10 minutes idle.

  6. Try it

    .venv/bin/anytvart show --tv "Lounge"

    The art opens now. Press any button to go back to TV. From now on it appears by itself 10 minutes after the last button press.

Want the calendar and reminders too?

Those need a Mac that stays on, running the bridge. Set "bridge": {"url": ...} to the Mac's address, use --mode bridge in step G5, and run .venv/bin/anytvart bridge. The Google TV guide has the detail.

2. Samsung with Art Mode

A fresh matted picture goes into Samsung's real Art Mode. No app to build. For a new picture every day, the Mac stays on.

  1. Find the TV and add its address

    .venv/bin/anytvart identify

    It says whether the TV has Art Mode and its year. Copy the address into "ip" in config.json (the "Hall" line, with "kind": "samsung-art").

  2. Pair the Mac with the TV

    .venv/bin/anytvart pair --tv "Hall"

    The TV asks to allow any-tv-art. You have about 30 seconds to choose Allow. If nothing appears: Settings, General, External Device Manager, Device Connection Manager, Access Notification to First Time Only, and try again.

  3. Send today's picture

    .venv/bin/anytvart picture --tv "Hall"

    It makes the picture, uploads it to My Photos in 10 to 15 seconds and shows it. Your own photos are never touched.

  4. A new picture every morning

    sh scripts/service.sh install

    This keeps the bridge running on the Mac and starts it again after a restart. From 5 am it sends a new picture once the TV answers. If you would rather watch it run, use .venv/bin/anytvart bridge in a Terminal window instead.

  5. Check two TV settings

    Auto Power Off off (Settings, General, Eco Solution), or the TV switches fully off and misses the picture. In Art Mode settings, Sleep After 15 or 30 minutes so the screen goes dark in an empty room.

    The Samsung guide lists the rest.

Remove it

.venv/bin/anytvart undo --tv "Lounge"

Use your TV's name from config.json and type yes. On Google TV every setting goes back and the app and its photos are removed. On a Samsung your own picture goes back on, then only the pictures this tool uploaded are deleted. Running it twice is harmless. To stop the daily picture on a Mac: sh scripts/service.sh remove.

Stuck? Troubleshooting covers the common ones, and the tester form reaches Josh. .venv/bin/anytvart report --tv "Lounge" makes a copy of your TV's details with addresses and names taken out.