Building a YouTube Video Upload Tool Using Rust and AWS | Chill Coding Session - Episode 199
In this stream, I work on a Rust-based backend tool that automates uploading videos from S3 to YouTube. Specifically, I take a deep dive into setting up an upload feature using AWS services like DynamoDB and S3, along with discussing Rust's file handling, result types, and enums. This tool is part of my larger 'Glowing Telegram' project, aimed at streamlining video processing and publishing workflows for my Twitch streams.
I start by outlining the problem: designing an efficient method to retrieve episode metadata from DynamoDB, download a video file from S3, and seamlessly upload it to YouTube using their API. Implementing efficient retries in case of failures is a key focus, along with leveraging Rust’s advanced features like async and match expressions for error handling.
Some highlights from the stream include:
Refactoring code for better modularity and readability.
Debugging and discussing the intricacies of converting DynamoDB records to Rust structs.
Exploring efficient retry logic for resumable uploads using Rust loops.
Chatting about the pros and cons of enums in Rust versus TypeScript.
Sharing insights on my past experience as a freelancer and developer.
In between coding, I also answer questions from the chat, provide tips on handling merge conflicts, and talk about potential future plans for the project, such as creating YouTube shorts and publishing reusable Rust crates. We touch on tools like AWS Step Functions for orchestration and discuss the architecture of microservices versus monolithic systems.
Stick around to see how I break down complex problems into manageable chunks, my coding philosophy, and some behind-the-scenes insights into developing open-source projects. Whether you're a Rust developer, someone interested in AWS or YouTube automation, or just curious about coding workflows, there’s something for you here.
🔗 Check out my Twitch channel for more streams: https://www.twitch.tv/saebyn
GitHub: https://github.com/saebyn
Discord: https://discord.gg/N7xfy7PyHs