This commit is contained in:
Simon
2025-07-17 18:41:57 +00:00
parent 9d3d8ce67b
commit b4ee574433
10 changed files with 652 additions and 125 deletions

View File

@@ -1,12 +1,32 @@
use crate::{providers::{hanime::HanimeProvider, perverzija::PerverzijaProvider, pornhub::PornhubProvider, spankbang::SpankbangProvider}, util::cache::VideoCache, videos::VideoItem, DbPool};
use crate::{
DbPool,
providers::{
hanime::HanimeProvider, perverzija::PerverzijaProvider, pmvhaven::PmvhavenProvider,
pornhub::PornhubProvider, spankbang::SpankbangProvider,
},
util::cache::VideoCache,
videos::VideoItem,
};
pub mod perverzija;
pub mod hanime;
pub mod spankbang;
pub mod perverzija;
pub mod pmvhaven;
pub mod pornhub;
pub mod spankbang;
pub trait Provider{
async fn get_videos(&self, cache: VideoCache, pool: DbPool, channel: String, sort: String, query: Option<String>, page: String, per_page: String, featured: String) -> Vec<VideoItem>;
pub trait Provider {
async fn get_videos(
&self,
cache: VideoCache,
pool: DbPool,
channel: String,
sort: String,
query: Option<String>,
page: String,
per_page: String,
featured: String,
category: String,
) -> Vec<VideoItem>;
}
#[derive(Debug, Clone)]
@@ -15,18 +35,60 @@ pub enum AnyProvider {
Hanime(HanimeProvider),
Spankbang(SpankbangProvider),
Pornhub(PornhubProvider),
Pmvhaven(PmvhavenProvider),
}
impl Provider for AnyProvider {
async fn get_videos(&self, cache: VideoCache, pool:DbPool, channel: String, sort: String, query: Option<String>, page: String, per_page: String, featured: String) -> Vec<VideoItem> {
async fn get_videos(
&self,
cache: VideoCache,
pool: DbPool,
channel: String,
sort: String,
query: Option<String>,
page: String,
per_page: String,
featured: String,
category: String,
) -> Vec<VideoItem> {
println!(
"/api/videos: channel={:?}, sort={:?}, query={:?}, page={:?}, per_page={:?}, featured={:?}",
channel, sort, query, page, per_page, featured
);
match self {
AnyProvider::Perverzija(p) => p.get_videos(cache.clone(), pool.clone(), channel.clone(), sort.clone(), query.clone(), page.clone(), per_page.clone(), featured.clone()).await,
AnyProvider::Hanime(p) => p.get_videos(cache, pool, channel, sort, query, page, per_page, featured).await,
AnyProvider::Spankbang(p) => p.get_videos(cache, pool, channel, sort, query, page, per_page, featured).await,
AnyProvider::Pornhub(p) => p.get_videos(cache, pool, channel, sort, query, page, per_page, featured).await,
AnyProvider::Perverzija(p) => {
p.get_videos(
cache.clone(),
pool.clone(),
channel.clone(),
sort.clone(),
query.clone(),
page.clone(),
per_page.clone(),
featured.clone(),
category.clone(),
)
.await
}
AnyProvider::Hanime(p) => {
p.get_videos(cache, pool, channel, sort, query, page, per_page, featured,
category.clone(),)
.await
}
AnyProvider::Spankbang(p) => {
p.get_videos(cache, pool, channel, sort, query, page, per_page, featured,
category.clone(),)
.await
}
AnyProvider::Pornhub(p) => {
p.get_videos(cache, pool, channel, sort, query, page, per_page, featured,
category.clone(),)
.await
}
AnyProvider::Pmvhaven(p) => {
p.get_videos(cache, pool, channel, sort, query, page, per_page, featured,
category.clone(),)
.await
}
}
}
}