aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--import/src/main.rs18
-rw-r--r--remuxer/src/import/seek_index.rs19
2 files changed, 21 insertions, 16 deletions
diff --git a/import/src/main.rs b/import/src/main.rs
index bf90eb2..d40916a 100644
--- a/import/src/main.rs
+++ b/import/src/main.rs
@@ -9,7 +9,7 @@ use anyhow::Context;
use clap::{Parser, Subcommand};
use jellycommon::{AssetLocation, MediaInfo, MediaSource, Node, NodeKind, NodePrivate, NodePublic};
use jellymatroska::read::EbmlReader;
-use jellyremuxer::import::{import_metadata, seek_index::import_seek_index};
+use jellyremuxer::import::{import_metadata, seek_index};
use log::{info, warn};
use std::{
fs::{remove_file, File},
@@ -115,7 +115,7 @@ fn main() -> anyhow::Result<()> {
.transpose()?;
let mut kind = NodeKind::Series;
- let (mut file_meta, mut seek_index, mut source_path_e) = Default::default();
+ let (mut file_meta, mut source_path_e) = Default::default();
if let Some(input_path) = &input {
source_path_e = Some(path.join(format!("source.mkv")));
@@ -125,11 +125,6 @@ fn main() -> anyhow::Result<()> {
let mut input = EbmlReader::new(input);
import_metadata(&mut input)?
});
- seek_index = {
- let input = File::open(&input_path).unwrap();
- let mut input = EbmlReader::new(input);
- import_seek_index(&mut input)?
- };
kind = if video {
NodeKind::Video
@@ -262,14 +257,7 @@ fn main() -> anyhow::Result<()> {
}
std::os::unix::fs::symlink(&input, &source_path)?;
}
- for (tn, index) in seek_index {
- info!("writing index {tn} with {} blocks", index.blocks.len());
- bincode::encode_into_std_write(
- index,
- &mut File::create(source_path.with_extension(&format!("si.{tn}")))?,
- bincode::config::standard(),
- )?;
- }
+ seek_index::write_all(&source_path)?;
}
let f = File::create(path.join(if series {
"directory.json".to_string()
diff --git a/remuxer/src/import/seek_index.rs b/remuxer/src/import/seek_index.rs
index 363a12f..0427287 100644
--- a/remuxer/src/import/seek_index.rs
+++ b/remuxer/src/import/seek_index.rs
@@ -7,7 +7,24 @@ use jellymatroska::{
MatroskaTag,
};
use log::{debug, info, trace, warn};
-use std::collections::BTreeMap;
+use std::{collections::BTreeMap, fs::File, path::Path};
+
+pub fn write_all(path: &Path) -> Result<()> {
+ let seek_index = {
+ let input = File::open(&path).unwrap();
+ let mut input = EbmlReader::new(input);
+ import_seek_index(&mut input)?
+ };
+ for (tn, index) in seek_index {
+ info!("writing index {tn} with {} blocks", index.blocks.len());
+ bincode::encode_into_std_write(
+ index,
+ &mut File::create(path.with_extension(&format!("si.{tn}")))?,
+ bincode::config::standard(),
+ )?;
+ }
+ Ok(())
+}
pub fn import_seek_index(input: &mut EbmlReader) -> Result<BTreeMap<u64, SeekIndex>> {
let mut seek_index = BTreeMap::new();