diff --git a/src/metadata-writer/index.ts b/src/metadata-writer/index.ts index 02d169c..cdf4c80 100644 --- a/src/metadata-writer/index.ts +++ b/src/metadata-writer/index.ts @@ -2,9 +2,18 @@ import {downloadAlbumCover} from './abumCover'; import {getTrackLyrics} from './getTrackLyrics'; import {writeMetadataMp3} from './id3'; import {writeMetadataFlac} from './flacmetata'; -import {getAlbumInfoPublicApi} from '../api'; +import {getAlbumInfoPublicApi, getTrackInfoPublicApi} from '../api'; import type {trackType} from '../types'; +const albumInfo = async (track: trackType) => { + try { + return getAlbumInfoPublicApi(track.ALB_ID); + } catch (err) { + const {album} = await getTrackInfoPublicApi(track.SNG_ID); + return getAlbumInfoPublicApi(album.id.toString()); + } +}; + /** * Add metdata to the mp3 * @param {Buffer} trackBuffer decrypted track buffer @@ -15,7 +24,7 @@ export const addTrackTags = async (trackBuffer: Buffer, track: trackType, albumC const [cover, lyrics, album] = await Promise.all([ downloadAlbumCover(track, albumCoverSize), getTrackLyrics(track), - getAlbumInfoPublicApi(track.ALB_ID), + albumInfo(track), ]); if (lyrics) {