diff options
Diffstat (limited to 'import/src/plugins/acoustid.rs')
| -rw-r--r-- | import/src/plugins/acoustid.rs | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/import/src/plugins/acoustid.rs b/import/src/plugins/acoustid.rs index b93533a..9edcb63 100644 --- a/import/src/plugins/acoustid.rs +++ b/import/src/plugins/acoustid.rs @@ -9,6 +9,9 @@ use crate::{ }; use anyhow::{Context, Result}; use jellycache::{HashKey, cache_memory}; +use jellycommon::{ + IDENT_ACOUST_ID_TRACK, IDENT_MUSICBRAINZ_RECORDING, NO_IDENTIFIERS, jellyobject::Object, +}; use jellydb::table::RowNum; use jellyremuxer::matroska::Segment; use log::info; @@ -171,12 +174,23 @@ impl ImportPlugin for AcoustID { return Ok(()); } let fp = acoustid_fingerprint(path)?; + if let Some((atid, mbid)) = self.get_atid_mbid(&fp, &ct.rt)? { - ct.db.update_node_init(node, |n| { - n.identifiers.insert(IdentifierType::AcoustIdTrack, atid); - n.identifiers - .insert(IdentifierType::MusicbrainzRecording, mbid); - })?; + ct.dba.db.write_transaction(&mut |txn| { + let ob = ct.dba.nodes.get(txn, node)?.unwrap(); + let ob = ob.as_object(); + let ob = ob.insert( + NO_IDENTIFIERS, + ob.get(NO_IDENTIFIERS) + .unwrap_or(Object::EMPTY) + .insert(IDENT_ACOUST_ID_TRACK, &atid) + .as_object() + .insert(IDENT_MUSICBRAINZ_RECORDING, &mbid) + .as_object(), + ); + ct.dba.nodes.update(txn, node, ob)?; + Ok(()) + }); }; Ok(()) } |