From cca234664e071e84136493f5dbd4be4313523d6e Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 18 May 2026 19:55:04 +0000 Subject: [PATCH] missav fix in place --- .gitignore | 3 ++- src/providers/missav.rs | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 668483f..b3c7cba 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,5 @@ Cargo.lock *.db migrations/.keep .mcp.json -*.mp4* \ No newline at end of file +*.mp4* +prompts/new-channel.md diff --git a/src/providers/missav.rs b/src/providers/missav.rs index 05efb84..11c5d58 100644 --- a/src/providers/missav.rs +++ b/src/providers/missav.rs @@ -12,7 +12,7 @@ use crate::videos::VideoItem; use async_trait::async_trait; use diesel::r2d2; use error_chain::error_chain; -use futures::future::join_all; +use futures::stream::{self, StreamExt}; use htmlentity::entity::{ICodedDataTrait, decode}; use std::collections::HashMap; use std::sync::{Arc, RwLock}; @@ -357,14 +357,16 @@ impl MissavProvider { } } - let futures = urls - .into_iter() - .map(|url| self.get_video_item(url, pool.clone(), requester.clone())); - join_all(futures) - .await - .into_iter() - .filter_map(Result::ok) - .collect() + stream::iter(urls.into_iter().map(|url| { + let pool = pool.clone(); + let requester = requester.clone(); + let provider = self.clone(); + async move { provider.get_video_item(url, pool, requester).await } + })) + .buffer_unordered(4) + .filter_map(|result| async move { result.ok() }) + .collect::>() + .await } async fn get_video_item(