diff options
Diffstat (limited to 'import/src/lib.rs')
-rw-r--r-- | import/src/lib.rs | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/import/src/lib.rs b/import/src/lib.rs index a22551e..c841294 100644 --- a/import/src/lib.rs +++ b/import/src/lib.rs @@ -10,13 +10,12 @@ use jellycommon::{ Chapter, LocalTrack, MediaInfo, Node, NodeID, NodeKind, Rating, SourceTrack, SourceTrackKind, TrackSource, }; -use log::info; use matroska::matroska_metadata; use rayon::iter::{ParallelDrainRange, ParallelIterator}; use std::{ collections::HashMap, fs::File, - io::{BufReader, Read}, + io::BufReader, mem::swap, path::{Path, PathBuf}, sync::LazyLock, @@ -170,9 +169,10 @@ fn import_file(db: &Database, path: &Path) -> Result<()> { .to_owned(), ); node.external_ids - .insert("youtube".to_string(), data.channel_id); + .insert("youtube:channel".to_string(), data.channel_id); if let Some(uid) = data.uploader_id { - node.external_ids.insert("youtube".to_string(), uid); + node.external_ids + .insert("youtube:channel-name".to_string(), uid); } node.description = Some(data.description); if let Some(followers) = data.channel_follower_count { @@ -185,19 +185,15 @@ fn import_file(db: &Database, path: &Path) -> Result<()> { _ => (), } - let mut magic = [0; 4]; - File::open(path)?.read_exact(&mut magic).ok(); - if matches!(magic, [0x1A, 0x45, 0xDF, 0xA3]) { - import_media_file(db, path, parent).context("media file")?; - } + import_media_file(db, path, parent).context("media file")?; Ok(()) } fn import_media_file(db: &Database, path: &Path, parent: NodeID) -> Result<()> { - info!("reading media file {path:?}"); - - let m = (*matroska_metadata(path)?).to_owned(); + let Some(m) = (*matroska_metadata(path)?).to_owned() else { + return Ok(()); + }; let info = m.info.ok_or(anyhow!("no info"))?; let tracks = m.tracks.ok_or(anyhow!("no tracks"))?; @@ -251,7 +247,8 @@ fn import_media_file(db: &Database, path: &Path, parent: NodeID) -> Result<()> { node.release_date = Some(infojson::parse_upload_date(date).context("parsing upload date")?); } - node.external_ids.insert("youtube".to_string(), infojson.id); + node.external_ids + .insert("youtube:video".to_string(), infojson.id); node.ratings.insert( Rating::YoutubeViews, infojson.view_count.unwrap_or_default() as f64, |