diff --git a/src/providers/porndish.rs b/src/providers/porndish.rs
index 6c7b399..48efb91 100644
--- a/src/providers/porndish.rs
+++ b/src/providers/porndish.rs
@@ -981,8 +981,10 @@ sys.stdout.buffer.write(response.content)
item.title = title;
}
- if let Some(thumb) = parsed_thumb {
- item.thumb = self.proxied_thumb(options, &thumb);
+ if item.thumb.is_empty() {
+ if let Some(thumb) = parsed_thumb {
+ item.thumb = self.proxied_thumb(options, &thumb);
+ }
}
if let Some(uploader) = parsed_uploader {
@@ -1306,6 +1308,8 @@ impl PorndishThumbPolicy {
#[cfg(test)]
mod tests {
use super::PorndishProvider;
+ use crate::util::requester::Requester;
+ use crate::videos::{ServerOptions, VideoItem};
#[test]
fn builds_archive_and_search_urls() {
@@ -1419,4 +1423,59 @@ mod tests {
"https://example.com/e/abc123"
));
}
+
+ #[tokio::test]
+ async fn preserves_list_thumb_when_detail_has_og_image() {
+ let provider = PorndishProvider::new();
+ let mut requester = Requester::new();
+ let options = ServerOptions {
+ featured: None,
+ category: None,
+ sites: None,
+ filter: None,
+ language: None,
+ public_url_base: None,
+ requester: None,
+ network: None,
+ stars: None,
+ categories: None,
+ duration: None,
+ sort: None,
+ sexuality: None,
+ };
+ let item = VideoItem::new(
+ "foo".to_string(),
+ "Example".to_string(),
+ "https://www.porndish.com/porn/foo/".to_string(),
+ "porndish".to_string(),
+ "https://www.porndish.com/wp-content/uploads/list-thumb.jpg".to_string(),
+ 0,
+ );
+ let html = r#"
+
+
+
+
+
+ Example
+
+
+ "#;
+
+ let enriched = provider
+ .apply_detail_video(
+ item,
+ html,
+ "https://www.porndish.com/porn/foo/",
+ &options,
+ &mut requester,
+ )
+ .await
+ .unwrap();
+
+ assert_eq!(
+ enriched.thumb,
+ "https://www.porndish.com/wp-content/uploads/list-thumb.jpg"
+ );
+ }
}
diff --git a/src/providers/shooshtime.rs b/src/providers/shooshtime.rs
index fdb5657..c25ad8a 100644
--- a/src/providers/shooshtime.rs
+++ b/src/providers/shooshtime.rs
@@ -1141,8 +1141,10 @@ impl ShooshtimeProvider {
item = item.preview(preview.clone());
}
}
- if let Some(thumb) = preview_url {
- item.thumb = thumb;
+ if item.thumb.is_empty() {
+ if let Some(thumb) = preview_url {
+ item.thumb = thumb;
+ }
}
if let Some(source) = embed_url {
item = item.embed(VideoEmbed {
@@ -1308,3 +1310,39 @@ impl Provider for ShooshtimeProvider {
Some(self.build_channel(clientversion))
}
}
+
+#[cfg(test)]
+mod tests {
+ use super::ShooshtimeProvider;
+ use crate::videos::VideoItem;
+
+ #[test]
+ fn preserves_list_thumb_when_detail_has_preview_url() {
+ let provider = ShooshtimeProvider::new();
+ let item = VideoItem::new(
+ "123".to_string(),
+ "Example".to_string(),
+ "https://shooshtime.com/videos/example/123/".to_string(),
+ "shooshtime".to_string(),
+ "https://shooshtime.com/list-thumb.jpg".to_string(),
+ 0,
+ );
+ let html = r#"
+
+ "#;
+
+ let enriched = provider
+ .apply_detail_video(item, html, "https://shooshtime.com/videos/example/123/")
+ .unwrap();
+
+ assert_eq!(enriched.thumb, "https://shooshtime.com/list-thumb.jpg");
+ assert_eq!(
+ enriched.preview.as_deref(),
+ Some("https://shooshtime.com/detail-thumb.jpg")
+ );
+ }
+}