Compare commits

..

2 Commits

Author SHA1 Message Date
9d976b49ab Actually fix the parallel download 2022-04-01 01:22:13 +02:00
3e7601db1d Fix parallel file downloads not working 2022-04-01 01:09:37 +02:00

View File

@ -109,24 +109,27 @@ async fn download_multiple(args: CLIArgs, raw_urls: Vec<String>) -> Result<()> {
} }
async fn download_job(urls: SyncQueue, reporter: UnboundedSender<DlReport>, cli_args: CLIArgs) { async fn download_job(urls: SyncQueue, reporter: UnboundedSender<DlReport>, cli_args: CLIArgs) {
while let Some(dlreq) = urls.lock().await.pop_front() { // The mutex access must be in its own scope to ensure that the lock is dropped
while let Some(dlreq) = {
let mut urls = urls.lock().await;
urls.pop_front().take()
} {
println!("Downloading {}", dlreq.url);
let reporter = DlReporter::new(dlreq.id as u32, reporter.clone()); let reporter = DlReporter::new(dlreq.id as u32, reporter.clone());
// Resolve the zippy url to the direct download url if necessary // Resolve the zippy url to the direct download url if necessary
let url = match is_integrated_url(&dlreq.url) { let url = match is_integrated_url(&dlreq.url) {
Some(service) => { Some(service) => match resolve_integrated_url(&dlreq.url, service).await {
match resolve_integrated_url(&dlreq.url, service).await { Ok(url) => url,
Ok(url) => url, Err(_e) => {
Err(_e) => { report_msg!(
report_msg!( reporter,
reporter, "Zippyshare link could not be resolved, skipping: {}",
"Zippyshare link could not be resolved, skipping: {}", dlreq.url
dlreq.url );
); continue;
continue;
}
} }
} },
None => dlreq.url, None => dlreq.url,
}; };