all provider

This commit is contained in:
Simon
2025-08-10 14:02:09 +00:00
parent 8944646c85
commit 97066a184a
10 changed files with 37 additions and 28 deletions

View File

@@ -4,9 +4,11 @@ use futures::future::join_all;
use serde_json::error::Category;
use wreq::Client;
use wreq_util::Emulation;
use crate::api::get_provider;
use crate::db;
use crate::providers::Provider;
use crate::providers::{AnyProvider, Provider};
use crate::util::cache::VideoCache;
use crate::util::interleave;
use crate::videos::{self, ServerOptions, VideoItem};
use crate::DbPool;
@@ -34,17 +36,37 @@ impl Provider for AllProvider {
&self,
cache: VideoCache,
pool: DbPool,
_channel: String,
sort: String,
query: Option<String>,
page: String,
per_page: String,
options: ServerOptions,
) -> Vec<VideoItem> {
let sites = options.sites.unwrap();
let mut sites_str = options.clone().sites.unwrap();
if sites_str.is_empty() {
sites_str = "perverzija,hanime,spankbang,pmvhaven,redtube,pornhub,rule34video".to_string();
}
let sites = sites_str
.split(',')
.map(|s| s.to_string()) // or s.to_owned()
.collect::<Vec<String>>();
let providers = sites.iter().map(|el| get_provider(el.as_str()).unwrap()).collect::<Vec<AnyProvider>>();
let futures = providers.iter().map(|provider| {
provider.get_videos(
cache.clone(),
pool.clone(),
sort.clone(),
query.clone(),
page.clone(),
per_page.clone(),
options.clone()
)
}).collect::<Vec<_>>();
let results:Vec<Vec<VideoItem>> = join_all(futures).await;
let video_items: Vec<VideoItem> = interleave(&results);
println!("Sites: {:?}", sites);
return vec![];
return video_items;
}
}