# ๐ Subway Surfers Text-to-Video Converter Skip the fairy-tale, just give me the code already --> [Click Here](https://teb.codes/2-Code/Docker/Subway-Surfers#using-docker-compose-like-a-true-king) Inspired by the absolute legend [danielbonkowsky/subwaysurfers-text](https://github.com/danielbonkowsky/subwaysurfers-text), this project throws some sauce on the original concept. If this container saves you time (or your sanity), go drop a star on his project already, damn it. ## ๐ What the Hell Is This? You ever try to focus on an article and your brain taps out after the second paragraph? Same. This little monster extracts text from a webpage and slaps it onto hyperactive **Subway Surfers** gameplay footageโturning dry, boring content into something your scrolling-addicted brain can actually sit through. Perfect for TikTok, ADHD, or just making studying suck less. You get: ๐ง smart content + ๐ฎ mindless gameplay = โ actual retention (probably) ## ๐ธ Screenshot       ## ๐ฏ Oh Hell Yeah, Features - Converts your average web article into a **Subway Surfers-screaming-TikTok-style video** - Rips text straight from URLs - Slaps it on top of fast-ass gameplay - Bonus points: **speech-to-text powered by Vosk API** - Built with **Flask + OpenCV + goose3 + Python + zero chill** --- ## ๐ณ Running This Beast with Docker **Step 1:** Pull the image, because we're not building this crap from scratch: ```sh docker pull tebwritescode/subwaysurfers-text20:latest ``` **Step 2:** Get the Vosk brain model and unzip it: ```sh wget https://alphacephei.com/vosk/models/vosk-model-en-us-0.22.zip unzip vosk-model-en-us-0.22.zip -d ./ rm vosk-model-en-us-0.22.zip ``` **Step 3:** Drop a gameplay video into `./sources` โ any `.mp4` will do. More videos = more fun. Only one? It'll reuse that sucker on every run. **Step 4:** Let's ride: ```sh docker run -d --name subwaysurfers-text \ -v ./subwaysurfers/sources:/app/sources \ -v ./subwaysurfers/vosk-model-en-us-0.22:/app/static/vosk-model-en-us-0.22 \ -p 5000:5000 \ tebwritescode/subwaysurfers-text20:latest ``` **Step 5:** Fire up your browser and hit: ``` http://localhost:5000 ``` Get ready to weep tears of productivity as your article runs across a CGI train track. --- ## ๐ง Environment Variables For Control Freaks Want to make this thing dance to your tune? Here are the variables you can tweak: ```sh # Path to the Vosk TTS model MODEL_PATH=static/vosk-model-en-us-0.22 # Where your Subway Surfers gameplay videos live SOURCE_VIDEO_DIR=sources # Pick a random source video each time? # Set to "false" if you want to use a specific file for SOURCE_VIDEO_DIR(sources/myfile.mp4) RANDOM_SOURCE=true ``` Add them to your docker run command like a boss: ```sh docker run -d --name subwaysurfers-text \ -e MODEL_PATH=static/custom-model \ -e RANDOM_SOURCE=false \ -e SOURCE_VIDEO_DIR=sources/myfile.mp4 \ -v ./subwaysurfers/sources:/app/sources \ -v ./subwaysurfers/vosk-model-en-us-0.22:/app/static/vosk-model-en-us-0.22 \ -p 5000:5000 \ tebwritescode/subwaysurfers-text20:latest ``` Or in your docker-compose like a champion: ```yaml services: subwaysurfers-text: image: tebwritescode/subwaysurfers-text20:latest environment: - MODEL_PATH=static/vosk-model-en-us-0.22 - SOURCE_VIDEO_DIR=sources - RANDOM_SOURCE=true volumes: - <HOSTPATH>/sources:/app/sources - <HOSTPATH>/vosk-model-en-us-0.22:/app/static/vosk-model-en-us-0.22 ports: - "5000:5000" ``` --- ## ๐ Using Docker Compose Like a True King ๐ Replace `<HOSTPATH>` with the full path to where your god-tier video and Vosk model live. ```yaml services: subwaysurfers-text: image: tebwritescode/subwaysurfers-text20:latest volumes: - <HOSTPATH>/sources:/app/sources - <HOSTPATH>/vosk-model-en-us-0.22:/app/static/vosk-model-en-us-0.22 ports: - "5000:5000" ``` Start it up: ```sh docker-compose up -d ``` Fun fact: if you only mount one `.mp4`, the app will always use that. Mount a folder of them? It picks a random vid each time. ๐ฒ --- ## ๐ The Dockerfile Straight-Up Breakdown - Uses a slimmed-down official Python image - Installs all the nasty dependencies (yes, even ffmpeg and build tools) - Brings in Homebrew in case you're feeling fancy - Copies the app, installs Python and brew packages - Runs Flask like it means it - Your container, your rules --- ## ๐ฎ Shit I Still Wanna Add - Drop-down to select different AI voices (because not every AI wants to sound like Siri on Ambien) - ~NVIDIA GPU acceleration (because some of you have beefy rigs)~ Nixed this shit, GPU transcoding is slow AF - ~Fix that annoying subtitle-stuck bug nobody asked for~ I think I squashed this fucker --- ## ๐ง Want to Run It Without Docker? You rebel. Here's the repo for bare-metal installs: ๐ https://github.com/tebwritescode/subwaysurfers-text-multi --- ## ๐ Big-Ass Credit Section Massive props to [danielbonkowsky](https://github.com/danielbonkowsky/subwaysurfers-text) for the core idea. This is just a remixed, Dockerized, slightly louder sibling. Go say thanks. --- ## โ ๏ธ Final Note from His Royal Freshnessโข Yeah, the container works. It does the job. But it's packing a little extra weight and could use a clean-up. If trimming containers gives you a tech boner, PRs are wide open. Enjoy learning like a hyper-caffeinated teenager on TikTok ๐