From 68c734dbb968a0afdd6810f7f09e5e4b3b0786c6 Mon Sep 17 00:00:00 2001 From: yggverse Date: Sat, 2 Aug 2025 15:33:07 +0300 Subject: [PATCH] use info_hash namespace for the tmp data --- src/main.rs | 6 +++--- src/preload.rs | 24 +++++++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index 952a976..5088d96 100644 --- a/src/main.rs +++ b/src/main.rs @@ -43,7 +43,7 @@ async fn main() -> Result<()> { )?; let trackers = Trackers::init(&config.tracker)?; let session = librqbit::Session::new_with_opts( - preload.directory().clone(), + preload.root(), SessionOptions { bind_device_name: config.bind, listen: None, @@ -128,7 +128,7 @@ async fn main() -> Result<()> { config.preload_max_filecount.unwrap_or_default(), )), // the folder to preload temporary files (e.g. images for the audio albums) - output_folder: Some(preload.directory().to_string_lossy().to_string()), + output_folder: Some(preload.output_folder(&i)?), ..Default::default() }), ), @@ -247,7 +247,7 @@ async fn main() -> Result<()> { .delete(librqbit::api::TorrentIdOrHash::Id(id), false) .await?; // cleanup tmp dir - preload.clear()?; + preload.clear_output_folder(&i)?; if config.debug { println!("\t\t\tadd `{i}` to index.") } diff --git a/src/preload.rs b/src/preload.rs index 8f7ced4..bcabd26 100644 --- a/src/preload.rs +++ b/src/preload.rs @@ -24,20 +24,22 @@ impl Preload { }) } - pub fn clear(&self) -> Result<()> { - for e in fs::read_dir(&self.directory)? { - let p = e?.path(); - if p.is_dir() { - fs::remove_dir_all(p)?; - } else { - fs::remove_file(p)?; - } - } + pub fn clear_output_folder(&self, info_hash: &str) -> Result<()> { + let mut p = PathBuf::from(&self.directory); + p.push(info_hash); + fs::remove_dir_all(&p)?; Ok(()) } - pub fn directory(&self) -> &PathBuf { - &self.directory + pub fn output_folder(&self, info_hash: &str) -> Result { + let mut p = PathBuf::from(&self.directory); + p.push(info_hash); + fs::create_dir(&p)?; + Ok(p.to_string_lossy().to_string()) + } + + pub fn root(&self) -> PathBuf { + self.directory.clone() } pub fn bytes(&self, path: &PathBuf) -> Result> {