Skip to content

Commit dd1bdae

Browse files
semvis123th-ch
authored andcommitted
Added metadata to downloader plugin, and updated packages
1 parent 70973b2 commit dd1bdae

File tree

4 files changed

+1875
-1791
lines changed

4 files changed

+1875
-1791
lines changed

package.json

+8-7
Original file line numberDiff line numberDiff line change
@@ -62,32 +62,33 @@
6262
"npm": "Please use yarn and not npm"
6363
},
6464
"dependencies": {
65-
"@cliqz/adblocker-electron": "^1.19.0",
65+
"@cliqz/adblocker-electron": "^1.20.0",
6666
"@ffmpeg/core": "^0.8.5",
6767
"@ffmpeg/ffmpeg": "^0.9.7",
6868
"YoutubeNonStop": "git://github.com/lawfx/YoutubeNonStop.git#v0.8.1",
69+
"browser-id3-writer": "^4.4.0",
6970
"discord-rpc": "^3.1.4",
7071
"downloads-folder": "^3.0.1",
7172
"electron-debug": "^3.2.0",
7273
"electron-is": "^3.0.0",
7374
"electron-localshortcut": "^3.2.1",
74-
"electron-store": "^6.0.1",
75+
"electron-store": "^7.0.1",
7576
"electron-unhandled": "^3.0.2",
7677
"electron-updater": "^4.3.6",
7778
"filenamify": "^4.2.0",
7879
"node-fetch": "^2.6.1",
79-
"ytdl-core": "^4.3.0"
80+
"ytdl-core": "^4.4.5"
8081
},
8182
"devDependencies": {
82-
"electron": "^11.1.1",
83-
"electron-builder": "^22.8.1",
83+
"electron": "^11.2.3",
84+
"electron-builder": "^22.9.1",
8485
"electron-devtools-installer": "^3.1.1",
8586
"electron-icon-maker": "0.0.5",
8687
"get-port": "^5.1.1",
87-
"jest": "^26.4.2",
88+
"jest": "^26.6.3",
8889
"rimraf": "^3.0.2",
8990
"spectron": "^13.0.0",
90-
"xo": "^0.33.1"
91+
"xo": "^0.37.1"
9192
},
9293
"resolutions": {
9394
"yargs-parser": "18.1.3"

plugins/downloader/back.js

+31-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
const { writeFileSync } = require("fs");
12
const { join } = require("path");
23

3-
const { dialog } = require("electron");
4+
const ID3Writer = require("browser-id3-writer");
5+
const { dialog, ipcMain } = require("electron");
46

57
const getSongInfo = require("../../providers/song-info");
68
const { injectCSS, listenAction } = require("../utils");
@@ -23,10 +25,7 @@ function handle(win) {
2325
injectCSS(win.webContents, join(__dirname, "style.css"));
2426
const registerCallback = getSongInfo(win);
2527
registerCallback((info) => {
26-
metadata = {
27-
...info,
28-
image: info.image ? info.image.toDataURL() : undefined,
29-
};
28+
metadata = info;
3029
});
3130

3231
listenAction(CHANNEL, (event, action, error) => {
@@ -41,6 +40,33 @@ function handle(win) {
4140
console.log("Unknown action: " + action);
4241
}
4342
});
43+
44+
ipcMain.on("add-metadata", (event, filePath, songBuffer) => {
45+
let fileBuffer = songBuffer;
46+
47+
try {
48+
const coverBuffer = metadata.image.toPNG();
49+
const writer = new ID3Writer(songBuffer);
50+
51+
// Create the metadata tags
52+
writer
53+
.setFrame("TIT2", metadata.title)
54+
.setFrame("TPE1", [metadata.artist])
55+
.setFrame("APIC", {
56+
type: 3,
57+
data: coverBuffer,
58+
description: "",
59+
});
60+
writer.addTag();
61+
fileBuffer = Buffer.from(writer.arrayBuffer);
62+
} catch (error) {
63+
sendError(win, error);
64+
}
65+
66+
writeFileSync(filePath, fileBuffer);
67+
// Notify the youtube-dl file
68+
event.reply("add-metadata-done");
69+
});
4470
}
4571

4672
module.exports = handle;

plugins/downloader/youtube-dl.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
const { randomBytes } = require("crypto");
2-
const { writeFileSync } = require("fs");
32
const { join } = require("path");
43

54
const downloadsFolder = require("downloads-folder");
5+
const { ipcRenderer } = require("electron");
66
const is = require("electron-is");
77
const filenamify = require("filenamify");
88

@@ -109,12 +109,15 @@ const toMP3 = async (
109109
const filename = filenamify(name + "." + extension, {
110110
replacement: "_",
111111
});
112-
writeFileSync(
112+
113+
// Add the metadata
114+
sendFeedback("Adding metadata…");
115+
ipcRenderer.send(
116+
"add-metadata",
113117
join(folder, filename),
114118
ffmpeg.FS("readFile", safeVideoName + "." + extension)
115119
);
116-
117-
reinit();
120+
ipcRenderer.once("add-metadata-done", reinit);
118121
} catch (e) {
119122
sendError(e);
120123
}

0 commit comments

Comments
 (0)