pmvhaven fix

This commit is contained in:
Simon
2026-03-05 18:59:10 +00:00
parent 2627505ade
commit 5be0a89e51

View File

@@ -12,7 +12,7 @@ use htmlentity::entity::{ICodedDataTrait, decode};
use std::fmt::Write;
use std::sync::{Arc, RwLock};
use std::vec;
use url::form_urlencoded::byte_serialize;
use url::form_urlencoded::Serializer;
error_chain! {
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 {
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();
if let Ok(stars) = self.stars.read() {
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}"));
}
}
if let Ok(cats) = self.categories.read() {
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"));
}
}
@@ -223,14 +230,6 @@ impl PmvhavenProvider {
"{}/api/videos/search?limit=100&page={page}{duration}{sort}{extra_filters}&query={encoded_search}",
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");