diff options
Diffstat (limited to 'import/src/lib.rs')
-rw-r--r-- | import/src/lib.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/import/src/lib.rs b/import/src/lib.rs index 8b7dc8f..4ee4a6e 100644 --- a/import/src/lib.rs +++ b/import/src/lib.rs @@ -3,6 +3,8 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin <metamuffin.org> */ +#![feature(duration_constants)] +use acoustid::AcoustID; use anyhow::{anyhow, bail, Context, Result}; use infojson::YVideo; use jellybase::{ @@ -48,6 +50,7 @@ static RE_EPISODE_FILENAME: LazyLock<Regex> = struct Apis { trakt: Option<Trakt>, tmdb: Option<Tmdb>, + acoustid: Option<AcoustID>, } pub fn is_importing() -> bool { @@ -73,6 +76,7 @@ fn import(db: &Database, incremental: bool) -> Result<()> { let apis = Apis { trakt: SECRETS.api.trakt.as_ref().map(|key| Trakt::new(key)), tmdb: SECRETS.api.tmdb.as_ref().map(|key| Tmdb::new(key)), + acoustid: SECRETS.api.acoustid.as_ref().map(|key| AcoustID::new(key)), }; let rthandle = Handle::current(); @@ -365,6 +369,33 @@ fn import_media_file( } } + for (key, value) in &tags { + match key.as_str() { + "MUSICBRAINZ_TRACKID" => node + .external_ids + .insert("musicbrainz:track".to_string(), value.to_owned()), + "MUSICBRAINZ_ARTISTID" => node + .external_ids + .insert("musicbrainz:artist".to_string(), value.to_owned()), + "MUSICBRAINZ_ALBUMID" => node + .external_ids + .insert("musicbrainz:album".to_string(), value.to_owned()), + "MUSICBRAINZ_ALBUMARTISTID" => node + .external_ids + .insert("musicbrainz:albumarists".to_string(), value.to_owned()), + "MUSICBRAINZ_RELEASEGROUPID" => node + .external_ids + .insert("musicbrainz:releasegroup".to_string(), value.to_owned()), + "ISRC" => node + .external_ids + .insert("isrc".to_string(), value.to_owned()), + "BARCODE" => node + .external_ids + .insert("barcode".to_string(), value.to_owned()), + _ => None, + }; + } + let tracks = tracks .entries .into_iter() |