Add Tag Edit Function & Wasm for Qmc & Kgm

This commit is contained in:
xhacker-zzz
2022-11-20 22:30:56 +08:00
parent 97cd7afc44
commit de14ccb0b3
24 changed files with 699 additions and 120 deletions

View File

@@ -8,6 +8,7 @@ import {
WriteMetaToFlac,
WriteMetaToMp3,
AudioMimeType,
split_regex,
} from '@/decrypt/utils';
import { getQMImageURLFromPMID, queryAlbumCover, querySongInfoById } from '@/utils/api';
@@ -38,13 +39,20 @@ export async function extractQQMusicMeta(
if (!musicMeta.native.hasOwnProperty(metaIdx)) continue;
if (musicMeta.native[metaIdx].some((item) => item.id === 'TCON' && item.value === '(12)')) {
console.warn('try using gbk encoding to decode meta');
musicMeta.common.artist = iconv.decode(new Buffer(musicMeta.common.artist ?? ''), 'gbk');
musicMeta.common.artist = '';
if (musicMeta.common.artists == undefined) {
musicMeta.common.artist = iconv.decode(new Buffer(musicMeta.common.artist ?? ''), 'gbk');
}
else {
musicMeta.common.artists.forEach((artist) => artist = iconv.decode(new Buffer(artist ?? ''), 'gbk'));
musicMeta.common.artist = musicMeta.common.artists.toString();
}
musicMeta.common.title = iconv.decode(new Buffer(musicMeta.common.title ?? ''), 'gbk');
musicMeta.common.album = iconv.decode(new Buffer(musicMeta.common.album ?? ''), 'gbk');
}
}
if (id) {
if (id && id !== '0') {
try {
return fetchMetadataFromSongId(id, ext, musicMeta, musicBlob);
} catch (e) {
@@ -67,7 +75,7 @@ export async function extractQQMusicMeta(
imgUrl: imageURL,
blob: await writeMetaToAudioFile({
title: info.title,
artists: info.artist.split(' _ '),
artists: info.artist.split(split_regex),
ext,
imageURL,
musicMeta,
@@ -88,7 +96,7 @@ async function fetchMetadataFromSongId(
return {
title: info.track_info.title,
artist: artists.join(''),
artist: artists.join(','),
album: info.track_info.album.name,
imgUrl: imageURL,