From b103a19f095988bd2ea8616a50e4fabd3309c2b1 Mon Sep 17 00:00:00 2001 From: theod02 Date: Wed, 4 Aug 2021 21:03:33 +0200 Subject: [PATCH 1/2] Add POPM for ID3v2 & FLAC tag, Add rating in comment for ID3v1 --- deemix/settings.js | 1 + deemix/tagger.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/deemix/settings.js b/deemix/settings.js index 3ff5a45..1a68a8a 100644 --- a/deemix/settings.js +++ b/deemix/settings.js @@ -89,6 +89,7 @@ const DEFAULTS = { composer: false, involvedPeople: false, source: false, + rating: false, savePlaylistAsCompilation: false, useNullSeparator: false, saveID3v1: true, diff --git a/deemix/tagger.js b/deemix/tagger.js index 2ecbf7a..7ebc0a3 100644 --- a/deemix/tagger.js +++ b/deemix/tagger.js @@ -112,6 +112,14 @@ function tagID3(path, track, save){ }) } + if (save.rating) { + let rank = (track.rank / 10000) * 2.55; + rank = rank > 255 ? 255 : Math.round(rank); + tag.setFrame('POPM', { + rating: rank, + }) + } + if (save.cover && track.album.embeddedCoverPath){ const coverArrayBuffer = fs.readFileSync(track.album.embeddedCoverPath) if (coverArrayBuffer.length != 0){ @@ -212,6 +220,11 @@ function tagFLAC(path, track, save){ flac.setTag(`SOURCEID=${track.id}`) } + if (save.rating) { + let rank = Math.round(track.rank / 10000); + flac.setTag(`RATING=${rank}`) + } + if (save.cover && track.album.embeddedCoverPath){ let picture = fs.readFileSync(track.album.embeddedCoverPath) if (picture.length != 0) flac.importPicture(picture) @@ -276,6 +289,12 @@ function tagID3v1(path, track, save){ tagBuffer.writeUInt8(255, 127) } + // Write as comment + if (save.rating) { + let rank = Math.round(track.rank / 10000); + tagBuffer.write(`Rating: ${rank}%`, 97); + } + // Save tags const songBuffer = fs.readFileSync(path) const buffer = new ArrayBuffer(songBuffer.byteLength + 128) -- 2.25.1 From 883205d0c09f5b35a0db79e0a6cf835eaba878a1 Mon Sep 17 00:00:00 2001 From: theod02 Date: Wed, 4 Aug 2021 21:43:33 +0200 Subject: [PATCH 2/2] Add track.rank in track meta --- deemix/types/Track.js | 1 + 1 file changed, 1 insertion(+) diff --git a/deemix/types/Track.js b/deemix/types/Track.js index 7311728..b343a11 100644 --- a/deemix/types/Track.js +++ b/deemix/types/Track.js @@ -66,6 +66,7 @@ class Track { }*/ } this.mediaVersion = trackAPI_gw.MEDIA_VERSION + this.rank = trackAPI_gw.RANK_SNG this.fallbackID = "0" if (trackAPI_gw.FALLBACK){ this.fallbackID = trackAPI_gw.FALLBACK.SNG_ID -- 2.25.1