aboutsummaryrefslogtreecommitdiff
path: root/import
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-11-18 12:08:34 +0100
committermetamuffin <metamuffin@disroot.org>2025-11-18 12:08:34 +0100
commitbac47e456085ea153ae6ae1b1e28e41868693c9c (patch)
tree062c157d66faa3935c1175433732d30c07d1cd5b /import
parentf3af9263b0472bcef3207906ce0e4d1d4aa3595b (diff)
downloadjellything-bac47e456085ea153ae6ae1b1e28e41868693c9c.tar
jellything-bac47e456085ea153ae6ae1b1e28e41868693c9c.tar.bz2
jellything-bac47e456085ea153ae6ae1b1e28e41868693c9c.tar.zst
start reworking model
Diffstat (limited to 'import')
-rw-r--r--import/asset_token/src/lib.rs5
-rw-r--r--import/src/lib.rs54
2 files changed, 22 insertions, 37 deletions
diff --git a/import/asset_token/src/lib.rs b/import/asset_token/src/lib.rs
index 0a120f0..ef1850e 100644
--- a/import/asset_token/src/lib.rs
+++ b/import/asset_token/src/lib.rs
@@ -6,7 +6,6 @@
use aes_gcm_siv::{aead::Aead, Aes256GcmSiv, KeyInit};
use anyhow::{anyhow, bail, Context};
use base64::Engine;
-use bincode::{Decode, Encode};
use jellycache::CachePath;
pub use jellycommon as common;
use jellycommon::{Asset, LocalTrack};
@@ -46,10 +45,10 @@ static ASSET_KEY: LazyLock<Aes256GcmSiv> = LazyLock::new(|| {
}
});
-#[derive(Debug, Encode, Decode, Serialize, PartialEq, Eq)]
+#[derive(Debug, Serialize, PartialEq, Eq)]
pub enum AssetInner {
Federated { host: String, asset: Vec<u8> },
- Cache(#[bincode(with_serde)] CachePath),
+ Cache(CachePath),
Assets(PathBuf),
Media(PathBuf),
LocalTrack(LocalTrack),
diff --git a/import/src/lib.rs b/import/src/lib.rs
index 1fd8bc7..1a1d5ad 100644
--- a/import/src/lib.rs
+++ b/import/src/lib.rs
@@ -24,7 +24,7 @@ use infojson::YVideo;
use jellycache::{cache_file, cache_memory};
use jellycommon::{
Appearance, Chapter, LocalTrack, MediaInfo, Node, NodeID, NodeKind, ObjectIds, PeopleGroup,
- Person, Rating, SourceTrack, SourceTrackKind, TmdbKind, TrackSource, TraktKind, Visibility,
+ Person, RatingType, SourceTrack, SourceTrackKind, TmdbKind, TrackSource, TraktKind, Visibility,
};
use jellyimport_fallback_generator::generate_fallback;
use jellyremuxer::{
@@ -291,7 +291,7 @@ fn import_file(
merge_option(&mut node.description, data.description);
merge_option(&mut node.index, data.index);
merge_option(&mut node.release_date, data.release_date);
- node.external_ids.extend(data.external_ids);
+ node.identifiers.extend(data.identifiers);
Ok(())
})?;
@@ -323,10 +323,10 @@ fn import_file(
node.kind = NodeKind::Channel;
node.title = Some(clean_uploader_name(&data.title).to_owned());
if let Some(cid) = data.channel_id {
- node.external_ids.insert("youtube.channel".to_string(), cid);
+ node.identifiers.insert("youtube.channel".to_string(), cid);
}
if let Some(uid) = data.uploader_id {
- node.external_ids
+ node.identifiers
.insert("youtube.channelname".to_string(), uid);
}
if let Some(desc) = data.description {
@@ -334,7 +334,7 @@ fn import_file(
}
if let Some(followers) = data.channel_follower_count {
node.ratings
- .insert(Rating::YoutubeFollowers, followers as f64);
+ .insert(RatingType::YoutubeFollowers, followers as f64);
}
Ok(())
})?;
@@ -401,7 +401,8 @@ fn import_media_file(
.transpose()?;
let mut tags = m
- .tags.first()
+ .tags
+ .first()
.map(|tags| {
tags.tags
.iter()
@@ -508,7 +509,7 @@ fn import_media_file(
node.tagline = tags.remove("COMMENT").or(node.tagline.clone());
node.parents.insert(parent);
- node.external_ids.extend(eids);
+ node.identifiers.extend(eids);
if let Some(ct) = tags.get("CONTENT_TYPE") {
node.kind = match ct.to_lowercase().trim() {
@@ -533,9 +534,6 @@ fn import_media_file(
SourceTrackKind::Video {
width: video.pixel_width,
height: video.pixel_height,
- display_width: video.display_width,
- display_height: video.display_height,
- display_unit: video.display_unit,
fps: video.frame_rate,
}
} else if let Some(audio) = &track.audio {
@@ -594,20 +592,17 @@ fn import_media_file(
}
match infojson.extractor.as_str() {
"youtube" => {
- node.external_ids
+ node.identifiers
.insert("youtube.video".to_string(), infojson.id);
node.ratings.insert(
- Rating::YoutubeViews,
+ RatingType::YoutubeViews,
infojson.view_count.unwrap_or_default() as f64,
);
if let Some(lc) = infojson.like_count {
- node.ratings.insert(Rating::YoutubeLikes, lc as f64);
+ node.ratings.insert(RatingType::YoutubeLikes, lc as f64);
}
}
- "Bandcamp" => drop(
- node.external_ids
- .insert("bandcamp".to_string(), infojson.id),
- ),
+ "Bandcamp" => drop(node.identifiers.insert("bandcamp".to_string(), infojson.id)),
_ => (),
}
}
@@ -686,7 +681,7 @@ fn import_media_file(
node.title = Some(episode.title.clone());
node.poster = poster.or(node.poster.clone());
node.description = episode.overview.clone().or(node.description.clone());
- node.ratings.insert(Rating::Trakt, episode.rating);
+ node.ratings.insert(RatingType::Trakt, episode.rating);
Ok(())
})?
}
@@ -770,11 +765,11 @@ fn apply_musicbrainz_recording(
db.update_node_init(node, |node| {
node.title = Some(rec.title.clone());
- node.external_ids
+ node.identifiers
.insert("musicbrainz.recording".to_string(), rec.id.to_string());
if let Some(a) = rec.artist_credit.first() {
node.subtitle = Some(a.artist.name.clone());
- node.external_ids
+ node.identifiers
.insert("musicbrainz.artist".to_string(), a.artist.id.to_string());
}
@@ -850,24 +845,15 @@ fn apply_musicbrainz_recording(
.ser(),
};
- node.people.entry(group).or_default().push(Appearance {
+ node.credits.entry(group).or_default().push(Appearance {
jobs,
characters: vec![],
- person: Person {
- name: if rel.target_credit.is_empty() {
- artist.name.clone()
- } else {
- rel.target_credit.clone()
- },
- headshot: Some(headshot),
- ids: ObjectIds::default(),
- },
});
}
}
for isrc in &rec.isrcs {
- node.external_ids
+ node.identifiers
.insert("isrc".to_string(), isrc.to_string());
}
Ok(())
@@ -944,7 +930,7 @@ fn apply_trakt_tmdb(
db.update_node_init(node, |node| {
node.title = Some(data.title.clone());
- node.people.extend(people_map);
+ node.credits.extend(people_map);
node.kind = match trakt_kind {
TraktKind::Movie => NodeKind::Movie,
TraktKind::Show => NodeKind::Show,
@@ -960,7 +946,7 @@ fn apply_trakt_tmdb(
node.tagline = Some(tagline.clone())
}
if let Some(rating) = &data.rating {
- node.ratings.insert(Rating::Trakt, *rating);
+ node.ratings.insert(RatingType::Trakt, *rating);
}
if let Some(poster) = poster {
node.poster = Some(poster);
@@ -972,7 +958,7 @@ fn apply_trakt_tmdb(
node.title = data.title.clone().or(node.title.clone());
node.tagline = data.tagline.clone().or(node.tagline.clone());
node.description = Some(data.overview.clone());
- node.ratings.insert(Rating::Tmdb, data.vote_average);
+ node.ratings.insert(RatingType::Tmdb, data.vote_average);
if let Some(date) = data.release_date.clone() {
if let Ok(date) = tmdb::parse_release_date(&date) {
node.release_date = date;