fixed bug
This commit is contained in:
@@ -266,25 +266,43 @@ impl SpankbangProvider {
|
|||||||
|
|
||||||
async fn parse_video_item(
|
async fn parse_video_item(
|
||||||
&self,
|
&self,
|
||||||
html: String,
|
mut html: String,
|
||||||
client: &Client,
|
client: &Client,
|
||||||
cookies: String,
|
cookies: String,
|
||||||
pool: DbPool
|
pool: DbPool
|
||||||
) -> Result<VideoItem> {
|
) -> 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>>();
|
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());
|
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()
|
let title_line = vid.iter()
|
||||||
.find(|s| s.trim_start().starts_with("<a href=") && s.contains("title="))
|
.find(|s| s.trim_start().starts_with("<a href=") && s.contains("title="))
|
||||||
.unwrap_or(&"");
|
.unwrap_or(&"");
|
||||||
let mut title = title_line.split("title=\"").collect::<Vec<&str>>()[1].split("\"").collect::<Vec<&str>>()[0].to_string();
|
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);
|
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();
|
let mut preview = "".to_string();
|
||||||
if vid[15].contains("data-preview=\""){
|
if vid[15].contains("data-preview=\""){
|
||||||
preview = vid[15].split("data-preview=\"").collect::<Vec<&str>>()[1].split("\"").collect::<Vec<&str>>()[0].to_string();
|
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_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 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();
|
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 {
|
let url = match self.get_video_url(self.url.clone() + url_part, client, cookies, pool).await {
|
||||||
Ok(video_url) => video_url,
|
Ok(video_url) => video_url,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
print!("Error fetching video URL: {}", e);
|
||||||
return Err("Failed to get video URL".into());
|
return Err("Failed to get video URL".into());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user