aboutsummaryrefslogtreecommitdiff
path: root/import/src/lib.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-06-11 14:08:38 +0200
committermetamuffin <metamuffin@disroot.org>2024-06-11 14:08:38 +0200
commit5ccadd8349d30de62959cb98ece6eebd3d50d40b (patch)
tree124ab319b56dfe73f33df183f07953020ed66fb3 /import/src/lib.rs
parent29eb56f03ac122bda1b12909592e76d34d79b542 (diff)
downloadjellything-5ccadd8349d30de62959cb98ece6eebd3d50d40b.tar
jellything-5ccadd8349d30de62959cb98ece6eebd3d50d40b.tar.bz2
jellything-5ccadd8349d30de62959cb98ece6eebd3d50d40b.tar.zst
change probe cache path to be relative
Diffstat (limited to 'import/src/lib.rs')
-rw-r--r--import/src/lib.rs20
1 files changed, 15 insertions, 5 deletions
diff --git a/import/src/lib.rs b/import/src/lib.rs
index 544937c..89088e9 100644
--- a/import/src/lib.rs
+++ b/import/src/lib.rs
@@ -50,9 +50,13 @@ use tokio::{
use trakt::Trakt;
static IMPORT_SEM: LazyLock<Semaphore> = LazyLock::new(|| Semaphore::new(1));
-
pub static IMPORT_ERRORS: RwLock<Vec<String>> = RwLock::const_new(Vec::new());
+static RE_EPISODE_FILENAME: LazyLock<Regex> =
+ LazyLock::new(|| Regex::new(r#"([sS](\d+))?([eE](\d+))( (.+))?"#).unwrap());
+static RE_YOUTUBE_ID: LazyLock<Regex> =
+ LazyLock::new(|| Regex::new(r#"\[([A-Za-z0-9_-]{11})\]"#).unwrap());
+
struct Apis {
trakt: Option<Trakt>,
tmdb: Option<Tmdb>,
@@ -473,8 +477,9 @@ async fn process_source(
let _permit = SEM_IMPORT.acquire().await.unwrap();
let metadata = {
let abspath = abspath.clone();
+ let mpath = mpath.to_owned();
spawn_blocking(move || {
- cache_memory(&["probe", abspath.to_str().unwrap()], || {
+ cache_memory(&["probe", mpath.to_str().unwrap()], || {
let input = File::open(&abspath).context("opening media file")?;
let mut input = EbmlReader::new(BufReader::new(input));
import_metadata(&mut input)
@@ -489,6 +494,14 @@ async fn process_source(
let mut node = Node::default();
if !ignore_metadata {
+ if let Some(captures) =
+ RE_EPISODE_FILENAME.captures(abspath.file_stem().unwrap().to_str().unwrap())
+ {
+ node.public.index = captures.get(4).and_then(|a| a.as_str().parse().ok());
+ if let Some(title) = captures.get(6) {
+ node.public.title = Some(title.as_str().to_string());
+ }
+ }
node.public.title = metadata.title;
node.public.description = metadata.description;
node.public.tagline = metadata.tagline;
@@ -613,9 +626,6 @@ async fn process_source(
Ok(errors)
}
-static RE_YOUTUBE_ID: LazyLock<Regex> =
- LazyLock::new(|| Regex::new(r#"\[([A-Za-z0-9_-]{11})\]"#).unwrap());
-
pub fn infer_id_from_path(path: &Path) -> anyhow::Result<String> {
let f = path
.file_stem()