Compare commits
No commits in common. "2e029df64df724f21798fee8fd8c3d35754b1db2" and "5b18b3e6d2b361ad5927136dae03595c5768e952" have entirely different histories.
2e029df64d
...
5b18b3e6d2
18
src/main.rs
18
src/main.rs
|
@ -123,7 +123,7 @@ async fn async_main() {
|
||||||
let video_mutex = Arc::new(Mutex::new(VecDeque::new()));
|
let video_mutex = Arc::new(Mutex::new(VecDeque::new()));
|
||||||
let upload_semaphore = Arc::new(Semaphore::new(0));
|
let upload_semaphore = Arc::new(Semaphore::new(0));
|
||||||
let upload_mutex = Arc::new(Mutex::new(VecDeque::new()));
|
let upload_mutex = Arc::new(Mutex::new(VecDeque::new()));
|
||||||
let query_mutex = Arc::new(tokio::sync::Mutex::new(1));
|
let query_lock = Arc::new(tokio::sync::Mutex::new(()));
|
||||||
if !nodl {
|
if !nodl {
|
||||||
let date_regex = Arc::new(Regex::new(r#" *\d{4}-\d{2}-\d{2} \d{2}:\d{2}$"#).unwrap());
|
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 {
|
for _ in 0..config::VIDEO_WORKERS {
|
||||||
|
@ -172,13 +172,14 @@ async fn async_main() {
|
||||||
}
|
}
|
||||||
let mutex = video_mutex.clone();
|
let mutex = video_mutex.clone();
|
||||||
let semaphore = video_semaphore.clone();
|
let semaphore = video_semaphore.clone();
|
||||||
let query_mutex = query_mutex.clone();
|
let query_lock = query_lock.clone();
|
||||||
let tclient = tclient.clone();
|
let tclient = tclient.clone();
|
||||||
let chat = chat.clone();
|
let chat = chat.clone();
|
||||||
tokio::task::spawn(async move {
|
tokio::task::spawn(async move {
|
||||||
let mut waited = false;
|
let mut waited = false;
|
||||||
|
let mut i = 1;
|
||||||
loop {
|
loop {
|
||||||
let mut guard = query_mutex.lock().await;
|
let guard = query_lock.lock().await;
|
||||||
match utils::get_video(&j).await {
|
match utils::get_video(&j).await {
|
||||||
Ok(Some(i)) => {
|
Ok(Some(i)) => {
|
||||||
let first_try_live =
|
let first_try_live =
|
||||||
|
@ -189,13 +190,9 @@ async fn async_main() {
|
||||||
first_try_live,
|
first_try_live,
|
||||||
));
|
));
|
||||||
semaphore.add_permits(1);
|
semaphore.add_permits(1);
|
||||||
*guard = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Ok(None) => {
|
|
||||||
*guard = 1;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Ok(None) => break,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
eprintln!("Failed to get video data: {:?}", err);
|
eprintln!("Failed to get video data: {:?}", err);
|
||||||
waited = true;
|
waited = true;
|
||||||
|
@ -205,9 +202,8 @@ async fn async_main() {
|
||||||
|| output.contains("too many request")
|
|| output.contains("too many request")
|
||||||
|| output.contains("technical difficult")
|
|| output.contains("technical difficult")
|
||||||
{
|
{
|
||||||
sleep(Duration::from_secs(*guard * 60 * 60))
|
sleep(Duration::from_secs(i * 60 * 60)).await;
|
||||||
.await;
|
i += 1;
|
||||||
*guard += 1;
|
|
||||||
continue;
|
continue;
|
||||||
} else if err
|
} else if err
|
||||||
.output
|
.output
|
||||||
|
|
|
@ -611,13 +611,12 @@ pub async fn upload_worker(
|
||||||
};
|
};
|
||||||
let total_size = file.seek(SeekFrom::End(0)).await.unwrap();
|
let total_size = file.seek(SeekFrom::End(0)).await.unwrap();
|
||||||
file.seek(SeekFrom::Start(0)).await.unwrap();
|
file.seek(SeekFrom::Start(0)).await.unwrap();
|
||||||
let mut sent_size = 0;
|
let parts = (total_size as f64 / (2000.0 * 1024.0 * 1024.0)).ceil() as usize;
|
||||||
let split = total_size > 2000 * 1024 * 1024;
|
for i in 0..parts {
|
||||||
for i in 0.. {
|
let filename = if parts == 1 {
|
||||||
let filename = if split {
|
|
||||||
format!("{}.part{:02}", &video_filename, i)
|
|
||||||
} else {
|
|
||||||
video_filename.clone()
|
video_filename.clone()
|
||||||
|
} else {
|
||||||
|
format!("{}.part{:02}", &video_filename, i)
|
||||||
};
|
};
|
||||||
let message = tclient
|
let message = tclient
|
||||||
.send_message(
|
.send_message(
|
||||||
|
@ -667,7 +666,7 @@ pub async fn upload_worker(
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
let mut size = total_size - sent_size;
|
let mut size = total_size - file.stream_position().await.unwrap();
|
||||||
if size > 2000 * 1024 * 1024 {
|
if size > 2000 * 1024 * 1024 {
|
||||||
size = 2000 * 1024 * 1024;
|
size = 2000 * 1024 * 1024;
|
||||||
}
|
}
|
||||||
|
@ -718,7 +717,6 @@ pub async fn upload_worker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
sent_size = file.stream_position().await.unwrap();
|
|
||||||
if let Ok(mut message) = message {
|
if let Ok(mut message) = message {
|
||||||
if let Err(err) = message.delete().await {
|
if let Err(err) = message.delete().await {
|
||||||
eprintln!("Failed to delete uploading message: {:?}", err);
|
eprintln!("Failed to delete uploading message: {:?}", err);
|
||||||
|
@ -763,9 +761,6 @@ pub async fn upload_worker(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if sent_size >= total_size {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
drop(file);
|
drop(file);
|
||||||
if success {
|
if success {
|
||||||
|
|
Loading…
Reference in New Issue