pmvhaven fix
This commit is contained in:
@@ -12,7 +12,7 @@ use htmlentity::entity::{ICodedDataTrait, decode};
|
|||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
use std::vec;
|
use std::vec;
|
||||||
use url::form_urlencoded::byte_serialize;
|
use url::form_urlencoded::Serializer;
|
||||||
|
|
||||||
error_chain! {
|
error_chain! {
|
||||||
foreign_links {
|
foreign_links {
|
||||||
@@ -37,6 +37,13 @@ impl PmvhavenProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn encode_query_value(value: &str) -> String {
|
||||||
|
let mut serializer = Serializer::new(String::new());
|
||||||
|
serializer.append_pair("v", value);
|
||||||
|
let encoded = serializer.finish();
|
||||||
|
encoded.strip_prefix("v=").unwrap_or(&encoded).to_string()
|
||||||
|
}
|
||||||
|
|
||||||
fn build_channel(&self, clientversion: ClientVersion) -> Channel {
|
fn build_channel(&self, clientversion: ClientVersion) -> Channel {
|
||||||
let _ = clientversion;
|
let _ = clientversion;
|
||||||
|
|
||||||
@@ -191,19 +198,19 @@ impl PmvhavenProvider {
|
|||||||
_ => "",
|
_ => "",
|
||||||
};
|
};
|
||||||
|
|
||||||
let encoded_search: String = byte_serialize(search.as_bytes()).collect();
|
let encoded_search = Self::encode_query_value(&search);
|
||||||
|
|
||||||
let mut extra_filters = String::new();
|
let mut extra_filters = String::new();
|
||||||
if let Ok(stars) = self.stars.read() {
|
if let Ok(stars) = self.stars.read() {
|
||||||
if let Some(star) = stars.iter().find(|s| s.eq_ignore_ascii_case(&search)) {
|
if let Some(star) = stars.iter().find(|s| s.eq_ignore_ascii_case(&search)) {
|
||||||
let encoded_star: String = byte_serialize(star.as_bytes()).collect();
|
let encoded_star = Self::encode_query_value(star);
|
||||||
extra_filters.push_str(&format!("&stars={encoded_star}"));
|
extra_filters.push_str(&format!("&stars={encoded_star}"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Ok(cats) = self.categories.read() {
|
if let Ok(cats) = self.categories.read() {
|
||||||
if let Some(cat) = cats.iter().find(|c| c.eq_ignore_ascii_case(&search)) {
|
if let Some(cat) = cats.iter().find(|c| c.eq_ignore_ascii_case(&search)) {
|
||||||
let encoded_cat: String = byte_serialize(cat.as_bytes()).collect();
|
let encoded_cat = Self::encode_query_value(cat);
|
||||||
extra_filters.push_str(&format!("&tagMode=OR&tags={encoded_cat}&expandTags=false"));
|
extra_filters.push_str(&format!("&tagMode=OR&tags={encoded_cat}&expandTags=false"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -223,14 +230,6 @@ impl PmvhavenProvider {
|
|||||||
"{}/api/videos/search?limit=100&page={page}{duration}{sort}{extra_filters}&query={encoded_search}",
|
"{}/api/videos/search?limit=100&page={page}{duration}{sort}{extra_filters}&query={encoded_search}",
|
||||||
self.url
|
self.url
|
||||||
));
|
));
|
||||||
urls.push(format!(
|
|
||||||
"{}/api/videos?limit=100&page={page}{duration}{sort}{extra_filters}&q={encoded_search}",
|
|
||||||
self.url
|
|
||||||
));
|
|
||||||
urls.push(format!(
|
|
||||||
"{}/api/videos?limit=100&page={page}{duration}{sort}{extra_filters}&search={encoded_search}",
|
|
||||||
self.url
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut requester = requester_or_default(&options, "pmvhaven", "query");
|
let mut requester = requester_or_default(&options, "pmvhaven", "query");
|
||||||
|
|||||||
Reference in New Issue
Block a user