provider refactors and fixes

This commit is contained in:
Simon
2026-03-05 13:28:38 +00:00
parent 060d8e7937
commit 8157e223fe
33 changed files with 3051 additions and 1694 deletions

View File

@@ -137,10 +137,16 @@ impl HypnotubeProvider {
categories: self
.categories
.read()
.unwrap()
.iter()
.map(|c| c.title.clone())
.collect(),
.map(|categories| categories.iter().map(|c| c.title.clone()).collect())
.unwrap_or_else(|e| {
eprint!("Hypnotube categories lock error: {e}");
crate::providers::report_provider_error_background(
"hypnotube",
"build_channel.categories_read",
&e.to_string(),
);
vec![]
}),
options: vec![ChannelOption {
id: "sort".to_string(),
title: "Sort".to_string(),
@@ -206,11 +212,19 @@ impl HypnotubeProvider {
vec![]
}
};
let mut requester = options.requester.clone().unwrap();
let text = requester
.get(&video_url, Some(Version::HTTP_11))
.await
.unwrap();
let mut requester = crate::providers::requester_or_default(&options, module_path!(), "missing_requester");
let text = match requester.get(&video_url, Some(Version::HTTP_11)).await {
Ok(text) => text,
Err(e) => {
crate::providers::report_provider_error(
"hypnotube",
"get.request",
&format!("url={video_url}; error={e}"),
)
.await;
return old_items;
}
};
if text.contains("Sorry, no results were found.") {
return vec![];
}
@@ -259,21 +273,35 @@ impl HypnotubeProvider {
}
};
let mut requester = options.requester.clone().unwrap();
let text = match requester
let mut requester = crate::providers::requester_or_default(&options, module_path!(), "missing_requester");
let post_response = match requester
.post(
format!("{}/searchgate.php", self.url).as_str(),
format!("q={}&type=videos", query.replace(" ", "+")).as_str(),
vec![("Content-Type", "application/x-www-form-urlencoded")],
)
.await
.unwrap()
.text()
.await
{
Ok(response) => response,
Err(e) => {
crate::providers::report_provider_error(
"hypnotube",
"query.search_post",
&format!("url={video_url}; error={e}"),
)
.await;
return old_items;
}
};
let text = match post_response.text().await {
Ok(t) => t,
Err(e) => {
eprint!("Hypnotube search POST request failed: {}", e);
crate::providers::report_provider_error_background(
"hypnotube",
"query.search_post.text",
&e.to_string(),
);
return vec![];
}
};