aboutsummaryrefslogtreecommitdiff
path: root/import/src/plugins/acoustid.rs
diff options
context:
space:
mode:
Diffstat (limited to 'import/src/plugins/acoustid.rs')
-rw-r--r--import/src/plugins/acoustid.rs33
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(())
}
}