diff --git a/Dockerfile b/Dockerfile index 750227aee6..590f717bcc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,12 +2,13 @@ FROM ubuntu:focal as build ARG DEBIAN_FRONTEND=noninteractive -WORKDIR /tmp +WORKDIR /build RUN apt-get update \ && apt-get install -y \ build-essential \ curl \ + ffmpeg \ gdb \ libssl-dev \ libssl1.1 \ @@ -31,13 +32,17 @@ RUN $HOME/.cargo/bin/cargo fetch RUN set -x \ && mkdir -p src \ && echo 'fn main() { println!("rebuild me!"); }' > src/main.rs \ - && $HOME/.cargo/bin/cargo build + && $HOME/.cargo/bin/cargo build --release +# Static image assets +COPY assets/ assets/ + +# Code COPY src/ src/ # If the timestamps are older on actual src/ files than # cached "fake build" above, nothing gets built. RUN touch src/main.rs -RUN $HOME/.cargo/bin/cargo build +RUN $HOME/.cargo/bin/cargo build --release diff --git a/assets/sonic-full.png b/assets/sonic-full.png new file mode 100644 index 0000000000..9064e965d1 Binary files /dev/null and b/assets/sonic-full.png differ diff --git a/src/main.rs b/src/main.rs index 1e15f3c12c..bad748f9fd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,22 +9,29 @@ mod workers; use anyhow::bail; use crate::workers::{spawn_workers, Workload}; use crossbeam::Receiver; -use easyenv::{init_env_logger, get_env_num}; +use easyenv::{init_env_logger, get_env_num, get_env_string}; +use egg_mode::error::Error; use egg_mode::media::{media_types, upload_media, set_metadata, get_status, ProgressInfo, MediaHandle}; use egg_mode::stream::StreamMessage; use egg_mode::tweet::DraftTweet; use futures::TryStreamExt; use log::{warn, info, error}; -use std::{env, thread}; use std::io::{stdout, Write}; use std::path::PathBuf; use std::time::Duration; -use tokio::time::delay_for; -use egg_mode::error::Error; +use std::{env, thread}; use tokio::runtime::Builder; +use tokio::time::delay_for; pub type AnyhowResult = anyhow::Result; +const ENV_ASSET_IMAGE_PATH : &'static str = "ASSET_IMAGE_PATH"; +const ENV_QUEUE_LENGTH : &'static str = "QUEUE_LENGTH"; +const ENV_TEMP_DIRECTORY : &'static str = "TEMP_DIRECTORY"; +const ENV_THREAD_COUNT : &'static str = "THREAD_COUNT"; +const ENV_TWEET_TEXT : &'static str = "TWEET_TEXT"; +const ENV_WORKER_THREAD_COUNT : &'static str = "WORKER_THREAD_COUNT"; + const VOCODES_BOT_USER_ID : u64 = 1310037441441599488; #[derive(Clone)] @@ -61,16 +68,17 @@ pub struct ProgramArgs { pub worker_count: usize, } +//#[tokio::main] fn main() -> AnyhowResult<()> { init_env_logger(None); let program_args = ProgramArgs { - tweet_text: "This is a deepfake response generated by vo.codes. Use responsibly.".to_string(), - temp_directory: "/tmp".to_string(), - png_filename: "/home/bt/dev/voice/twitter-vocodes-bot/assets/sonic-full.png".to_string(), - core_thread_count: 10, - queue_length: 10, - worker_count: 5, + tweet_text: get_env_string(ENV_TWEET_TEXT, "This is a deepfake response generated by vo.codes. Use responsibly."), + temp_directory: get_env_string(ENV_TEMP_DIRECTORY, "/tmp"), + png_filename: get_env_string(ENV_ASSET_IMAGE_PATH, "./assets/sonic-full.png"), + core_thread_count: get_env_num(ENV_THREAD_COUNT, 10)?, + queue_length: get_env_num(ENV_QUEUE_LENGTH, 10)?, + worker_count: get_env_num(ENV_WORKER_THREAD_COUNT, 5)?, }; let mut runtime = tokio::runtime::Builder::new() @@ -90,7 +98,6 @@ fn main() -> AnyhowResult<()> { Ok(()) } -//#[tokio::main] async fn start_bot(program_args: ProgramArgs) -> AnyhowResult<()> { info!("Loading configs, secrets, and logging in...");