diff options
Diffstat (limited to 'import/src/plugins/acoustid.rs')
| -rw-r--r-- | import/src/plugins/acoustid.rs | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/import/src/plugins/acoustid.rs b/import/src/plugins/acoustid.rs index 8e502b0..c829aac 100644 --- a/import/src/plugins/acoustid.rs +++ b/import/src/plugins/acoustid.rs @@ -6,12 +6,11 @@ use crate::{ USER_AGENT, plugins::{ImportPlugin, PluginContext, PluginInfo}, + source_rank::ObjectImportSourceExt, }; use anyhow::{Context, Result}; use jellycache::{Cache, HashKey}; -use jellycommon::{ - IDENT_ACOUST_ID_TRACK, IDENT_MUSICBRAINZ_RECORDING, NO_IDENTIFIERS, jellyobject::Object, -}; +use jellycommon::*; use jellydb::RowNum; use jellyremuxer::matroska::Segment; use log::info; @@ -176,6 +175,7 @@ impl ImportPlugin for AcoustID { fn info(&self) -> PluginInfo { PluginInfo { name: "acoustid", + tag: MSOURCE_ACOUSTID, handle_media: true, ..Default::default() } @@ -193,23 +193,18 @@ impl ImportPlugin for AcoustID { let fp = acoustid_fingerprint(&ct.ic.cache, path)?; - if let Some((atid, mbid)) = self.get_atid_mbid(&ct.ic.cache, &fp, &ct.rt)? { - ct.ic.db.transaction(&mut |txn| { - let ob = txn.get(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(), - ); - txn.update(node, ob)?; - Ok(()) - })?; + let Some((atid, mbid)) = self.get_atid_mbid(&ct.ic.cache, &fp, &ct.rt)? else { + return Ok(()); }; + + ct.ic.update_node(node, |node| { + node.as_object().update(NO_IDENTIFIERS, |ids| { + ids.insert(IDENT_ACOUST_ID_TRACK, &atid) + .as_object() + .insert_s(ct.is, IDENT_MUSICBRAINZ_RECORDING, &mbid) + }) + })?; + Ok(()) } } |