switched request module, so no need for burpsuite anymore
This commit is contained in:
@@ -12,8 +12,8 @@ futures = "0.3.31"
|
||||
htmlentity = "1.3.2"
|
||||
ntex = { version = "2.0", features = ["tokio"] }
|
||||
ntex-files = "2.0.0"
|
||||
reqwest = { version = "0.12.18", features = ["blocking", "json", "rustls-tls"] }
|
||||
serde = "1.0.219"
|
||||
serde_json = "1.0.140"
|
||||
tokio = "1.45.1"
|
||||
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
wreq = { version = "5", features = ["full"] }
|
||||
wreq-util = "2"
|
||||
21
Dockerfile
21
Dockerfile
@@ -1,7 +1,5 @@
|
||||
#FROM debian
|
||||
FROM consol/debian-xfce-vnc:latest
|
||||
ENV REFRESHED_AT 2025_06_03
|
||||
|
||||
FROM debian
|
||||
# FROM consol/debian-xfce-vnc:latest
|
||||
# Switch to root user to install additional software
|
||||
USER 0
|
||||
|
||||
@@ -30,20 +28,5 @@ RUN apt install -yq libssl-dev \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
|
||||
RUN mkdir -p /usr/share/man/man1 && \
|
||||
curl -fsSL https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor -o /etc/apt/trusted.gpg.d/adoptium.gpg && \
|
||||
echo "deb https://packages.adoptium.net/artifactory/deb bullseye main" > /etc/apt/sources.list.d/adoptium.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y temurin-21-jdk
|
||||
RUN java -version
|
||||
|
||||
RUN curl https://portswigger.net/burp/releases/download \
|
||||
-o burpsuite_community.jar
|
||||
|
||||
USER 1000
|
||||
|
||||
|
||||
RUN python3 -m venv ~/.venv && bash -c "source ~/.venv/bin/activate && pip3 install pyautogui pillow opencv-python"
|
||||
RUN echo "source ~/.venv/bin/activate" >> ~/.bashrc
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use std::vec;
|
||||
use std::env;
|
||||
use error_chain::error_chain;
|
||||
use reqwest::{Proxy};
|
||||
use futures::future::join_all;
|
||||
|
||||
use wreq::Client;
|
||||
use wreq_util::Emulation;
|
||||
use crate::db;
|
||||
use crate::providers::Provider;
|
||||
use crate::util::cache::VideoCache;
|
||||
@@ -14,7 +14,7 @@ use crate::USER_AGENT; // Make sure Provider trait is imported
|
||||
error_chain! {
|
||||
foreign_links {
|
||||
Io(std::io::Error);
|
||||
HttpRequest(reqwest::Error);
|
||||
HttpRequest(wreq::Error);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,18 +152,9 @@ impl HanimeProvider {
|
||||
}
|
||||
}
|
||||
|
||||
let client = match env::var("BURP_URL").as_deref() {
|
||||
Ok(burp_url) =>
|
||||
reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.proxy(Proxy::https(burp_url).unwrap())
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
Err(_) => reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
};
|
||||
let client = Client::builder()
|
||||
.emulation(Emulation::Firefox136)
|
||||
.build()?;
|
||||
let url = format!("https://h.freeanimehentai.net/api/v8/video?id={}&", hit.slug);
|
||||
let response = client.get(url).send().await?;
|
||||
|
||||
@@ -228,18 +219,9 @@ impl HanimeProvider {
|
||||
.search_text(query.clone())
|
||||
.order_by(order_by)
|
||||
.ordering(ordering);
|
||||
let client = match env::var("BURP_URL").as_deref() {
|
||||
Ok(burp_url) =>
|
||||
reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.proxy(Proxy::https(burp_url).unwrap())
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
Err(_) => reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
};
|
||||
let client = Client::builder()
|
||||
.emulation(Emulation::Firefox136)
|
||||
.build()?;
|
||||
let response = client.post("https://search.htv-services.com/search")
|
||||
.json(&search)
|
||||
.send().await?;
|
||||
@@ -288,7 +270,6 @@ impl Provider for HanimeProvider {
|
||||
let _ = featured;
|
||||
let _ = per_page;
|
||||
let _ = sort;
|
||||
println!("Sort: {:?}", sort);
|
||||
let videos: std::result::Result<Vec<VideoItem>, Error> = match query {
|
||||
Some(q) => self.get(cache, pool, page.parse::<u8>().unwrap_or(1), q, sort).await,
|
||||
None => self.get(cache, pool, page.parse::<u8>().unwrap_or(1), "".to_string(), sort).await,
|
||||
|
||||
@@ -2,9 +2,9 @@ use std::vec;
|
||||
use std::env;
|
||||
use error_chain::error_chain;
|
||||
use htmlentity::entity::{decode, ICodedDataTrait};
|
||||
use reqwest::{Proxy};
|
||||
use futures::future::join_all;
|
||||
|
||||
use wreq::Client;
|
||||
use wreq_util::Emulation;
|
||||
use crate::db;
|
||||
use crate::providers::Provider;
|
||||
use crate::util::cache::VideoCache;
|
||||
@@ -17,7 +17,7 @@ use crate::USER_AGENT; // Make sure Provider trait is imported
|
||||
error_chain! {
|
||||
foreign_links {
|
||||
Io(std::io::Error);
|
||||
HttpRequest(reqwest::Error);
|
||||
HttpRequest(wreq::Error);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,18 +59,9 @@ impl PerverzijaProvider {
|
||||
};
|
||||
|
||||
|
||||
let client = match env::var("BURP_URL").as_deref() {
|
||||
Ok(burp_url) =>
|
||||
reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.proxy(Proxy::https(burp_url).unwrap())
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
Err(_) => reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
};
|
||||
let client = Client::builder()
|
||||
.emulation(Emulation::Firefox136)
|
||||
.build()?;
|
||||
|
||||
let response = client.get(url.clone()).send().await?;
|
||||
// print!("Response: {:?}\n", response);
|
||||
@@ -141,18 +132,9 @@ impl PerverzijaProvider {
|
||||
vec![]
|
||||
}
|
||||
};
|
||||
let client = match env::var("BURP_URL").as_deref() {
|
||||
Ok(burp_url) =>
|
||||
reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.proxy(Proxy::https(burp_url).unwrap())
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
Err(_) => reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
};
|
||||
let client = Client::builder()
|
||||
.emulation(Emulation::Firefox136)
|
||||
.build()?;
|
||||
|
||||
let response = client.get(url.clone()).send().await?;
|
||||
if response.status().is_success() {
|
||||
@@ -384,18 +366,9 @@ impl PerverzijaProvider {
|
||||
drop(conn);
|
||||
|
||||
|
||||
let client = match env::var("BURP_URL").as_deref() {
|
||||
Ok(burp_url) =>
|
||||
reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.proxy(Proxy::https(burp_url).unwrap())
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
Err(_) => reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
};
|
||||
let client = Client::builder()
|
||||
.emulation(Emulation::Firefox136)
|
||||
.build()?;
|
||||
|
||||
let response = client.get(lookup_url.clone()).send().await?;
|
||||
let text = match response.status().is_success(){
|
||||
|
||||
@@ -3,28 +3,24 @@ use std::env;
|
||||
use error_chain::error_chain;
|
||||
use futures::future::join_all;
|
||||
use htmlentity::entity::{decode, ICodedDataTrait};
|
||||
use ntex::channel::pool;
|
||||
use reqwest::Client;
|
||||
use reqwest::{Proxy};
|
||||
use crate::db;
|
||||
use crate::providers::Provider;
|
||||
use crate::util::cache::VideoCache;
|
||||
use crate::util::flaresolverr::{FlareSolverrRequest, Flaresolverr};
|
||||
use crate::videos::{self, VideoItem};
|
||||
use crate::videos::{VideoItem};
|
||||
use crate::DbPool;
|
||||
use crate::USER_AGENT; // Make sure Provider trait is imported
|
||||
use std::collections::HashMap;
|
||||
use std::time::Duration;
|
||||
use tokio::time::sleep;
|
||||
use wreq::Client;
|
||||
use wreq_util::Emulation;
|
||||
|
||||
error_chain! {
|
||||
foreign_links {
|
||||
Io(std::io::Error);
|
||||
HttpRequest(reqwest::Error);
|
||||
HttpRequest(wreq::Error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct SpankbangProvider {
|
||||
url: String,
|
||||
@@ -55,18 +51,9 @@ impl SpankbangProvider {
|
||||
};
|
||||
|
||||
|
||||
let client = match env::var("BURP_URL").as_deref() {
|
||||
Ok(burp_url) =>
|
||||
reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.proxy(Proxy::https(burp_url).unwrap())
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
Err(_) => reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
};
|
||||
let client = Client::builder()
|
||||
.emulation(Emulation::Firefox136)
|
||||
.build()?;
|
||||
|
||||
let response = client.get(url.clone()).send().await?;
|
||||
let mut cookies_string = String::new();
|
||||
@@ -151,18 +138,9 @@ impl SpankbangProvider {
|
||||
};
|
||||
|
||||
|
||||
let client = match env::var("BURP_URL").as_deref() {
|
||||
Ok(burp_url) =>
|
||||
reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.proxy(Proxy::https(burp_url).unwrap())
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
Err(_) => reqwest::Client::builder()
|
||||
.user_agent(USER_AGENT)
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?,
|
||||
};
|
||||
let client = Client::builder()
|
||||
.emulation(Emulation::Firefox136)
|
||||
.build()?;
|
||||
|
||||
let response = client.get(url.clone()).send().await?;
|
||||
let mut cookies_string = String::new();
|
||||
@@ -277,7 +255,6 @@ impl SpankbangProvider {
|
||||
|
||||
let vid = html.split("\n").collect::<Vec<&str>>();
|
||||
if vid.len() > 200 {
|
||||
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() {
|
||||
@@ -303,13 +280,13 @@ impl SpankbangProvider {
|
||||
// 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[64].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();
|
||||
let views_str = view_and_rating_str[0].split(">").collect::<Vec<&str>>()[1].split("K<").collect::<Vec<&str>>()[0];
|
||||
let views = (views_str.parse::<f32>().unwrap_or(0.0) * 1000.0) as u32;
|
||||
let rate_str = view_and_rating_str[1].split(">").collect::<Vec<&str>>()[1].split("%<").collect::<Vec<&str>>()[0];
|
||||
let rating = rate_str.parse::<f32>().unwrap_or(0.0);
|
||||
// let view_and_rating_str: Vec<&str> = vid.iter().copied().filter(|s| s.contains("<span class=\"md:text-body-md\">")).collect();
|
||||
// let views_str = view_and_rating_str[0].split(">").collect::<Vec<&str>>()[1].split("K<").collect::<Vec<&str>>()[0];
|
||||
// let views = (views_str.parse::<f32>().unwrap_or(0.0) * 1000.0) as u32;
|
||||
// let rate_str = view_and_rating_str[1].split(">").collect::<Vec<&str>>()[1].split("%<").collect::<Vec<&str>>()[0];
|
||||
// let rating = rate_str.parse::<f32>().unwrap_or(0.0);
|
||||
let url_part = vid.iter().find(|s| s.contains("<a href=\"/")).unwrap().split("<a href=\"/").collect::<Vec<&str>>()[1].split("\"").collect::<Vec<&str>>()[0];
|
||||
let url = match self.get_video_url(self.url.clone() + url_part, client, cookies, pool).await {
|
||||
Ok(video_url) => video_url,
|
||||
@@ -332,8 +309,8 @@ impl SpankbangProvider {
|
||||
};
|
||||
|
||||
let video_item = VideoItem::new(id, title, url.clone().to_string(), "spankbang".to_string(), thumb, duration)
|
||||
.views(views)
|
||||
.rating(rating)
|
||||
// .views(views)
|
||||
// .rating(rating)
|
||||
// .formats(vec![format])
|
||||
// .preview(preview)
|
||||
;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use reqwest::{Client, Proxy};
|
||||
use serde_json::json;
|
||||
use wreq::Client;
|
||||
use wreq_util::Emulation;
|
||||
|
||||
#[derive(serde::Serialize, serde::Deserialize, Debug)]
|
||||
pub struct FlareSolverrRequest {
|
||||
@@ -78,9 +79,7 @@ impl Flaresolverr {
|
||||
request: FlareSolverrRequest,
|
||||
) -> Result<FlareSolverrResponse, Box<dyn std::error::Error>> {
|
||||
let client = Client::builder()
|
||||
.proxy(Proxy::https("http://192.168.0.101:8080").unwrap())
|
||||
.proxy(Proxy::http("http://192.168.0.101:8080").unwrap())
|
||||
.danger_accept_invalid_certs(true)
|
||||
.emulation(Emulation::Firefox136)
|
||||
.build()?;
|
||||
|
||||
let response = client
|
||||
|
||||
Reference in New Issue
Block a user