Skip to content

Commit

Permalink
remove node-id3
Browse files Browse the repository at this point in the history
  • Loading branch information
Araxeus committed Mar 3, 2023
1 parent b6f9404 commit ec61071
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 118 deletions.
3 changes: 0 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,6 @@
"electron-store": "^8.1.0",
"electron-unhandled": "^4.0.1",
"electron-updater": "^5.3.0",
"file-type": "^18.2.1",
"filenamify": "^4.3.0",
"howler": "^2.2.3",
"html-to-text": "^9.0.3",
Expand All @@ -134,12 +133,10 @@
"md5": "^2.3.0",
"mpris-service": "^2.1.2",
"node-fetch": "^2.6.8",
"node-id3": "^0.2.6",
"node-notifier": "^10.0.1",
"simple-youtube-age-restriction-bypass": "https://gitpkg.now.sh/api/pkg.tgz?url=zerodytrash/Simple-YouTube-Age-Restriction-Bypass&commit=v2.5.4",
"vudio": "^2.1.1",
"youtubei.js": "^3.1.1",
"ytdl-core": "^4.11.1",
"ytpl": "^2.3.0"
},
"devDependencies": {
Expand Down
73 changes: 47 additions & 26 deletions plugins/downloader/back-downloader.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,16 @@ const { join } = require("path");

const { Innertube, UniversalCache, Utils } = require('youtubei.js');
const filenamify = require("filenamify");
const id3 = require('node-id3').Promise;
const ID3Writer = require("browser-id3-writer");

const { fetchFromGenius } = require("../lyrics-genius/back");
const { isEnabled } = require("../../config/plugins");
const { getImage } = require("../../providers/song-info");
const { cropMaxWidth } = require("./utils");

const { sendError } = require("./back");
const { presets } = require('./utils');

ffmpegWriteTags
/** @type {Innertube} */
let yt;
let options;
Expand Down Expand Up @@ -49,16 +53,17 @@ async function downloadSong(url, playlistFolder = undefined) {
}

if (!presets[options.preset]) {
await toMP3(iterableStream, filePath, metadata);
const fileBuffer = await toMP3(iterableStream, filePath, metadata);
console.info('writing id3 tags...'); // DELETE
await writeID3(filePath, metadata).then(() => console.info('done writing id3 tags!')); // DELETE
writeFileSync(filePath, await writeID3(fileBuffer, metadata));
console.info('done writing id3 tags!'); // DELETE
} else {
const file = createWriteStream(filePath);
//stream.pipeTo(file);
for await (const chunk of iterableStream) {
file.write(chunk);
}
ffmpegWriteTags(filePath, metadata, presets[options.preset]?.ffmpegArgs);
await ffmpegWriteTags(filePath, metadata, presets[options.preset]?.ffmpegArgs);
}

console.info(`${filePath} - Done!`, '\n');
Expand All @@ -84,29 +89,45 @@ async function getMetadata(url) {
};
}

const { getImage } = require("../../providers/song-info");
const { cropMaxWidth } = require("./utils");

