fixed bug
This commit is contained in:
@@ -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());
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user