diff --git a/src/main.rs b/src/main.rs index 7edd62c..a909d50 100644 --- a/src/main.rs +++ b/src/main.rs @@ -123,7 +123,7 @@ async fn async_main() { let video_mutex = Arc::new(Mutex::new(VecDeque::new())); let upload_semaphore = Arc::new(Semaphore::new(0)); let upload_mutex = Arc::new(Mutex::new(VecDeque::new())); - let query_lock = Arc::new(tokio::sync::Mutex::new(())); + let query_mutex = Arc::new(tokio::sync::Mutex::new(1)); if !nodl { let date_regex = Arc::new(Regex::new(r#" *\d{4}-\d{2}-\d{2} \d{2}:\d{2}$"#).unwrap()); for _ in 0..config::VIDEO_WORKERS { @@ -172,14 +172,13 @@ async fn async_main() { } let mutex = video_mutex.clone(); let semaphore = video_semaphore.clone(); - let query_lock = query_lock.clone(); + let query_mutex = query_mutex.clone(); let tclient = tclient.clone(); let chat = chat.clone(); tokio::task::spawn(async move { let mut waited = false; - let mut i = 1; loop { - let guard = query_lock.lock().await; + let mut guard = query_mutex.lock().await; match utils::get_video(&j).await { Ok(Some(i)) => { let first_try_live = @@ -190,9 +189,13 @@ async fn async_main() { first_try_live, )); semaphore.add_permits(1); + *guard = 1; + break; + } + Ok(None) => { + *guard = 1; break; } - Ok(None) => break, Err(err) => { eprintln!("Failed to get video data: {:?}", err); waited = true; @@ -202,8 +205,9 @@ async fn async_main() { || output.contains("too many request") || output.contains("technical difficult") { - sleep(Duration::from_secs(i * 60 * 60)).await; - i += 1; + sleep(Duration::from_secs(*guard * 60 * 60)) + .await; + *guard += 1; continue; } else if err .output