async function writeID3(filePath, metadata) {
const tags = {
title: metadata.title,
artist: metadata.artist,
album: metadata.album,
image: {
mime: "image/png",
type: {
id: 3,
name: "front cover"
},
description: "",
imageBuffer: cropMaxWidth(await getImage(metadata.image))?.toPNG(),
async function writeID3(buffer, metadata) {
try {
const nativeImage = cropMaxWidth(await getImage(metadata.image));
const coverBuffer = nativeImage && !nativeImage.isEmpty() ?
nativeImage.toPNG() : null;

const writer = new ID3Writer(buffer);

// Create the metadata tags
writer
.setFrame("TIT2", metadata.title)
.setFrame("TPE1", [metadata.artist]);
if (metadata.album) {
writer.setFrame("TALB", metadata.album);
}
// TODO: lyrics
};

await id3.write(tags, filePath);
if (coverBuffer) {
writer.setFrame("APIC", {
type: 3,
data: coverBuffer,
description: "",
});
}
if (isEnabled("lyrics-genius")) {
const lyrics = await fetchFromGenius(metadata);
if (lyrics) {
writer.setFrame("USLT", {
description: '',
lyrics: lyrics,
});
}
}
writer.addTag();
return Buffer.from(writer.arrayBuffer);
} catch (e) {
sendError(e);
}
}


const { randomBytes } = require("crypto");
const Mutex = require("async-mutex").Mutex;
const ffmpeg = require("@ffmpeg/ffmpeg").createFFmpeg({
Expand Down Expand Up @@ -150,7 +171,7 @@ async function toMP3(stream, filePath, metadata, extension = "mp3") {

// sendFeedback("Saving…");

writeFileSync(filePath, fileBuffer);
return fileBuffer;
} catch (e) {
sendError(e);
} finally {
Expand Down
10 changes: 3 additions & 7 deletions plugins/downloader/back.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,17 @@
const { writeFileSync } = require("fs");
const { join } = require("path");

const ID3Writer = require("browser-id3-writer");
const { dialog, ipcMain } = require("electron");
const { dialog } = require("electron");

const registerCallback = require("../../providers/song-info");
const { injectCSS, listenAction } = require("../utils");
const { cropMaxWidth } = require("./utils");
const { ACTIONS, CHANNEL } = require("./actions.js");
const { isEnabled } = require("../../config/plugins");
const { getImage } = require("../../providers/song-info");
const { fetchFromGenius } = require("../lyrics-genius/back");

let win = {};

const sendError = (error) => {
win.setProgressBar(-1); // close progress bar

console.error(error);
dialog.showMessageBox({
type: "info",
buttons: ["OK"],
Expand Down
84 changes: 2 additions & 82 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3853,17 +3853,6 @@ __metadata:
languageName: node
linkType: hard

"file-type@npm:^18.2.1":
version: 18.2.1
resolution: "file-type@npm:18.2.1"
dependencies:
readable-web-to-node-stream: ^3.0.2
strtok3: ^7.0.0
token-types: ^5.0.1
checksum: bbc9381292e96a72ecd892f9f5e1a9a8d3f9717955841346e55891acfe099135bfa149f7dad51f35ee52b5e7e0a1a02d7375061b2800758011682c2e9d96953e
languageName: node
linkType: hard

"file-uri-to-path@npm:1.0.0":
version: 1.0.0
resolution: "file-uri-to-path@npm:1.0.0"
Expand Down Expand Up @@ -4713,15 +4702,6 @@ __metadata:
languageName: node
linkType: hard

"iconv-lite@npm:0.6.2":
version: 0.6.2
resolution: "iconv-lite@npm:0.6.2"
dependencies:
safer-buffer: ">= 2.1.2 < 3.0.0"
checksum: 03e03eb9fc003bc94f7956849f747258e57c162760259d76d1e67483058cad854a4b681b635e21e3ec41f4bd15ceed1b4a350f890565d680343442c5b139fa8a
languageName: node
linkType: hard

"iconv-lite@npm:^0.6.2":
version: 0.6.3
resolution: "iconv-lite@npm:0.6.3"
Expand Down Expand Up @@ -5833,16 +5813,6 @@ __metadata:
languageName: node
linkType: hard

"m3u8stream@npm:^0.8.6":
version: 0.8.6
resolution: "m3u8stream@npm:0.8.6"
dependencies:
miniget: ^4.2.2
sax: ^1.2.4
checksum: b8f61c1101dd3ad873ff2f3d0e9e6a5139ad17e20990b89ae67f2585043bc2b727151ed85f3e58aabc8a1a95af28e1ee26f69af6ac9e8841ff68129eae2f5ac5
languageName: node
linkType: hard

"make-fetch-happen@npm:^10.0.3":
version: 10.2.1
resolution: "make-fetch-happen@npm:10.2.1"
Expand Down Expand Up @@ -6332,15 +6302,6 @@ __metadata:
languageName: node
linkType: hard

"node-id3@npm:^0.2.6":
version: 0.2.6
resolution: "node-id3@npm:0.2.6"
dependencies:
iconv-lite: 0.6.2
checksum: 9f3ba9d42f4d52348bb2f88dbcdd63ee8fd513dc7c01481d6b10082b83d0f1ce696f920c9bff0e3f2b00486c25fe49c3f93a56d54813809b7edc9ab14b1383d6
languageName: node
linkType: hard

"node-notifier@npm:^10.0.1":
version: 10.0.1
resolution: "node-notifier@npm:10.0.1"
Expand Down Expand Up @@ -6859,13 +6820,6 @@ __metadata:
languageName: node
linkType: hard

"peek-readable@npm:^5.0.0":
version: 5.0.0
resolution: "peek-readable@npm:5.0.0"
checksum: bef5ceb50586eb42e14efba274ac57ffe97f0ed272df9239ce029f688f495d9bf74b2886fa27847c706a9db33acda4b7d23bbd09a2d21eb4c2a54da915117414
languageName: node
linkType: hard

"pend@npm:~1.2.0":
version: 1.2.0
resolution: "pend@npm:1.2.0"
Expand Down Expand Up @@ -7306,7 +7260,7 @@ __metadata:
languageName: node
linkType: hard

"readable-web-to-node-stream@npm:^3.0.0, readable-web-to-node-stream@npm:^3.0.2":
"readable-web-to-node-stream@npm:^3.0.0":
version: 3.0.2
resolution: "readable-web-to-node-stream@npm:3.0.2"
dependencies:
Expand Down Expand Up @@ -7603,7 +7557,7 @@ __metadata:
languageName: node
linkType: hard

"sax@npm:>=0.6.0, sax@npm:^1.1.3, sax@npm:^1.2.4":
"sax@npm:>=0.6.0, sax@npm:^1.2.4":
version: 1.2.4
resolution: "sax@npm:1.2.4"
checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe
Expand Down Expand Up @@ -8080,16 +8034,6 @@ __metadata:
languageName: node
linkType: hard

"strtok3@npm:^7.0.0":
version: 7.0.0
resolution: "strtok3@npm:7.0.0"
dependencies:
"@tokenizer/token": ^0.3.0
peek-readable: ^5.0.0
checksum: 2ebe7ad8f2aea611dec6742cf6a42e82764892a362907f7ce493faf334501bf981ce21c828dcc300457e6d460dc9c34d644ededb3b01dcb9e37559203cf1748c
languageName: node
linkType: hard

"sumchecker@npm:^3.0.1":
version: 3.0.1
resolution: "sumchecker@npm:3.0.1"
Expand Down Expand Up @@ -8277,16 +8221,6 @@ __metadata:
languageName: node
linkType: hard

"token-types@npm:^5.0.1":
version: 5.0.1
resolution: "token-types@npm:5.0.1"
dependencies:
"@tokenizer/token": ^0.3.0
ieee754: ^1.2.1
checksum: 32780123bc6ce8b6a2231d860445c994a02a720abf38df5583ea957aa6626873cd1c4dd8af62314da4cf16ede00c379a765707a3b06f04b8808c38efdae1c785
languageName: node
linkType: hard

"tough-cookie@npm:~2.5.0":
version: 2.5.0
resolution: "tough-cookie@npm:2.5.0"
Expand Down Expand Up @@ -9072,7 +9006,6 @@ __metadata:
electron-store: ^8.1.0
electron-unhandled: ^4.0.1
electron-updater: ^5.3.0
file-type: ^18.2.1
filenamify: ^4.3.0
howler: ^2.2.3
html-to-text: ^9.0.3
Expand All @@ -9082,14 +9015,12 @@ __metadata:
mpris-service: ^2.1.2
node-fetch: ^2.6.8
node-gyp: ^9.3.1
node-id3: ^0.2.6
node-notifier: ^10.0.1
playwright: ^1.29.2
simple-youtube-age-restriction-bypass: "https://gitpkg.now.sh/api/pkg.tgz?url=zerodytrash/Simple-YouTube-Age-Restriction-Bypass&commit=v2.5.4"
vudio: ^2.1.1
xo: ^0.53.1
youtubei.js: ^3.1.1
ytdl-core: ^4.11.1
ytpl: ^2.3.0
languageName: unknown
linkType: soft
Expand All @@ -9105,17 +9036,6 @@ __metadata:
languageName: node
linkType: hard

"ytdl-core@npm:^4.11.1":
version: 4.11.2
resolution: "ytdl-core@npm:4.11.2"
dependencies:
m3u8stream: ^0.8.6
miniget: ^4.2.2
sax: ^1.1.3
checksum: 57df38b5b1e4955db0e0c0be8d185f34de9eaee102ad1281d69de91628230cc84e8d46d278409eafa68c4aab4085a0f9fe8de30e9ea8644e011e20cae7f37c0e
languageName: node
linkType: hard

"ytpl@npm:^2.3.0":
version: 2.3.0
resolution: "ytpl@npm:2.3.0"
Expand Down

0 comments on commit ec61071

Please sign in to comment.