From b93993c6cf034dccad3df08485d2126614874743 Mon Sep 17 00:00:00 2001 From: Raiper34 Date: Wed, 13 Aug 2025 15:34:26 +0000 Subject: [PATCH] fix(track): fix track missing artist and title tags --- src/backend/src/shared/youtube.service.ts | 20 ++++++++------------ src/backend/src/track/track.service.ts | 7 ++++++- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/backend/src/shared/youtube.service.ts b/src/backend/src/shared/youtube.service.ts index ea9834c..71e26bf 100644 --- a/src/backend/src/shared/youtube.service.ts +++ b/src/backend/src/shared/youtube.service.ts @@ -10,7 +10,6 @@ import * as ytdl from '@distube/ytdl-core'; import { Readable } from 'stream'; const NodeID3 = require('node-id3'); -const META_DATA_TITLE = '-metadata'; const YT_SETTINGS: ytdl.downloadOptions = { quality: 'highestaudio', filter: 'audioonly', @@ -40,7 +39,6 @@ export class YoutubeService { ); return new Promise((res, reject) => { ffmpeg(this.getYoutubeAudio(track.youtubeUrl, reject)) - .outputOptions(...this.getFfmpegOptions(track.name, track.artist)) .format(this.configService.get(EnvironmentEnum.FORMAT)) .on(StreamStates.Error, (err) => reject(err)) .pipe( @@ -57,7 +55,12 @@ export class YoutubeService { }); } - async addImage(folderName: string, coverUrl: string): Promise { + async addImage( + folderName: string, + coverUrl: string, + title: string, + artist: string, + ): Promise { if (coverUrl) { const res = await fetch(coverUrl); const arrayBuf = await res.arrayBuffer(); @@ -65,6 +68,8 @@ export class YoutubeService { NodeID3.write( { + title, + artist, APIC: { mime: 'image/jpeg', type: { id: 3, name: 'front cover' }, @@ -77,15 +82,6 @@ export class YoutubeService { } } - private getFfmpegOptions(name: string, artist: string): string[] { - return [ - META_DATA_TITLE, - `title=${name}`, - META_DATA_TITLE, - `artist=${artist}`, - ]; - } - private getYoutubeAudio( youtubeUrl: string, reject: (reason: any) => void, diff --git a/src/backend/src/track/track.service.ts b/src/backend/src/track/track.service.ts index 2f6e9db..5d0eb2d 100644 --- a/src/backend/src/track/track.service.ts +++ b/src/backend/src/track/track.service.ts @@ -118,7 +118,12 @@ export class TrackService { try { const folderName = this.getFolderName(track, track.playlist); await this.youtubeService.downloadAndFormat(track, folderName); - await this.youtubeService.addImage(folderName, track.playlist.coverUrl); + await this.youtubeService.addImage( + folderName, + track.playlist.coverUrl, + track.name, + track.artist, + ); } catch (err) { this.logger.error(err); error = String(err);