clean cache, handled warnings etc

This commit is contained in:
Simon
2025-06-06 07:48:21 +00:00
parent df323ec9fd
commit 60a07269f6
10 changed files with 96 additions and 67 deletions

View File

@@ -1,17 +1,13 @@
use std::time::Duration;
use std::vec;
use std::env;
use error_chain::error_chain;
use htmlentity::entity::{decode, ICodedDataTrait};
use reqwest::{Proxy};
use futures::future::join_all;
use crate::db;
use crate::providers::Provider;
use crate::util::cache::VideoCache;
use crate::util::flaresolverr::{FlareSolverrRequest, Flaresolverr};
use crate::util::time::parse_time_to_seconds;
use crate::videos::{self, Video_Embed, Video_Item};
use crate::videos::{self, VideoItem};
use crate::DbPool; // Make sure Provider trait is imported
error_chain! {
@@ -33,6 +29,7 @@ struct HanimeSearchRequest{
page: u8
}
#[allow(dead_code)]
impl HanimeSearchRequest {
pub fn new() -> Self {
HanimeSearchRequest {
@@ -116,6 +113,7 @@ struct HanimeSearchResult{
}
#[allow(dead_code)]
pub struct HanimeProvider {
url: String,
}
@@ -127,7 +125,7 @@ impl HanimeProvider {
}
}
async fn get_video_item(&self, hit: HanimeSearchResult, pool: DbPool) -> Result<Video_Item> {
async fn get_video_item(&self, hit: HanimeSearchResult, pool: DbPool) -> Result<VideoItem> {
let mut conn = pool.get().expect("couldn't get db connection from pool");
let db_result = db::get_video(&mut conn,format!("https://h.freeanimehentai.net/api/v8/video?id={}&", hit.slug.clone()));
drop(conn);
@@ -138,12 +136,12 @@ impl HanimeProvider {
let channel = "hanime".to_string(); // Placeholder, adjust as needed
match db_result {
Ok(Some(video_url)) => {
return Ok(Video_Item::new(id, title, video_url.clone(), channel, thumb, duration)
return Ok(VideoItem::new(id, title, video_url.clone(), channel, thumb, duration)
.tags(hit.tags)
.uploader(hit.brand)
.views(hit.views as u32)
.rating((hit.likes as f32 / (hit.likes + hit.dislikes)as f32) * 100 as f32)
.formats(vec![videos::Video_Format::new(video_url.clone(), "1080".to_string(), "m3u8".to_string())]));
.formats(vec![videos::VideoFormat::new(video_url.clone(), "1080".to_string(), "m3u8".to_string())]));
}
Ok(None) => (),
Err(e) => {
@@ -189,16 +187,16 @@ impl HanimeProvider {
let mut conn = pool.get().expect("couldn't get db connection from pool");
let _ = db::insert_video(&mut conn, &format!("https://h.freeanimehentai.net/api/v8/video?id={}&", hit.slug.clone()), &url_vec[0].clone());
drop(conn);
Ok(Video_Item::new(id, title, url_vec[0].clone(), channel, thumb, duration)
Ok(VideoItem::new(id, title, url_vec[0].clone(), channel, thumb, duration)
.tags(hit.tags)
.uploader(hit.brand)
.views(hit.views as u32)
.rating((hit.likes as f32 / (hit.likes + hit.dislikes)as f32) * 100 as f32)
.formats(vec![videos::Video_Format::new(url_vec[0].clone(), "1080".to_string(), "m3u8".to_string())]))
.formats(vec![videos::VideoFormat::new(url_vec[0].clone(), "1080".to_string(), "m3u8".to_string())]))
}
async fn get(&self, cache: VideoCache, pool: DbPool, page: u8, query: String, sort:String) -> Result<Vec<Video_Item>> {
async fn get(&self, cache: VideoCache, pool: DbPool, page: u8, query: String, sort:String) -> Result<Vec<VideoItem>> {
let index = format!("{}:{}:{}", query, page, sort);
let order_by = sort.split(".").collect::<Vec<&str>>()[0].to_string();
let ordering = sort.split(".").collect::<Vec<&str>>()[1].to_string();
@@ -251,8 +249,8 @@ impl HanimeProvider {
.map_err(|e| format!("Failed to parse hits JSON: {}", e))?;
// let timeout_duration = Duration::from_secs(120);
let futures = hits_json.into_iter().map(|el| self.get_video_item(el.clone(), pool.clone()));
let results: Vec<Result<Video_Item>> = join_all(futures).await;
let video_items: Vec<Video_Item> = results
let results: Vec<Result<VideoItem>> = join_all(futures).await;
let video_items: Vec<VideoItem> = results
.into_iter()
.filter_map(Result::ok)
.collect();
@@ -278,12 +276,12 @@ impl Provider for HanimeProvider {
page: String,
per_page: String,
featured: String,
) -> Vec<Video_Item> {
) -> Vec<VideoItem> {
let _ = featured;
let _ = per_page;
let _ = sort;
println!("Sort: {:?}", sort);
let videos: std::result::Result<Vec<Video_Item>, Error> = match query {
let videos: std::result::Result<Vec<VideoItem>, Error> = match query {
Some(q) => self.get(cache, pool, page.parse::<u8>().unwrap_or(1), q, sort).await,
None => self.get(cache, pool, page.parse::<u8>().unwrap_or(1), "".to_string(), sort).await,
};