Added metadata to downloader plugin, and updated packages

This commit is contained in:
semvis123
2021-02-09 17:05:17 +01:00
committed by TC
parent 70973b2281
commit dd1bdae947
4 changed files with 1864 additions and 1780 deletions

View File

@ -62,32 +62,33 @@
"npm": "Please use yarn and not npm"
},
"dependencies": {
"@cliqz/adblocker-electron": "^1.19.0",
"@cliqz/adblocker-electron": "^1.20.0",
"@ffmpeg/core": "^0.8.5",
"@ffmpeg/ffmpeg": "^0.9.7",
"YoutubeNonStop": "git://github.com/lawfx/YoutubeNonStop.git#v0.8.1",
"browser-id3-writer": "^4.4.0",
"discord-rpc": "^3.1.4",
"downloads-folder": "^3.0.1",
"electron-debug": "^3.2.0",
"electron-is": "^3.0.0",
"electron-localshortcut": "^3.2.1",
"electron-store": "^6.0.1",
"electron-store": "^7.0.1",
"electron-unhandled": "^3.0.2",
"electron-updater": "^4.3.6",
"filenamify": "^4.2.0",
"node-fetch": "^2.6.1",
"ytdl-core": "^4.3.0"
"ytdl-core": "^4.4.5"
},
"devDependencies": {
"electron": "^11.1.1",
"electron-builder": "^22.8.1",
"electron": "^11.2.3",
"electron-builder": "^22.9.1",
"electron-devtools-installer": "^3.1.1",
"electron-icon-maker": "0.0.5",
"get-port": "^5.1.1",
"jest": "^26.4.2",
"jest": "^26.6.3",
"rimraf": "^3.0.2",
"spectron": "^13.0.0",
"xo": "^0.33.1"
"xo": "^0.37.1"
},
"resolutions": {
"yargs-parser": "18.1.3"

View File

@ -1,6 +1,8 @@
const { writeFileSync } = require("fs");
const { join } = require("path");
const { dialog } = require("electron");
const ID3Writer = require("browser-id3-writer");
const { dialog, ipcMain } = require("electron");
const getSongInfo = require("../../providers/song-info");
const { injectCSS, listenAction } = require("../utils");
@ -23,10 +25,7 @@ function handle(win) {
injectCSS(win.webContents, join(__dirname, "style.css"));
const registerCallback = getSongInfo(win);
registerCallback((info) => {
metadata = {
...info,
image: info.image ? info.image.toDataURL() : undefined,
};
metadata = info;
});
listenAction(CHANNEL, (event, action, error) => {
@ -41,6 +40,33 @@ function handle(win) {
console.log("Unknown action: " + action);
}
});
ipcMain.on("add-metadata", (event, filePath, songBuffer) => {
let fileBuffer = songBuffer;
try {
const coverBuffer = metadata.image.toPNG();
const writer = new ID3Writer(songBuffer);
// 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;

View File

@ -1,8 +1,8 @@
const { randomBytes } = require("crypto");
const { writeFileSync } = require("fs");
const { join } = require("path");
const downloadsFolder = require("downloads-folder");
const { ipcRenderer } = require("electron");
const is = require("electron-is");
const filenamify = require("filenamify");
@ -109,12 +109,15 @@ const toMP3 = async (
const filename = filenamify(name + "." + extension, {
replacement: "_",
});
writeFileSync(
// Add the metadata
sendFeedback("Adding metadata…");
ipcRenderer.send(
"add-metadata",
join(folder, filename),
ffmpeg.FS("readFile", safeVideoName + "." + extension)
);
reinit();
ipcRenderer.once("add-metadata-done", reinit);
} catch (e) {
sendError(e);
}

3582
yarn.lock

File diff suppressed because it is too large Load Diff