diff options
Diffstat (limited to 'import/src')
-rw-r--r-- | import/src/lib.rs | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/import/src/lib.rs b/import/src/lib.rs index 32f861e..7d1b635 100644 --- a/import/src/lib.rs +++ b/import/src/lib.rs @@ -335,11 +335,13 @@ fn import_media_file( let node = NodeID::from_slug(&slug); + let meta = path.metadata()?; + db.update_node_init(node, |node| { node.slug = slug; node.title = info.title.or(node.title.clone()); node.visibility = visibility; - node.poster = m.cover.clone(); + node.poster = m.cover.or(node.poster.clone()); node.description = tags .remove("DESCRIPTION") .or(tags.remove("SYNOPSIS")) @@ -438,6 +440,9 @@ fn import_media_file( } } + // TODO merge size + node.storage_size = meta.len(); + // TODO merge tracks node.media = Some(MediaInfo { chapters: m .chapters @@ -462,7 +467,9 @@ fn import_media_file( chaps }) .unwrap_or_default(), - duration: (info.duration.unwrap_or_default() * info.timestamp_scale as f64) * 1e-9, + duration: fix_invalid_runtime( + info.duration.unwrap_or_default() * info.timestamp_scale as f64 * 1e-9, + ), tracks, }); @@ -702,3 +709,11 @@ fn clean_uploader_name(mut s: &str) -> &str { s = s.strip_prefix("Uploads from ").unwrap_or(s); s } + +fn fix_invalid_runtime(d: f64) -> f64 { + match d { + // Broken durations found experimentally + 359999.999 | 359999.000 | 86399.999 | 86399.99900000001 => 0., + x => x, + } +} |