use backend::browser::{BrowserModule, BrowserModuleConfig}; use backend::proxy::ProxyConfig; use backend::transcript::{TranscriptConfig, YoutubeTranscriptProvider}; use backend::usage::DataUsageTracker; #[tokio::main] async fn main() -> anyhow::Result<()> { let _ = dotenvy::dotenv(); backend::logs::init(); let request_id = "diag-transcript"; let video_id = std::env::args() .nth(1) .unwrap_or_else(|| "dQw4w9WgXcQ".into()); let proxy = ProxyConfig::from_env(request_id)?; let usage = DataUsageTracker::new(); let browser = BrowserModule::new( proxy, BrowserModuleConfig { no_sandbox: true, navigation_timeout_secs: 75, min_navigation_delay_ms: 500, max_navigation_delay_ms: 1_500, ..Default::default() }, usage, )?; let provider = YoutubeTranscriptProvider::new( browser, TranscriptConfig { max_attempts: 1, timeout_secs: 180, max_concurrency: 1, ..Default::default() }, )?; println!("buscando legenda do vĂ­deo {video_id}..."); match provider.fetch_transcript(request_id, &video_id).await { Ok(t) => { println!( "OK language={} generated={} chars={} preview={:?}", t.language_code, t.is_generated, t.text.len(), t.text.chars().take(120).collect::() ); } Err(e) => { println!("ERRO: {e}"); std::process::exit(1); } } Ok(()) }