Procedurally Generated YouTube Channel

Similar projects worth following
NumberChannel is a YouTube Channel that makes its own videos. Inspired by Number Stations used for espionage, every half hour a new video is uploaded, similar to the last but not the same.
It's a technical proof of concept for bigger and better things held together with python and duct tape, all running on an old Core 2 Duo Toshiba laptop that is currently missing a screen.

What is this?

Example Number Channel Output:

Making NumberChannel was designed as a learning experience so that I could gain the basic knowledge needed to make more complicated automated channels in the future. To do this, I broke down what I wanted the channel to do into it's basic steps.

Step 1: Generate the 10 digit number. 

I chose 10 digits because US telephone numbers have 10 digits and, to my ear, it sounded better than a 9 or 11 digit number. And 10 is a nice round number, besides.

Step 2: Generate the Text to Speech

This involved learning about how to use Googles TTS API, which was surprisingly easier than I thought.

Step 3: Put the audio all together.

So this was an eye opening aspect and, I think, one of the most powerful parts of this whole thing. I needed to put a jingle at the front and back of the TTS and, LO, there was a python library for that: PyDub. The cool thing about this is that if, in the future, I want to switch to human performed numbers, it will be trivial to stitch the pieces together using this same method.

Step 4: Generate the image.

This was the hardest part. The documentation for PIL is very difficult for beginners to understand.

Step 5: Combine the image and audio into an MP4

Literally the easiest part. FFMPEG for the win!

Step 6: Upload it to YouTube

This part was kinda tricky. The trickiness came, mostly, from figuring out the sweet spot in terms of upload frequency because there is a daily upload limit through the API. If there wasn't, I could upload a video every 43 seconds, even on that old Core 2 Duo. But it looks like uploading every half hour gives enough cooldown time for the API. You might even say the API gets a chance to REST. 

Image result for bad joke dogTaking what I learned doing this, I'm looking forward to experimenting more with automated YouTube Channels.

Full Project

x-zip-compressed - 16.80 MB - 11/13/2017 at 10:57


  • 1
    How to set it up.

    Put your YouTube API key into the Client Secrets JSON file, then run it once to authenticate.

    From then on out, run the Loop.Bat to upload a new video every half hour.

View all instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates