mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-15 04:11:47 +00:00
Added metadata to downloader plugin, and updated packages
This commit is contained in:
15
package.json
15
package.json
@ -62,32 +62,33 @@
|
|||||||
"npm": "Please use yarn and not npm"
|
"npm": "Please use yarn and not npm"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cliqz/adblocker-electron": "^1.19.0",
|
"@cliqz/adblocker-electron": "^1.20.0",
|
||||||
"@ffmpeg/core": "^0.8.5",
|
"@ffmpeg/core": "^0.8.5",
|
||||||
"@ffmpeg/ffmpeg": "^0.9.7",
|
"@ffmpeg/ffmpeg": "^0.9.7",
|
||||||
"YoutubeNonStop": "git://github.com/lawfx/YoutubeNonStop.git#v0.8.1",
|
"YoutubeNonStop": "git://github.com/lawfx/YoutubeNonStop.git#v0.8.1",
|
||||||
|
"browser-id3-writer": "^4.4.0",
|
||||||
"discord-rpc": "^3.1.4",
|
"discord-rpc": "^3.1.4",
|
||||||
"downloads-folder": "^3.0.1",
|
"downloads-folder": "^3.0.1",
|
||||||
"electron-debug": "^3.2.0",
|
"electron-debug": "^3.2.0",
|
||||||
"electron-is": "^3.0.0",
|
"electron-is": "^3.0.0",
|
||||||
"electron-localshortcut": "^3.2.1",
|
"electron-localshortcut": "^3.2.1",
|
||||||
"electron-store": "^6.0.1",
|
"electron-store": "^7.0.1",
|
||||||
"electron-unhandled": "^3.0.2",
|
"electron-unhandled": "^3.0.2",
|
||||||
"electron-updater": "^4.3.6",
|
"electron-updater": "^4.3.6",
|
||||||
"filenamify": "^4.2.0",
|
"filenamify": "^4.2.0",
|
||||||
"node-fetch": "^2.6.1",
|
"node-fetch": "^2.6.1",
|
||||||
"ytdl-core": "^4.3.0"
|
"ytdl-core": "^4.4.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron": "^11.1.1",
|
"electron": "^11.2.3",
|
||||||
"electron-builder": "^22.8.1",
|
"electron-builder": "^22.9.1",
|
||||||
"electron-devtools-installer": "^3.1.1",
|
"electron-devtools-installer": "^3.1.1",
|
||||||
"electron-icon-maker": "0.0.5",
|
"electron-icon-maker": "0.0.5",
|
||||||
"get-port": "^5.1.1",
|
"get-port": "^5.1.1",
|
||||||
"jest": "^26.4.2",
|
"jest": "^26.6.3",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"spectron": "^13.0.0",
|
"spectron": "^13.0.0",
|
||||||
"xo": "^0.33.1"
|
"xo": "^0.37.1"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"yargs-parser": "18.1.3"
|
"yargs-parser": "18.1.3"
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
|
const { writeFileSync } = require("fs");
|
||||||
const { join } = require("path");
|
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 getSongInfo = require("../../providers/song-info");
|
||||||
const { injectCSS, listenAction } = require("../utils");
|
const { injectCSS, listenAction } = require("../utils");
|
||||||
@ -23,10 +25,7 @@ function handle(win) {
|
|||||||
injectCSS(win.webContents, join(__dirname, "style.css"));
|
injectCSS(win.webContents, join(__dirname, "style.css"));
|
||||||
const registerCallback = getSongInfo(win);
|
const registerCallback = getSongInfo(win);
|
||||||
registerCallback((info) => {
|
registerCallback((info) => {
|
||||||
metadata = {
|
metadata = info;
|
||||||
...info,
|
|
||||||
image: info.image ? info.image.toDataURL() : undefined,
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
|
|
||||||
listenAction(CHANNEL, (event, action, error) => {
|
listenAction(CHANNEL, (event, action, error) => {
|
||||||
@ -41,6 +40,33 @@ 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 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;
|
module.exports = handle;
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
const { randomBytes } = require("crypto");
|
const { randomBytes } = require("crypto");
|
||||||
const { writeFileSync } = require("fs");
|
|
||||||
const { join } = require("path");
|
const { join } = require("path");
|
||||||
|
|
||||||
const downloadsFolder = require("downloads-folder");
|
const downloadsFolder = require("downloads-folder");
|
||||||
|
const { ipcRenderer } = require("electron");
|
||||||
const is = require("electron-is");
|
const is = require("electron-is");
|
||||||
const filenamify = require("filenamify");
|
const filenamify = require("filenamify");
|
||||||
|
|
||||||
@ -109,12 +109,15 @@ const toMP3 = async (
|
|||||||
const filename = filenamify(name + "." + extension, {
|
const filename = filenamify(name + "." + extension, {
|
||||||
replacement: "_",
|
replacement: "_",
|
||||||
});
|
});
|
||||||
writeFileSync(
|
|
||||||
|
// Add the metadata
|
||||||
|
sendFeedback("Adding metadata…");
|
||||||
|
ipcRenderer.send(
|
||||||
|
"add-metadata",
|
||||||
join(folder, filename),
|
join(folder, filename),
|
||||||
ffmpeg.FS("readFile", safeVideoName + "." + extension)
|
ffmpeg.FS("readFile", safeVideoName + "." + extension)
|
||||||
);
|
);
|
||||||
|
ipcRenderer.once("add-metadata-done", reinit);
|
||||||
reinit();
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
sendError(e);
|
sendError(e);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user