mirror of
				https://git.unlock-music.dev/um/web.git
				synced 2025-11-04 11:43:28 +08:00 
			
		
		
		
	Fix GBK Encoding Reading in QQMusic Mp3
This commit is contained in:
		
							parent
							
								
									12025e3709
								
							
						
					
					
						commit
						23b01d5f87
					
				@ -1,6 +1,8 @@
 | 
				
			|||||||
import {AudioMimeType, DetectAudioExt, GetArrayBuffer, GetFileInfo, GetMetaCoverURL, RequestJsonp} from "./util";
 | 
					import {AudioMimeType, DetectAudioExt, GetArrayBuffer, GetFileInfo, GetMetaCoverURL, RequestJsonp} from "./util";
 | 
				
			||||||
import {QmcMaskCreate58, QmcMaskDetectMflac, QmcMaskDetectMgg, QmcMaskGetDefault} from "./qmcMask";
 | 
					import {QmcMaskCreate58, QmcMaskDetectMflac, QmcMaskDetectMgg, QmcMaskGetDefault} from "./qmcMask";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {decode} from "iconv-lite"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const musicMetadata = require("music-metadata-browser");
 | 
					const musicMetadata = require("music-metadata-browser");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const HandlerMap = {
 | 
					const HandlerMap = {
 | 
				
			||||||
@ -40,8 +42,15 @@ export async function Decrypt(file, raw_filename, raw_ext) {
 | 
				
			|||||||
    let musicBlob = new Blob([musicDecoded], {type: mime});
 | 
					    let musicBlob = new Blob([musicDecoded], {type: mime});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const musicMeta = await musicMetadata.parseBlob(musicBlob);
 | 
					    const musicMeta = await musicMetadata.parseBlob(musicBlob);
 | 
				
			||||||
 | 
					    let isGbk = musicMeta.native["ID3v2.3"]
 | 
				
			||||||
 | 
					        .some(item => item.id === "TCON" && item.value === "(12)");
 | 
				
			||||||
 | 
					    if (isGbk) {
 | 
				
			||||||
 | 
					        musicMeta.common.artist = decode(musicMeta.common.artist, "gbk");
 | 
				
			||||||
 | 
					        musicMeta.common.title = decode(musicMeta.common.title, "gbk");
 | 
				
			||||||
 | 
					        musicMeta.common.album = decode(musicMeta.common.album, "gbk");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    //todo: Use artists list to replace artist
 | 
				
			||||||
    const info = GetFileInfo(musicMeta.common.artist, musicMeta.common.title, raw_filename);
 | 
					    const info = GetFileInfo(musicMeta.common.artist, musicMeta.common.title, raw_filename);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (handler.detect) reportKeyUsage(keyData, seed.Matrix128,
 | 
					    if (handler.detect) reportKeyUsage(keyData, seed.Matrix128,
 | 
				
			||||||
        info.artist, info.title, musicMeta.common.album, raw_filename, raw_ext);
 | 
					        info.artist, info.title, musicMeta.common.album, raw_filename, raw_ext);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user