From 1e59301c0efb2636f776d2d4c77327145c566e6b Mon Sep 17 00:00:00 2001 From: TC Date: Sat, 3 Apr 2021 12:04:49 +0200 Subject: [PATCH] Write metadata in front + pass it along (useful if the song is changed) --- plugins/downloader/back.js | 33 +------------------------------- plugins/downloader/front.js | 3 ++- plugins/downloader/youtube-dl.js | 31 ++++++++++++++++++++++-------- 3 files changed, 26 insertions(+), 41 deletions(-) diff --git a/plugins/downloader/back.js b/plugins/downloader/back.js index a1d2ff80..8d15a429 100644 --- a/plugins/downloader/back.js +++ b/plugins/downloader/back.js @@ -1,8 +1,6 @@ -const { writeFileSync } = require("fs"); const { join } = require("path"); -const ID3Writer = require("browser-id3-writer"); -const { dialog, ipcMain } = require("electron"); +const { dialog } = require("electron"); const getSongInfo = require("../../providers/song-info"); const { injectCSS, listenAction } = require("../utils"); @@ -40,35 +38,6 @@ function handle(win) { console.log("Unknown action: " + action); } }); - - ipcMain.on("add-metadata", (event, filePath, songBuffer) => { - let fileBuffer = songBuffer; - - try { - const writer = new ID3Writer(songBuffer); - if (metadata.image) { - const coverBuffer = metadata.image.toPNG(); - - // Create the metadata tags - writer - .setFrame("TIT2", metadata.title) - .setFrame("TPE1", [metadata.artist]) - .setFrame("APIC", { - type: 3, - data: coverBuffer, - description: "", - }); - writer.addTag(); - } - fileBuffer = Buffer.from(writer.arrayBuffer); - } catch (error) { - sendError(win, error); - } - - writeFileSync(filePath, fileBuffer); - // Notify the youtube-dl file - event.reply("add-metadata-done"); - }); } module.exports = handle; diff --git a/plugins/downloader/front.js b/plugins/downloader/front.js index 2c220546..a29c9086 100644 --- a/plugins/downloader/front.js +++ b/plugins/downloader/front.js @@ -60,7 +60,8 @@ global.download = () => { reinit(); }, reinit, - pluginOptions + pluginOptions, + global.songInfo ); }; // }); diff --git a/plugins/downloader/youtube-dl.js b/plugins/downloader/youtube-dl.js index 9993f4c6..4fb8ac75 100644 --- a/plugins/downloader/youtube-dl.js +++ b/plugins/downloader/youtube-dl.js @@ -3,6 +3,7 @@ const { writeFileSync } = require("fs"); const { join } = require("path"); const Mutex = require("async-mutex").Mutex; +const ID3Writer = require("browser-id3-writer"); const { ipcRenderer } = require("electron"); const is = require("electron-is"); const filenamify = require("filenamify"); @@ -130,15 +131,29 @@ const toMP3 = async ( const filePath = join(folder, subfolder, filename); const fileBuffer = ffmpeg.FS("readFile", safeVideoName + "." + extension); - if (existingMetadata) { - writeFileSync(filePath, fileBuffer); + // Add the metadata + try { + const writer = new ID3Writer(fileBuffer); + if (metadata.image) { + const coverBuffer = metadata.image.toPNG(); + + // Create the metadata tags + writer + .setFrame("TIT2", metadata.title) + .setFrame("TPE1", [metadata.artist]) + .setFrame("APIC", { + type: 3, + data: coverBuffer, + description: "", + }); + writer.addTag(); + } + + writeFileSync(filePath, Buffer.from(writer.arrayBuffer)); + } catch (error) { + sendError(error); + } finally { reinit(); - } else { - // Add the metadata - sendFeedback("Adding metadata…"); - ipcRenderer.send("add-metadata", filePath, fileBuffer); - ipcRenderer.once("add-metadata-done", reinit); - sendFeedback("Finished converting", metadata); } } catch (e) { sendError(e);