Blame
c5163d | Tebby Dog | 2025-07-06 22:29:58 | 1 | # ๐ Subway Surfers Text-to-Video Converter |
2 | 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) |
|||
15f83e | Tebby Dog | 2025-07-13 04:53:01 | 3 | |
8181d1 | Tebby Dog | 2025-07-06 22:24:48 | 4 | 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. |
5 | ## ๐ What the Hell Is This? |
|||
6 | 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. |
|||
7 | You get: |
|||
8 | ๐ง smart content + ๐ฎ mindless gameplay = โ
actual retention (probably) |
|||
d44433 | Tebby Dog | 2025-07-06 22:27:36 | 9 | ## ๐ธ Screenshot |
ce198c | Tebby Dog | 2025-07-13 01:43:40 | 10 |  |
11 |  |
|||
12 |  |
|||
13 |  |
|||
14 |  |
|||
556e9c | Tebby Dog | 2025-07-13 01:41:46 | 15 |  |
8181d1 | Tebby Dog | 2025-07-06 22:24:48 | 16 | ## ๐ฏ Oh Hell Yeah, Features |
17 | - Converts your average web article into a **Subway Surfers-screaming-TikTok-style video** |
|||
18 | - Rips text straight from URLs |
|||
19 | - Slaps it on top of fast-ass gameplay |
|||
20 | - Bonus points: **speech-to-text powered by Vosk API** |
|||
21 | - Built with **Flask + OpenCV + goose3 + Python + zero chill** |
|||
22 | --- |
|||
23 | ## ๐ณ Running This Beast with Docker |
|||
149edb | Tebby Dog | 2025-07-13 04:52:18 | 24 | **Step 1:** Pull the image, because we're not building this crap from scratch: |
8181d1 | Tebby Dog | 2025-07-06 22:24:48 | 25 | ```sh |
26 | docker pull tebwritescode/subwaysurfers-text20:latest |
|||
27 | ``` |
|||
28 | **Step 2:** Get the Vosk brain model and unzip it: |
|||
29 | ```sh |
|||
30 | wget https://alphacephei.com/vosk/models/vosk-model-en-us-0.22.zip |
|||
31 | unzip vosk-model-en-us-0.22.zip -d ./ |
|||
32 | rm vosk-model-en-us-0.22.zip |
|||
33 | ``` |
|||
34 | **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. |
|||
995119 | Tebby Dog | 2025-07-13 04:53:59 | 35 | |
149edb | Tebby Dog | 2025-07-13 04:52:18 | 36 | **Step 4:** Let's ride: |
8181d1 | Tebby Dog | 2025-07-06 22:24:48 | 37 | ```sh |
38 | docker run -d --name subwaysurfers-text \ |
|||
39 | -v ./subwaysurfers/sources:/app/sources \ |
|||
40 | -v ./subwaysurfers/vosk-model-en-us-0.22:/app/static/vosk-model-en-us-0.22 \ |
|||
41 | -p 5000:5000 \ |
|||
42 | tebwritescode/subwaysurfers-text20:latest |
|||
43 | ``` |
|||
44 | **Step 5:** Fire up your browser and hit: |
|||
45 | ``` |
|||
46 | http://localhost:5000 |
|||
47 | ``` |
|||
48 | Get ready to weep tears of productivity as your article runs across a CGI train track. |
|||
49 | --- |
|||
149edb | Tebby Dog | 2025-07-13 04:52:18 | 50 | ## ๐ง Environment Variables For Control Freaks |
51 | Want to make this thing dance to your tune? Here are the variables you can tweak: |
|||
52 | ||||
53 | ```sh |
|||
54 | # Path to the Vosk TTS model |
|||
55 | MODEL_PATH=static/vosk-model-en-us-0.22 |
|||
56 | ||||
57 | # Where your Subway Surfers gameplay videos live |
|||
58 | SOURCE_VIDEO_DIR=sources |
|||
59 | ||||
60 | # Pick a random source video each time? |
|||
74a8c4 | Tebby Dog | 2025-07-13 04:55:23 | 61 | # Set to "false" if you want to use a specific file for SOURCE_VIDEO_DIR(sources/myfile.mp4) |
149edb | Tebby Dog | 2025-07-13 04:52:18 | 62 | RANDOM_SOURCE=true |
63 | ``` |
|||
64 | ||||
65 | Add them to your docker run command like a boss: |
|||
66 | ||||
67 | ```sh |
|||
68 | docker run -d --name subwaysurfers-text \ |
|||
69 | -e MODEL_PATH=static/custom-model \ |
|||
70 | -e RANDOM_SOURCE=false \ |
|||
71 | -e SOURCE_VIDEO_DIR=sources/myfile.mp4 \ |
|||
72 | -v ./subwaysurfers/sources:/app/sources \ |
|||
73 | -v ./subwaysurfers/vosk-model-en-us-0.22:/app/static/vosk-model-en-us-0.22 \ |
|||
74 | -p 5000:5000 \ |
|||
75 | tebwritescode/subwaysurfers-text20:latest |
|||
76 | ``` |
|||
8181d1 | Tebby Dog | 2025-07-06 22:24:48 | 77 | |
149edb | Tebby Dog | 2025-07-13 04:52:18 | 78 | Or in your docker-compose like a champion: |
79 | ||||
80 | ```yaml |
|||
81 | services: |
|||
82 | subwaysurfers-text: |
|||
83 | image: tebwritescode/subwaysurfers-text20:latest |
|||
84 | environment: |
|||
85 | - MODEL_PATH=static/vosk-model-en-us-0.22 |
|||
86 | - SOURCE_VIDEO_DIR=sources |
|||
87 | - RANDOM_SOURCE=true |
|||
88 | volumes: |
|||
89 | - <HOSTPATH>/sources:/app/sources |
|||
90 | - <HOSTPATH>/vosk-model-en-us-0.22:/app/static/vosk-model-en-us-0.22 |
|||
91 | ports: |
|||
92 | - "5000:5000" |
|||
93 | ``` |
|||
94 | --- |
|||
229f24 | Tebby Dog | 2025-07-06 22:28:20 | 95 | ## ๐ Using Docker Compose Like a True King ๐ |
8181d1 | Tebby Dog | 2025-07-06 22:24:48 | 96 | Replace `<HOSTPATH>` with the full path to where your god-tier video and Vosk model live. |
97 | ```yaml |
|||
98 | services: |
|||
99 | subwaysurfers-text: |
|||
100 | image: tebwritescode/subwaysurfers-text20:latest |
|||
101 | volumes: |
|||
102 | - <HOSTPATH>/sources:/app/sources |
|||
103 | - <HOSTPATH>/vosk-model-en-us-0.22:/app/static/vosk-model-en-us-0.22 |
|||
104 | ports: |
|||
105 | - "5000:5000" |
|||
106 | ``` |
|||
107 | Start it up: |
|||
108 | ```sh |
|||
109 | docker-compose up -d |
|||
110 | ``` |
|||
111 | 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. ๐ฒ |
|||
112 | --- |
|||
113 | ## ๐ The Dockerfile Straight-Up Breakdown |
|||
114 | - Uses a slimmed-down official Python image |
|||
115 | - Installs all the nasty dependencies (yes, even ffmpeg and build tools) |
|||
116 | - Brings in Homebrew in case you're feeling fancy |
|||
117 | - Copies the app, installs Python and brew packages |
|||
118 | - Runs Flask like it means it |
|||
119 | - Your container, your rules |
|||
120 | --- |
|||
121 | ## ๐ฎ Shit I Still Wanna Add |
|||
122 | - Drop-down to select different AI voices (because not every AI wants to sound like Siri on Ambien) |
|||
149edb | Tebby Dog | 2025-07-13 04:52:18 | 123 | - ~NVIDIA GPU acceleration (because some of you have beefy rigs)~ Nixed this shit, GPU transcoding is slow AF |
124 | - ~Fix that annoying subtitle-stuck bug nobody asked for~ I think I squashed this fucker |
|||
8181d1 | Tebby Dog | 2025-07-06 22:24:48 | 125 | --- |
126 | ## ๐ง Want to Run It Without Docker? |
|||
149edb | Tebby Dog | 2025-07-13 04:52:18 | 127 | You rebel. Here's the repo for bare-metal installs: |
8181d1 | Tebby Dog | 2025-07-06 22:24:48 | 128 | ๐ https://github.com/tebwritescode/subwaysurfers-text-multi |
129 | --- |
|||
130 | ## ๐ Big-Ass Credit Section |
|||
131 | 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. |
|||
132 | --- |
|||
133 | ## โ ๏ธ Final Note from His Royal Freshnessโข |
|||
134 | 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. |
|||
135 | Enjoy learning like a hyper-caffeinated teenager on TikTok ๐ |