add erothots
This commit is contained in:
@@ -9,6 +9,7 @@ use crate::util::flaresolverr::{FlareSolverrRequest, Flaresolverr};
|
||||
use crate::videos::{self, VideoItem};
|
||||
use crate::DbPool;
|
||||
use crate::USER_AGENT; // Make sure Provider trait is imported
|
||||
use std::collections::HashMap;
|
||||
|
||||
error_chain! {
|
||||
foreign_links {
|
||||
@@ -101,7 +102,7 @@ impl SpankbangProvider {
|
||||
}
|
||||
}
|
||||
|
||||
async fn query(&self, cache: VideoCache, page: u8, query: &str,) -> Result<Vec<VideoItem>> {
|
||||
async fn query(&self, cache: VideoCache, page: u8, query: &str) -> Result<Vec<VideoItem>> {
|
||||
let url = format!("{}s/{}/{}/", self.url, query.replace(" ", "+"), page);
|
||||
|
||||
let old_items = match cache.get(&url) {
|
||||
@@ -134,6 +135,26 @@ impl SpankbangProvider {
|
||||
};
|
||||
|
||||
let response = client.get(url.clone()).send().await?;
|
||||
if let Some(cookies) = response.headers().get_all("set-cookie").iter().next() {
|
||||
for value in response.headers().get_all("set-cookie").iter() {
|
||||
let mut cookies_map = HashMap::new();
|
||||
for value in response.headers().get_all("set-cookie").iter() {
|
||||
if let Ok(cookie_str) = value.to_str() {
|
||||
if let Some((k, v)) = cookie_str.split_once('=') {
|
||||
let key = k.trim();
|
||||
let val = v.split(';').next().unwrap_or("").trim();
|
||||
cookies_map.insert(key.to_string(), val.to_string());
|
||||
}
|
||||
}
|
||||
}
|
||||
let cookies_string = cookies_map
|
||||
.iter()
|
||||
.map(|(k, v)| format!("{}={}", k, v))
|
||||
.collect::<Vec<String>>()
|
||||
.join("; ");
|
||||
println!("Cookie: {}", cookies_string);
|
||||
}
|
||||
}
|
||||
if response.status().is_success() {
|
||||
let text = response.text().await?;
|
||||
let video_items: Vec<VideoItem> = self.get_video_items_from_html(text.clone());
|
||||
@@ -180,11 +201,20 @@ impl SpankbangProvider {
|
||||
return vec![];
|
||||
}
|
||||
let mut items: Vec<VideoItem> = Vec::new();
|
||||
let video_listing_content = html.split("class=\"video-list ").collect::<Vec<&str>>()[1];
|
||||
let raw_videos = video_listing_content
|
||||
let split_html = html.split("class=\"video-list ").collect::<Vec<&str>>();
|
||||
if split_html.len() < 2 {
|
||||
println!("Could not find video-list in HTML");
|
||||
return items;
|
||||
}
|
||||
let video_listing_content = split_html[1];
|
||||
let raw_videos_vec = video_listing_content
|
||||
.split("class=\"video-item\"")
|
||||
.collect::<Vec<&str>>()[1..]
|
||||
.to_vec();
|
||||
.collect::<Vec<&str>>();
|
||||
if raw_videos_vec.len() < 2 {
|
||||
println!("Could not find video-item in HTML");
|
||||
return items;
|
||||
}
|
||||
let raw_videos = raw_videos_vec[1..].to_vec();
|
||||
for video_segment in &raw_videos {
|
||||
let vid = video_segment.split("\n").collect::<Vec<&str>>();
|
||||
//for (index,line) in vid.iter().enumerate(){
|
||||
|
||||
Reference in New Issue
Block a user