diff --git a/src/api.rs b/src/api.rs index 37ccfe4..24f34ce 100644 --- a/src/api.rs +++ b/src/api.rs @@ -554,7 +554,6 @@ async fn videos_post( .get_videos( cache.get_ref().clone(), pool.get_ref().clone(), - channel.clone(), sort.clone(), query.clone(), page.to_string(), @@ -574,7 +573,6 @@ async fn videos_post( let provider_clone = provider.clone(); let cache_clone = cache.get_ref().clone(); let pool_clone = pool.get_ref().clone(); - let channel_clone = channel.clone(); let sort_clone = sort.clone(); let query_clone = query.clone(); let per_page_clone = perPage.to_string(); @@ -588,7 +586,6 @@ async fn videos_post( .get_videos( cache_clone, pool_clone, - channel_clone, sort_clone, query_clone, next_page.to_string(), diff --git a/src/providers/all.rs b/src/providers/all.rs index b8ffb51..4ffd987 100644 --- a/src/providers/all.rs +++ b/src/providers/all.rs @@ -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, page: String, per_page: String, options: ServerOptions, ) -> Vec { - 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::>(); + let providers = sites.iter().map(|el| get_provider(el.as_str()).unwrap()).collect::>(); + + 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::>(); + let results:Vec> = join_all(futures).await; + let video_items: Vec = interleave(&results); + - println!("Sites: {:?}", sites); - - return vec![]; + return video_items; } } diff --git a/src/providers/hanime.rs b/src/providers/hanime.rs index a62ced2..53b5b93 100644 --- a/src/providers/hanime.rs +++ b/src/providers/hanime.rs @@ -259,7 +259,6 @@ impl Provider for HanimeProvider { &self, cache: VideoCache, pool: DbPool, - _channel: String, sort: String, query: Option, page: String, diff --git a/src/providers/mod.rs b/src/providers/mod.rs index 96d7112..cd84ff4 100644 --- a/src/providers/mod.rs +++ b/src/providers/mod.rs @@ -18,7 +18,6 @@ pub trait Provider { &self, cache: VideoCache, pool: DbPool, - channel: String, sort: String, query: Option, page: String, @@ -44,7 +43,6 @@ impl Provider for AnyProvider { &self, cache: VideoCache, pool: DbPool, - channel: String, sort: String, query: Option, page: String, @@ -52,15 +50,14 @@ impl Provider for AnyProvider { options: ServerOptions ) -> Vec { println!( - "/api/videos: channel={:?}, sort={:?}, query={:?}, page={:?}", - channel, sort, query, page + "/api/videos: sort={:?}, query={:?}, page={:?}, provider={:?}", + sort, query, page, self ); match self { AnyProvider::Perverzija(p) => { p.get_videos( cache.clone(), pool.clone(), - channel.clone(), sort.clone(), query.clone(), page.clone(), @@ -70,31 +67,31 @@ impl Provider for AnyProvider { .await } AnyProvider::Hanime(p) => { - p.get_videos(cache, pool, channel, sort, query, page, per_page, options,) + p.get_videos(cache, pool, sort, query, page, per_page, options,) .await } AnyProvider::Spankbang(p) => { - p.get_videos(cache, pool, channel, sort, query, page, per_page, options,) + p.get_videos(cache, pool, sort, query, page, per_page, options,) .await } AnyProvider::Pornhub(p) => { - p.get_videos(cache, pool, channel, sort, query, page, per_page, options,) + p.get_videos(cache, pool, sort, query, page, per_page, options,) .await } AnyProvider::Pmvhaven(p) => { - p.get_videos(cache, pool, channel, sort, query, page, per_page, options,) + p.get_videos(cache, pool, sort, query, page, per_page, options,) .await } AnyProvider::Rule34video(p) => { - p.get_videos(cache, pool, channel, sort, query, page, per_page, options,) + p.get_videos(cache, pool, sort, query, page, per_page, options,) .await } AnyProvider::Redtube(p) => { - p.get_videos(cache, pool, channel, sort, query, page, per_page, options,) + p.get_videos(cache, pool, sort, query, page, per_page, options,) .await } AnyProvider::All(p) => { - p.get_videos(cache, pool, channel, sort, query, page, per_page, options,) + p.get_videos(cache, pool, sort, query, page, per_page, options,) .await } } diff --git a/src/providers/perverzija.rs b/src/providers/perverzija.rs index 1b61ee2..9d2322c 100644 --- a/src/providers/perverzija.rs +++ b/src/providers/perverzija.rs @@ -546,7 +546,6 @@ impl Provider for PerverzijaProvider { &self, cache: VideoCache, pool: DbPool, - _channel: String, sort: String, query: Option, page: String, diff --git a/src/providers/pmvhaven.rs b/src/providers/pmvhaven.rs index c61eaab..b67b92c 100644 --- a/src/providers/pmvhaven.rs +++ b/src/providers/pmvhaven.rs @@ -419,7 +419,6 @@ impl Provider for PmvhavenProvider { &self, cache: VideoCache, pool: DbPool, - _channel: String, sort: String, query: Option, page: String, diff --git a/src/providers/pornhub.rs b/src/providers/pornhub.rs index fecea48..7c3da74 100644 --- a/src/providers/pornhub.rs +++ b/src/providers/pornhub.rs @@ -326,7 +326,6 @@ impl Provider for PornhubProvider { &self, cache: VideoCache, pool: DbPool, - _channel: String, sort: String, query: Option, page: String, diff --git a/src/providers/redtube.rs b/src/providers/redtube.rs index 624ae8f..dd922f5 100644 --- a/src/providers/redtube.rs +++ b/src/providers/redtube.rs @@ -261,7 +261,6 @@ impl Provider for RedtubeProvider { &self, cache: VideoCache, pool: DbPool, - _channel: String, sort: String, query: Option, page: String, diff --git a/src/providers/rule34video.rs b/src/providers/rule34video.rs index abc9470..3f988af 100644 --- a/src/providers/rule34video.rs +++ b/src/providers/rule34video.rs @@ -287,7 +287,6 @@ impl Provider for Rule34videoProvider { &self, cache: VideoCache, pool: DbPool, - _channel: String, sort: String, query: Option, page: String, diff --git a/src/providers/spankbang.rs b/src/providers/spankbang.rs index c72e91f..1d26262 100644 --- a/src/providers/spankbang.rs +++ b/src/providers/spankbang.rs @@ -353,7 +353,6 @@ impl Provider for SpankbangProvider { &self, cache: VideoCache, pool: DbPool, - _channel: String, mut sort: String, query: Option, page: String,