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

@@ -57,10 +57,15 @@ impl HentaihavenProvider {
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| {
crate::providers::report_provider_error_background(
"hentaihaven",
"build_channel.categories_read",
&e.to_string(),
);
vec![]
}),
options: vec![],
nsfw: true,
cacheDuration: None,
@@ -98,11 +103,20 @@ impl HentaihavenProvider {
}
};
let mut requester = options.requester.clone().unwrap();
let text = requester
.get(&video_url, Some(Version::HTTP_2))
.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_2)).await {
Ok(text) => text,
Err(e) => {
crate::providers::report_provider_error(
"hentaihaven",
"get.request",
&format!("url={video_url}; error={e}"),
)
.await;
return Ok(old_items);
}
};
let video_items: Vec<VideoItem> = self
.get_video_items_from_html(text.clone(), &mut requester, pool.clone())
.await;
@@ -143,11 +157,20 @@ impl HentaihavenProvider {
}
};
let mut requester = options.requester.clone().unwrap();
let text = requester
.get(&video_url, Some(Version::HTTP_2))
.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_2)).await {
Ok(text) => text,
Err(e) => {
crate::providers::report_provider_error(
"hentaihaven",
"query.request",
&format!("url={video_url}; error={e}"),
)
.await;
return Ok(old_items);
}
};
if page > 1
{
return Ok(vec![]);
@@ -308,7 +331,23 @@ impl HentaihavenProvider {
.and_then(|s| s.split('"').next())
.ok_or_else(|| ErrorKind::Parse("video url\n\n{seg}".into()))?
.to_string();
let mut conn = pool.get().expect("couldn't get db connection from pool");
let mut conn = match pool.get() {
Ok(conn) => conn,
Err(e) => {
let msg = format!("DB pool error: {}", e);
send_discord_error_report(
msg.clone(),
None,
Some("Hentai Haven Provider"),
Some("get_video_item.pool_get"),
file!(),
line!(),
module_path!(),
)
.await;
return Err(msg.into());
}
};
let db_result = db::get_video(&mut conn, video_url.clone());
drop(conn);
match db_result {
@@ -456,13 +495,27 @@ impl HentaihavenProvider {
.views(views)
.aspect_ratio(0.715);
let mut conn = pool.get().expect("couldn't get db connection from pool");
let _ = db::insert_video(
&mut conn,
&video_url,
&serde_json::to_string(&video_item).unwrap_or_default(),
);
drop(conn);
match pool.get() {
Ok(mut conn) => {
let _ = db::insert_video(
&mut conn,
&video_url,
&serde_json::to_string(&video_item).unwrap_or_default(),
);
}
Err(e) => {
send_discord_error_report(
format!("DB pool error: {}", e),
None,
Some("Hentai Haven Provider"),
Some("get_video_item.insert_video.pool_get"),
file!(),
line!(),
module_path!(),
)
.await;
}
}
Ok(video_item)
}