Skip to main content

Crate youtube_uploader

Crate youtube_uploader 

Source
Expand description

§youtube-uploader

A Rust library for uploading videos to YouTube via the Data API v3 resumable upload endpoint. Run it, it uploads, it exits — no daemon, no background process.

§Quick Start

use std::sync::Arc;
use tokio::sync::Mutex;
use youtube_uploader::{
    CredentialStore, YouTubeUploader, VideoUpload, Visibility, StderrProgressListener,
};

let store = Arc::new(Mutex::new(CredentialStore::load("my-passphrase")?));
let youtube = YouTubeUploader::new(store, "my-passphrase", "youtube");
let progress = Arc::new(StderrProgressListener::new());

let video = VideoUpload::new("/path/to/video.mp4", "My Video Title")
    .with_description("Video description")
    .with_tags(vec!["tag1".to_string(), "tag2".to_string()])
    .with_visibility(Visibility::Private);

let result = youtube.upload(&video, Some(progress)).await?;
println!("Uploaded: {} (ID: {})", result.url, result.video_id);

§Features

  • Resumable chunked upload with 308 resume support and crash recovery
  • Multi-channel workspaces — upload to multiple YouTube accounts from one machine
  • Upload profiles — TOML-based presets for reusable upload defaults
  • Per-video metadata TOML — AI-friendly .meta.toml files for automation
  • Encrypted credential storage — AES-256-GCM, PBKDF2 100K, zeroize on drop
  • Default visibility = Private — uploads never accidentally go public

§Architecture

ModulePurpose
YouTubeUploaderResumable upload, token refresh, delete, channel info
VideoUploadVideo metadata builder (title, description, tags, visibility, etc.)
CredentialStoreEncrypted on-disk credential storage with workspaces
UploadProfileNamed TOML presets for upload defaults
VideoMetaPer-video .meta.toml metadata
UploadStateCrash recovery state for resumable uploads
ProgressListenerTrait for custom upload progress callbacks

§Resolution Order

When multiple sources provide the same field:

CLI flags > meta TOML > profile TOML > built-in defaults (private)

Tags are merged (profile + video), not replaced.

Re-exports§

pub use config::CredentialStore;
pub use config::PlatformCredentials;
pub use error::UploadError;
pub use net::is_private_ip;
pub use profile::UploadProfile;
pub use profile::VideoMeta;
pub use progress::NoopProgressListener;
pub use progress::ProgressListener;
pub use progress::StderrProgressListener;
pub use resume::UploadState;
pub use upload::License;
pub use upload::UploadResult;
pub use upload::VideoUpload;
pub use upload::Visibility;
pub use youtube::YouTubeUploader;

Modules§

auth
config
error
net
profile
Upload profiles — reusable presets stored as TOML files.
progress
resume
Client-side upload resume support.
upload
validation
youtube

Structs§

Zeroizing
Zeroizing is a a wrapper for any Z: Zeroize type which implements a Drop handler which zeroizes dropped values.