fix: always skip failed clients

This commit is contained in:
ThetaDev 2025-03-16 16:51:43 +01:00
parent 8342caeb0f
commit 63a6f50a8b
No known key found for this signature in database
GPG key ID: E319D3C5148D65B6

View file

@ -1,6 +1,6 @@
use std::{
borrow::Cow,
collections::{BTreeMap, HashMap},
collections::{BTreeMap, HashMap, HashSet},
fmt::Debug,
};
@ -106,6 +106,7 @@ impl RustyPipeQuery {
let mut last_e = None;
let mut query = Cow::Borrowed(self);
let mut clients_iter = clients.iter().peekable();
let mut failed_clients = HashSet::new();
while let Some(client) = clients_iter.next() {
if query.opts.auth == Some(true) && !self.auth_enabled(*client) {
@ -115,6 +116,9 @@ impl RustyPipeQuery {
}
continue;
}
if failed_clients.contains(client) {
continue;
}
let res = query.player_from_client(video_id, *client).await;
match res {
@ -130,6 +134,7 @@ impl RustyPipeQuery {
tracing::warn!("error fetching player with {client:?} client: {e}; retrying with {next_client:?} client");
}
last_e = Some(Error::Extraction(e));
failed_clients.insert(*client);
}
Err(e) => return Err(e),
}