diff --git a/src/providers/spankbang.rs b/src/providers/spankbang.rs index 43f5780..811af58 100644 --- a/src/providers/spankbang.rs +++ b/src/providers/spankbang.rs @@ -266,25 +266,43 @@ impl SpankbangProvider { async fn parse_video_item( &self, - html: String, + mut html: String, client: &Client, cookies: String, pool: DbPool ) -> Result { + if html.contains("") { + html = html.split("").collect::>()[0].to_string(); + } + let vid = html.split("\n").collect::>(); - 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(">()[1].split("\"").collect::>()[0].to_string(); title = decode(title.as_bytes()).to_string().unwrap_or(title); - let thumb = vid[13].split("data-src=\"").collect::>()[1].split("\"").collect::>()[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::>()[1].split("\"").collect::>()[0].to_string(); + let preview_line = vid.iter() + .find(|s| s.trim_start().starts_with(">()[1].split("\"").collect::>()[0].to_string(); } + else{ + preview = preview_line.split("data-src=\"").collect::>()[1].split("\"").collect::>()[0].to_string(); + } let duration_str = vid.iter().find(|s| s.contains("")).unwrap().split("").collect::>()[1].split("m<").collect::>()[0]; let duration: u32 = duration_str.parse::().unwrap_or(0) * 60; let view_and_rating_str: Vec<&str> = vid.iter().copied().filter(|s| s.contains("")).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()); } };