all provider
This commit is contained in:
@@ -554,7 +554,6 @@ async fn videos_post(
|
|||||||
.get_videos(
|
.get_videos(
|
||||||
cache.get_ref().clone(),
|
cache.get_ref().clone(),
|
||||||
pool.get_ref().clone(),
|
pool.get_ref().clone(),
|
||||||
channel.clone(),
|
|
||||||
sort.clone(),
|
sort.clone(),
|
||||||
query.clone(),
|
query.clone(),
|
||||||
page.to_string(),
|
page.to_string(),
|
||||||
@@ -574,7 +573,6 @@ async fn videos_post(
|
|||||||
let provider_clone = provider.clone();
|
let provider_clone = provider.clone();
|
||||||
let cache_clone = cache.get_ref().clone();
|
let cache_clone = cache.get_ref().clone();
|
||||||
let pool_clone = pool.get_ref().clone();
|
let pool_clone = pool.get_ref().clone();
|
||||||
let channel_clone = channel.clone();
|
|
||||||
let sort_clone = sort.clone();
|
let sort_clone = sort.clone();
|
||||||
let query_clone = query.clone();
|
let query_clone = query.clone();
|
||||||
let per_page_clone = perPage.to_string();
|
let per_page_clone = perPage.to_string();
|
||||||
@@ -588,7 +586,6 @@ async fn videos_post(
|
|||||||
.get_videos(
|
.get_videos(
|
||||||
cache_clone,
|
cache_clone,
|
||||||
pool_clone,
|
pool_clone,
|
||||||
channel_clone,
|
|
||||||
sort_clone,
|
sort_clone,
|
||||||
query_clone,
|
query_clone,
|
||||||
next_page.to_string(),
|
next_page.to_string(),
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ use futures::future::join_all;
|
|||||||
use serde_json::error::Category;
|
use serde_json::error::Category;
|
||||||
use wreq::Client;
|
use wreq::Client;
|
||||||
use wreq_util::Emulation;
|
use wreq_util::Emulation;
|
||||||
|
use crate::api::get_provider;
|
||||||
use crate::db;
|
use crate::db;
|
||||||
use crate::providers::Provider;
|
use crate::providers::{AnyProvider, Provider};
|
||||||
use crate::util::cache::VideoCache;
|
use crate::util::cache::VideoCache;
|
||||||
|
use crate::util::interleave;
|
||||||
use crate::videos::{self, ServerOptions, VideoItem};
|
use crate::videos::{self, ServerOptions, VideoItem};
|
||||||
use crate::DbPool;
|
use crate::DbPool;
|
||||||
|
|
||||||
@@ -34,17 +36,37 @@ impl Provider for AllProvider {
|
|||||||
&self,
|
&self,
|
||||||
cache: VideoCache,
|
cache: VideoCache,
|
||||||
pool: DbPool,
|
pool: DbPool,
|
||||||
_channel: String,
|
|
||||||
sort: String,
|
sort: String,
|
||||||
query: Option<String>,
|
query: Option<String>,
|
||||||
page: String,
|
page: String,
|
||||||
per_page: String,
|
per_page: String,
|
||||||
options: ServerOptions,
|
options: ServerOptions,
|
||||||
) -> Vec<VideoItem> {
|
) -> 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 video_items;
|
||||||
|
|
||||||
return vec![];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -259,7 +259,6 @@ impl Provider for HanimeProvider {
|
|||||||
&self,
|
&self,
|
||||||
cache: VideoCache,
|
cache: VideoCache,
|
||||||
pool: DbPool,
|
pool: DbPool,
|
||||||
_channel: String,
|
|
||||||
sort: String,
|
sort: String,
|
||||||
query: Option<String>,
|
query: Option<String>,
|
||||||
page: String,
|
page: String,
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ pub trait Provider {
|
|||||||
&self,
|
&self,
|
||||||
cache: VideoCache,
|
cache: VideoCache,
|
||||||
pool: DbPool,
|
pool: DbPool,
|
||||||
channel: String,
|
|
||||||
sort: String,
|
sort: String,
|
||||||
query: Option<String>,
|
query: Option<String>,
|
||||||
page: String,
|
page: String,
|
||||||
@@ -44,7 +43,6 @@ impl Provider for AnyProvider {
|
|||||||
&self,
|
&self,
|
||||||
cache: VideoCache,
|
cache: VideoCache,
|
||||||
pool: DbPool,
|
pool: DbPool,
|
||||||
channel: String,
|
|
||||||
sort: String,
|
sort: String,
|
||||||
query: Option<String>,
|
query: Option<String>,
|
||||||
page: String,
|
page: String,
|
||||||
@@ -52,15 +50,14 @@ impl Provider for AnyProvider {
|
|||||||
options: ServerOptions
|
options: ServerOptions
|
||||||
) -> Vec<VideoItem> {
|
) -> Vec<VideoItem> {
|
||||||
println!(
|
println!(
|
||||||
"/api/videos: channel={:?}, sort={:?}, query={:?}, page={:?}",
|
"/api/videos: sort={:?}, query={:?}, page={:?}, provider={:?}",
|
||||||
channel, sort, query, page
|
sort, query, page, self
|
||||||
);
|
);
|
||||||
match self {
|
match self {
|
||||||
AnyProvider::Perverzija(p) => {
|
AnyProvider::Perverzija(p) => {
|
||||||
p.get_videos(
|
p.get_videos(
|
||||||
cache.clone(),
|
cache.clone(),
|
||||||
pool.clone(),
|
pool.clone(),
|
||||||
channel.clone(),
|
|
||||||
sort.clone(),
|
sort.clone(),
|
||||||
query.clone(),
|
query.clone(),
|
||||||
page.clone(),
|
page.clone(),
|
||||||
@@ -70,31 +67,31 @@ impl Provider for AnyProvider {
|
|||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
AnyProvider::Hanime(p) => {
|
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
|
.await
|
||||||
}
|
}
|
||||||
AnyProvider::Spankbang(p) => {
|
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
|
.await
|
||||||
}
|
}
|
||||||
AnyProvider::Pornhub(p) => {
|
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
|
.await
|
||||||
}
|
}
|
||||||
AnyProvider::Pmvhaven(p) => {
|
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
|
.await
|
||||||
}
|
}
|
||||||
AnyProvider::Rule34video(p) => {
|
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
|
.await
|
||||||
}
|
}
|
||||||
AnyProvider::Redtube(p) => {
|
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
|
.await
|
||||||
}
|
}
|
||||||
AnyProvider::All(p) => {
|
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
|
.await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -546,7 +546,6 @@ impl Provider for PerverzijaProvider {
|
|||||||
&self,
|
&self,
|
||||||
cache: VideoCache,
|
cache: VideoCache,
|
||||||
pool: DbPool,
|
pool: DbPool,
|
||||||
_channel: String,
|
|
||||||
sort: String,
|
sort: String,
|
||||||
query: Option<String>,
|
query: Option<String>,
|
||||||
page: String,
|
page: String,
|
||||||
|
|||||||
@@ -419,7 +419,6 @@ impl Provider for PmvhavenProvider {
|
|||||||
&self,
|
&self,
|
||||||
cache: VideoCache,
|
cache: VideoCache,
|
||||||
pool: DbPool,
|
pool: DbPool,
|
||||||
_channel: String,
|
|
||||||
sort: String,
|
sort: String,
|
||||||
query: Option<String>,
|
query: Option<String>,
|
||||||
page: String,
|
page: String,
|
||||||
|
|||||||
@@ -326,7 +326,6 @@ impl Provider for PornhubProvider {
|
|||||||
&self,
|
&self,
|
||||||
cache: VideoCache,
|
cache: VideoCache,
|
||||||
pool: DbPool,
|
pool: DbPool,
|
||||||
_channel: String,
|
|
||||||
sort: String,
|
sort: String,
|
||||||
query: Option<String>,
|
query: Option<String>,
|
||||||
page: String,
|
page: String,
|
||||||
|
|||||||
@@ -261,7 +261,6 @@ impl Provider for RedtubeProvider {
|
|||||||
&self,
|
&self,
|
||||||
cache: VideoCache,
|
cache: VideoCache,
|
||||||
pool: DbPool,
|
pool: DbPool,
|
||||||
_channel: String,
|
|
||||||
sort: String,
|
sort: String,
|
||||||
query: Option<String>,
|
query: Option<String>,
|
||||||
page: String,
|
page: String,
|
||||||
|
|||||||
@@ -287,7 +287,6 @@ impl Provider for Rule34videoProvider {
|
|||||||
&self,
|
&self,
|
||||||
cache: VideoCache,
|
cache: VideoCache,
|
||||||
pool: DbPool,
|
pool: DbPool,
|
||||||
_channel: String,
|
|
||||||
sort: String,
|
sort: String,
|
||||||
query: Option<String>,
|
query: Option<String>,
|
||||||
page: String,
|
page: String,
|
||||||
|
|||||||
@@ -353,7 +353,6 @@ impl Provider for SpankbangProvider {
|
|||||||
&self,
|
&self,
|
||||||
cache: VideoCache,
|
cache: VideoCache,
|
||||||
pool: DbPool,
|
pool: DbPool,
|
||||||
_channel: String,
|
|
||||||
mut sort: String,
|
mut sort: String,
|
||||||
query: Option<String>,
|
query: Option<String>,
|
||||||
page: String,
|
page: String,
|
||||||
|
|||||||
Reference in New Issue
Block a user