The 90s TV is an interactive art piece that pulls at the heart strings of any 90s kid. It is a physically working TV complete with 50 channels and over 500 hours of content- commercials and all.
Inspiration
I drew inspiration for this project from the website my90stv.com. Upon finding this website I was immediately enamored with it. With today’s instant gratification, infinite choices, and commercial free content offered by streaming services, I fell back in love with the old ways. You are limited to the channels available. There is no pause, rewind, or skip. And if there’s something playing on the other channels, well, too bad. You don’t get to watch every channel all at once. As I sat flipping through channels on my chrome browser I realized something was lacking. Something… physical.
And so began my efforts to re-imagine the 90s TV website. The parameters would be simple:
- It must be a an old CRT set
- It must and play content as you would expect from channel surfing back in the day
I also wanted this to be robust enough to take or display anywhere. That meant absolutely no configuration and no internet connections. It has to be plug and play interactive art.
Content
I have experience making emulators using raspberry pi’s for fun, so I knew I could cram a decent amount of content on an SD card and program playback functionality. But what content? Where did this website get all this content, anyway?
I started studying the front-end html and javascript code for clues. I found a javascript file that updates an iframe and buried in the iframe is a link to the content.
<a class="ytp-watermark yt-uix-sessionlink" target="_blank" aria-label="Watch on www.youtube.com" data-sessionlink="feature=player-watermark" data-layer="8" href="https://www.youtube.com/watch?v=DnqEu0lyxSU" style="">
I realized all the content is from YouTube and I could leverage this site to get it. So in a very hacky way, I wrote an automation script using AutoHotKey to tell the mouse on my Windows machine to click the โupโ channel on the website, inspect the iframe element in the browser, copy the youtube link, and paste it into a spreadsheet. Do this repeatedly for about 24 hours. The next day I had a spreadsheet containing links to what I believe is all the content from that site. After that, I used a tool I found to download youtube videos in bulk onto my local machine.
Content acquired!
Coding
Now I had to decide how exactly I was going to display this content. I found OMX player to be the only suitable solution for the Raspberry Pi 3. I wonโt go into the python code, partly because it may be a little boring to talk about, and partly because itโs not coded very elegantly. I had never intended on sharing it, but for those that are interested, hereโs the github repo.
The hard part was making the content behave the way you would expect a cable TV to behave. That is to say, time passes normally on all channels simultaneously. The Raspberry Pi would run out of memory if 50 instances of OMX player were running simultaneously, so I wrote an initialization function that analyzes the length of the combined content in each folder. It spits out a file with the start times of each video and an overall length of time for the channel. Kind of like an index for a large book. It saves this information in a configuration file and upon normal startup, the python script references this file when the channel button is pressed so it knows which video file to play, when, and how far forward it must seek to give the illusion of time passing on each channel.
Hardware
The Raspberry Pi 3 is the perfect device for this project, in part because of the GPIO (General Purpose Input Output) pins. They allow you to hook it up to hardware.
I knew the channel buttons were just momentary switches wired to a PCB in the TV somewhere, so I rewired them to the GPIO pins and presto change-o, with the help of the pygame library, I had physical buttons to change channels!
Finishing Touches
To add a little flair, I did what the 90stv website did and added static between the channels. It fills in the dead air when the video is being loaded between channel changing. I also added channel numbers, which was a little tricky. To accomplish this, I toggled on/off subtitles that are generated programmatically between channel changes.
90s TV Interactive Art
Thatโs it folks! I felt like diving a little deeper into this project because it touched on a lot of different resources and tools. The combination of which, Iโve never seen used on any project. The 90โs TV interactive art was displayed from 2020-2021 in the interactive museum the Giggle Box in Missoula, Montana. It is currently available for display, or rent for anyone interested in some retro interactive art.ย