From bb86ed2ad041aa310be5c736d571c14295bf5ce2 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 3 Feb 2025 12:09:37 +0100 Subject: re-add infojson import --- import/src/lib.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'import') diff --git a/import/src/lib.rs b/import/src/lib.rs index bc4b2ee..a4f3668 100644 --- a/import/src/lib.rs +++ b/import/src/lib.rs @@ -415,6 +415,48 @@ fn import_media_file( }) .collect::>(); + if let Some(infojson) = m.infojson { + node.kind = if !tracks + .iter() + .any(|t| matches!(t.kind, SourceTrackKind::Video { .. })) + { + NodeKind::Music + } else if infojson.duration.unwrap_or(0.) < 600. + && infojson.aspect_ratio.unwrap_or(2.) < 1. + { + NodeKind::ShortFormVideo + } else { + NodeKind::Video + }; + node.title = Some(infojson.title); + if let Some(desc) = infojson.description { + node.description = Some(desc) + } + node.tagline = Some(infojson.webpage_url); + if let Some(date) = &infojson.upload_date { + node.release_date = + Some(infojson::parse_upload_date(date).context("parsing upload date")?); + } + match infojson.extractor.as_str() { + "youtube" => { + node.external_ids + .insert("youtube:video".to_string(), infojson.id); + node.ratings.insert( + Rating::YoutubeViews, + infojson.view_count.unwrap_or_default() as f64, + ); + if let Some(lc) = infojson.like_count { + node.ratings.insert(Rating::YoutubeLikes, lc as f64); + } + } + "Bandcamp" => drop( + node.external_ids + .insert("bandcamp".to_string(), infojson.id), + ), + _ => (), + } + } + node.media = Some(MediaInfo { chapters: m .chapters -- cgit v1.2.3-70-g09d2