mirror of
				https://git.unlock-music.dev/um/web.git
				synced 2025-11-04 15:33:28 +08:00 
			
		
		
		
	Fix #100
This commit is contained in:
		
							parent
							
								
									c11f3fd130
								
							
						
					
					
						commit
						f24ea6a07b
					
				@ -55,10 +55,11 @@ export async function Decrypt(file, raw_filename, raw_ext) {
 | 
				
			|||||||
    try {
 | 
					    try {
 | 
				
			||||||
        let musicBlob = new Blob([audioData], {type: mime});
 | 
					        let musicBlob = new Blob([audioData], {type: mime});
 | 
				
			||||||
        const originalMeta = await musicMetadata.parseBlob(musicBlob);
 | 
					        const originalMeta = await musicMetadata.parseBlob(musicBlob);
 | 
				
			||||||
 | 
					        console.log(originalMeta)
 | 
				
			||||||
        let shouldWrite = !originalMeta.common.album && !originalMeta.common.artists && !originalMeta.common.title
 | 
					        let shouldWrite = !originalMeta.common.album && !originalMeta.common.artists && !originalMeta.common.title
 | 
				
			||||||
        if (musicMeta.format === "mp3") {
 | 
					        if (musicMeta.format === "mp3") {
 | 
				
			||||||
            audioData = await WriteMp3Meta(
 | 
					            audioData = await WriteMp3Meta(
 | 
				
			||||||
                audioData, artists, info.title, musicMeta.album, imageInfo.buffer, musicMeta.albumPic, !shouldWrite)
 | 
					                audioData, artists, info.title, musicMeta.album, imageInfo.buffer, musicMeta.albumPic, shouldWrite ? null : originalMeta)
 | 
				
			||||||
        } else if (musicMeta.format === "flac") {
 | 
					        } else if (musicMeta.format === "flac") {
 | 
				
			||||||
            const writer = new MetaFlac(Buffer.from(audioData))
 | 
					            const writer = new MetaFlac(Buffer.from(audioData))
 | 
				
			||||||
            if (shouldWrite) {
 | 
					            if (shouldWrite) {
 | 
				
			||||||
 | 
				
			|||||||
@ -93,9 +93,25 @@ export async function GetWebImage(pic_url) {
 | 
				
			|||||||
    return {"buffer": null, "src": pic_url, "url": "", "type": ""}
 | 
					    return {"buffer": null, "src": pic_url, "url": "", "type": ""}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export async function WriteMp3Meta(audioData, artistList, title, album, pictureData = null, pictureDesc = "Cover", cover_only = true) {
 | 
					export async function WriteMp3Meta(audioData, artistList, title, album, pictureData = null, pictureDesc = "Cover", originalMeta = null) {
 | 
				
			||||||
    const writer = new ID3Writer(audioData);
 | 
					    const writer = new ID3Writer(audioData);
 | 
				
			||||||
    if (!cover_only) writer.setFrame("TPE1", artistList).setFrame("TIT2", title).setFrame("TALB", album);
 | 
					    if (originalMeta !== null) {
 | 
				
			||||||
 | 
					        artistList = originalMeta.common.artists || artistList
 | 
				
			||||||
 | 
					        title = originalMeta.common.title || title
 | 
				
			||||||
 | 
					        album = originalMeta.common.album || album
 | 
				
			||||||
 | 
					        const frames = originalMeta.native['ID3v2.4'] || originalMeta.native['ID3v2.3'] || originalMeta.native['ID3v2.2'] || []
 | 
				
			||||||
 | 
					        frames.forEach(frame => {
 | 
				
			||||||
 | 
					            if (frame.id !== 'TPE1' && frame.id !== 'TIT2' && frame.id !== 'TALB') {
 | 
				
			||||||
 | 
					                try {
 | 
				
			||||||
 | 
					                    writer.setFrame(frame.id, frame.value)
 | 
				
			||||||
 | 
					                } catch (e) {
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    writer.setFrame('TPE1', artistList)
 | 
				
			||||||
 | 
					        .setFrame('TIT2', title)
 | 
				
			||||||
 | 
					        .setFrame('TALB', album);
 | 
				
			||||||
    if (pictureData !== null) {
 | 
					    if (pictureData !== null) {
 | 
				
			||||||
        writer.setFrame('APIC', {
 | 
					        writer.setFrame('APIC', {
 | 
				
			||||||
            type: 3,
 | 
					            type: 3,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user