fixed bug

This commit is contained in:
Simon
2025-07-13 13:17:32 +00:00
parent 93e090c050
commit 465d1fc99c

View File

@@ -266,25 +266,43 @@ impl SpankbangProvider {
async fn parse_video_item(
&self,
html: String,
mut html: String,
client: &Client,
cookies: String,
pool: DbPool
) -> Result<VideoItem> {
if html.contains("<!-- Video list block -->") {
html = html.split("<!-- Video list block -->").collect::<Vec<&str>>()[0].to_string();
}
let vid = html.split("\n").collect::<Vec<&str>>();
if vid.len() > 200 {
if vid.len() > 150 {
println!("Video item has too many lines: {}", vid.len());
return Err("Video item has too many lines".into());
}
for (index ,line) in vid.iter().enumerate() {
println!("Line {}: {}", index, line);
}
let title_line = vid.iter()
.find(|s| s.trim_start().starts_with("<a href=") && s.contains("title="))
.unwrap_or(&"");
let mut title = title_line.split("title=\"").collect::<Vec<&str>>()[1].split("\"").collect::<Vec<&str>>()[0].to_string();
title = decode(title.as_bytes()).to_string().unwrap_or(title);
let thumb = vid[13].split("data-src=\"").collect::<Vec<&str>>()[1].split("\"").collect::<Vec<&str>>()[0].to_string();
let thumb_line = vid.iter()
.find(|s| s.trim_start().starts_with("data-src=") && s.contains(".jpg\""))
.unwrap_or(&"");
let thumb = thumb_line.split("data-src=\"").collect::<Vec<&str>>()[1].split("\"").collect::<Vec<&str>>()[0].to_string();
let preview_line = vid.iter()
.find(|s| s.trim_start().starts_with("<source data-src=") && s.contains("mp4"))
.unwrap_or(&"");
let mut preview = "".to_string();
if vid[15].contains("data-preview=\""){
preview = vid[15].split("data-preview=\"").collect::<Vec<&str>>()[1].split("\"").collect::<Vec<&str>>()[0].to_string();
}
else{
preview = preview_line.split("data-src=\"").collect::<Vec<&str>>()[1].split("\"").collect::<Vec<&str>>()[0].to_string();
}
let duration_str = vid.iter().find(|s| s.contains("<span class=\"video-badge l\">")).unwrap().split("<span class=\"video-badge l\">").collect::<Vec<&str>>()[1].split("m<").collect::<Vec<&str>>()[0];
let duration: u32 = duration_str.parse::<u32>().unwrap_or(0) * 60;
let view_and_rating_str: Vec<&str> = vid.iter().copied().filter(|s| s.contains("<span class=\"md:text-body-md\">")).collect();
@@ -296,6 +314,7 @@ impl SpankbangProvider {
let url = match self.get_video_url(self.url.clone() + url_part, client, cookies, pool).await {
Ok(video_url) => video_url,
Err(e) => {
print!("Error fetching video URL: {}", e);
return Err("Failed to get video URL".into());
}
};