diff options
author | metamuffin <metamuffin@disroot.org> | 2024-04-10 19:14:11 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-04-10 19:14:49 +0200 |
commit | 3e3064b7b8adc1354ba833a0903cc59d2ef6d83f (patch) | |
tree | cd3394d47f886e5cc5ffbb4f8b647227c25e6c68 /import/src | |
parent | 50ae5ec326dbb034b325e73ffcc032b1167ddd9c (diff) | |
download | jellything-3e3064b7b8adc1354ba833a0903cc59d2ef6d83f.tar jellything-3e3064b7b8adc1354ba833a0903cc59d2ef6d83f.tar.bz2 jellything-3e3064b7b8adc1354ba833a0903cc59d2ef6d83f.tar.zst |
add subtitles
Diffstat (limited to 'import/src')
-rw-r--r-- | import/src/lib.rs | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/import/src/lib.rs b/import/src/lib.rs index 33caa77..274b63d 100644 --- a/import/src/lib.rs +++ b/import/src/lib.rs @@ -21,6 +21,7 @@ use jellybase::{ }; use jellyclient::Session; use jellycommon::{ + chrono::{Datelike, NaiveDateTime}, Asset, ExtendedNode, ImportOptions, ImportSource, MediaInfo, Node, NodeKind, NodePrivate, NodePublic, PeopleGroup, Rating, SourceTrack, TmdbKind, TrackSource, TraktKind, }; @@ -143,7 +144,12 @@ pub fn merge_nodes(db: &DataAcid) -> anyhow::Result<()> { } pub fn generate_node_paths(db: &DataAcid) -> anyhow::Result<()> { - fn traverse(db: &DataAcid, c: String, mut path: Vec<String>) -> anyhow::Result<()> { + fn traverse( + db: &DataAcid, + c: String, + mut path: Vec<String>, + parent_title: &str, + ) -> anyhow::Result<()> { let node = { let txn = db.inner.begin_write()?; let mut table = txn.open_table(T_NODE)?; @@ -159,6 +165,22 @@ pub fn generate_node_paths(db: &DataAcid) -> anyhow::Result<()> { if node.public.path.is_empty() { node.public.path = path.clone(); } + node.public.subtitle = match node.public.kind.unwrap_or_default() { + NodeKind::Movie => node.public.release_date.map(|date| { + format!( + "{}", + NaiveDateTime::from_timestamp_millis(date) + .unwrap() + .date() + .year() + ) + }), + NodeKind::Season + | NodeKind::Episode + | NodeKind::ShortFormVideo + | NodeKind::Video => Some(parent_title.to_string()), + _ => None, + }; table.insert(c.as_str(), Ser(node.clone()))?; @@ -168,12 +190,13 @@ pub fn generate_node_paths(db: &DataAcid) -> anyhow::Result<()> { }; path.push(c); + let ps = node.public.title.unwrap_or_default(); for c in node.public.children { - traverse(db, c, path.clone())?; + traverse(db, c, path.clone(), &ps)?; } Ok(()) } - traverse(db, "library".to_string(), vec![])?; + traverse(db, "library".to_string(), vec![], "Root")?; Ok(()) } @@ -653,9 +676,9 @@ fn merge_node(x: Node, y: Node) -> anyhow::Result<Node> { public: NodePublic { kind: x.public.kind.or(y.public.kind), title: x.public.title.or(y.public.title), + subtitle: x.public.subtitle.or(y.public.subtitle), id: x.public.id.or(y.public.id), path: vec![], - children: merge_children(x.public.children, y.public.children), tagline: x.public.tagline.or(y.public.tagline), description: x.public.description.or(y.public.description), |