#7 Add POPM for ID3v2 & FLAC tag, Add rating in comment for ID3v1

Closed
AllsDmix wants to merge 2 commits from <deleted>:feature/tag_popm into main
  1. +1
    -0
      deemix/settings.js
  2. +19
    -0
      deemix/tagger.js
  3. +1
    -0
      deemix/types/Track.js

+ 1
- 0
deemix/settings.js View File

@ -89,6 +89,7 @@ const DEFAULTS = {
composer: false, composer: false,
involvedPeople: false, involvedPeople: false,
source: false, source: false,
rating: false,
savePlaylistAsCompilation: false, savePlaylistAsCompilation: false,
useNullSeparator: false, useNullSeparator: false,
saveID3v1: true, saveID3v1: true,


+ 19
- 0
deemix/tagger.js View File

@ -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){ if (save.cover && track.album.embeddedCoverPath){
const coverArrayBuffer = fs.readFileSync(track.album.embeddedCoverPath) const coverArrayBuffer = fs.readFileSync(track.album.embeddedCoverPath)
if (coverArrayBuffer.length != 0){ if (coverArrayBuffer.length != 0){
@ -212,6 +220,11 @@ function tagFLAC(path, track, save){
flac.setTag(`SOURCEID=${track.id}`) 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){ if (save.cover && track.album.embeddedCoverPath){
let picture = fs.readFileSync(track.album.embeddedCoverPath) let picture = fs.readFileSync(track.album.embeddedCoverPath)
if (picture.length != 0) flac.importPicture(picture) if (picture.length != 0) flac.importPicture(picture)
@ -276,6 +289,12 @@ function tagID3v1(path, track, save){
tagBuffer.writeUInt8(255, 127) tagBuffer.writeUInt8(255, 127)
} }
// Write as comment
if (save.rating) {
let rank = Math.round(track.rank / 10000);
tagBuffer.write(`Rating: ${rank}%`, 97);
}
// Save tags // Save tags
const songBuffer = fs.readFileSync(path) const songBuffer = fs.readFileSync(path)
const buffer = new ArrayBuffer(songBuffer.byteLength + 128) const buffer = new ArrayBuffer(songBuffer.byteLength + 128)


+ 1
- 0
deemix/types/Track.js View File

@ -66,6 +66,7 @@ class Track {
}*/ }*/
} }
this.mediaVersion = trackAPI_gw.MEDIA_VERSION this.mediaVersion = trackAPI_gw.MEDIA_VERSION
this.rank = trackAPI_gw.RANK_SNG
this.fallbackID = "0" this.fallbackID = "0"
if (trackAPI_gw.FALLBACK){ if (trackAPI_gw.FALLBACK){
this.fallbackID = trackAPI_gw.FALLBACK.SNG_ID this.fallbackID = trackAPI_gw.FALLBACK.SNG_ID


Loading…
Cancel
Save