mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-16 20:52:06 +00:00
Write metadata in front + pass it along (useful if the song is changed)
This commit is contained in:
@ -1,8 +1,6 @@
|
|||||||
const { writeFileSync } = require("fs");
|
|
||||||
const { join } = require("path");
|
const { join } = require("path");
|
||||||
|
|
||||||
const ID3Writer = require("browser-id3-writer");
|
const { dialog } = require("electron");
|
||||||
const { dialog, ipcMain } = require("electron");
|
|
||||||
|
|
||||||
const getSongInfo = require("../../providers/song-info");
|
const getSongInfo = require("../../providers/song-info");
|
||||||
const { injectCSS, listenAction } = require("../utils");
|
const { injectCSS, listenAction } = require("../utils");
|
||||||
@ -40,35 +38,6 @@ function handle(win) {
|
|||||||
console.log("Unknown action: " + action);
|
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;
|
module.exports = handle;
|
||||||
|
|||||||
@ -60,7 +60,8 @@ global.download = () => {
|
|||||||
reinit();
|
reinit();
|
||||||
},
|
},
|
||||||
reinit,
|
reinit,
|
||||||
pluginOptions
|
pluginOptions,
|
||||||
|
global.songInfo
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
// });
|
// });
|
||||||
|
|||||||
@ -3,6 +3,7 @@ const { writeFileSync } = require("fs");
|
|||||||
const { join } = require("path");
|
const { join } = require("path");
|
||||||
|
|
||||||
const Mutex = require("async-mutex").Mutex;
|
const Mutex = require("async-mutex").Mutex;
|
||||||
|
const ID3Writer = require("browser-id3-writer");
|
||||||
const { ipcRenderer } = require("electron");
|
const { ipcRenderer } = require("electron");
|
||||||
const is = require("electron-is");
|
const is = require("electron-is");
|
||||||
const filenamify = require("filenamify");
|
const filenamify = require("filenamify");
|
||||||
@ -130,15 +131,29 @@ const toMP3 = async (
|
|||||||
const filePath = join(folder, subfolder, filename);
|
const filePath = join(folder, subfolder, filename);
|
||||||
const fileBuffer = ffmpeg.FS("readFile", safeVideoName + "." + extension);
|
const fileBuffer = ffmpeg.FS("readFile", safeVideoName + "." + extension);
|
||||||
|
|
||||||
if (existingMetadata) {
|
// Add the metadata
|
||||||
writeFileSync(filePath, fileBuffer);
|
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();
|
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) {
|
} catch (e) {
|
||||||
sendError(e);
|
sendError(e);
|
||||||
|
|||||||
Reference in New Issue
Block a user