39 lines
970 B
Rust
39 lines
970 B
Rust
use std::env;
|
|
|
|
use anyhow::Result;
|
|
use tokio::fs;
|
|
|
|
use obws::{client::Client, requests::SourceScreenshot};
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
dotenv::dotenv().ok();
|
|
|
|
env::set_var("RUST_LOG", "obws=debug");
|
|
pretty_env_logger::init();
|
|
|
|
let client = Client::connect("localhost", 4444).await?;
|
|
|
|
client.login(env::var("OBS_PASSWORD").ok()).await?;
|
|
|
|
let screenshot = client
|
|
.sources()
|
|
.take_source_screenshot(SourceScreenshot {
|
|
source_name: Some("Start".to_owned()),
|
|
embed_picture_format: Some("png".to_owned()),
|
|
save_to_file_path: None,
|
|
file_format: None,
|
|
compress_quality: None,
|
|
width: None,
|
|
height: None,
|
|
})
|
|
.await?;
|
|
|
|
let image = screenshot.img.unwrap();
|
|
let pos = image.find("base64,").unwrap();
|
|
let image = base64::decode(&image[pos + 7..])?;
|
|
|
|
fs::write("screenshot.png", &image).await?;
|
|
|
|
Ok(())
|
|
}
|