aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-02-09 18:12:04 +0100
committerMinteck <contact@minteck.org>2022-02-09 18:12:04 +0100
commite08d29ce6ecb59f876876ac49414ee1185b0b851 (patch)
tree1082f8a7209177634ffe3db810886c39f6493649
parent22a25ded9f7d9c9a96cce8d1bc12475ca0434201 (diff)
downloadyoutoo-e08d29ce6ecb59f876876ac49414ee1185b0b851.tar.gz
youtoo-e08d29ce6ecb59f876876ac49414ee1185b0b851.tar.bz2
youtoo-e08d29ce6ecb59f876876ac49414ee1185b0b851.zip
The thing is now working as expected!
-rw-r--r--index.js39
-rw-r--r--package.json2
2 files changed, 40 insertions, 1 deletions
diff --git a/index.js b/index.js
index cddace2..aa7247e 100644
--- a/index.js
+++ b/index.js
@@ -72,6 +72,9 @@
console.error(e);
lyrics = "";
}
+ if (!lyricsComplete) {
+ console.log("[" + song + "] Incomplete/nonexistent lyrics, will try to fetch at every sync.");
+ }
let rmeta = {
video: metadata.title,
title: songTitle,
@@ -118,4 +121,40 @@
console.log("Cleaning up...")
if (fs.existsSync("./_youtoo/Dumps")) { fs.rmSync("./_youtoo/Dumps", { recursive: true }); }
+
+ console.log("Fetching lyrics for incomplete songs...")
+ for (let file of fs.readdirSync("./_youtoo/Result")) {
+ let song = file.substring(0, file.length - 4);
+ if (fs.existsSync("./_youtoo/Metadata/" + song + ".json")) {
+ console.log("[" + song + "] Fetching metadata...");
+ let metadata = JSON.parse(fs.readFileSync("./_youtoo/Metadata/" + song + ".json").toString());
+ if (typeof metadata.complete !== "boolean" || !metadata.complete) {
+ console.log("[" + song + "] Gathering lyrics...");
+ let lyricsComplete = false;
+ let lyrics = "";
+ try {
+ let geniusSearchArtist = metadata.artists[0];
+ let geniusSong = (await g.songs.search(geniusSearchArtist + " - " + metadata.title))[0];
+ let geniusTitle = geniusSong.title.replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").trim();
+ console.log(geniusTitle.toLowerCase() + " <-> " + metadata.title.toLowerCase(), geniusTitle.toLowerCase() === metadata.title.toLowerCase());
+ if (geniusTitle.toLowerCase() === metadata.title.toLowerCase() && geniusSong.raw.lyrics_state === "complete") {
+ lyricsComplete = true;
+ lyrics = (await geniusSong.lyrics()).trim()
+ }
+ } catch (e) {
+ console.error(e);
+ lyrics = "";
+ }
+ if (!lyricsComplete) {
+ console.log("[" + song + "] Incomplete/nonexistent lyrics, will try to fetch at every sync.");
+ }
+ metadata.complete = lyricsComplete;
+ metadata.lyrics = lyrics;
+ fs.writeFileSync("./_youtoo/Metadata/" + song + ".json", JSON.stringify(metadata, null, 4));
+ console.log("[" + song + "] Processing audio...");
+ exec("ffmpeg", [ "-y", "-i", "./_youtoo/Result/" + file, "-c", "copy", "-metadata", "lyrics=" + lyrics, "-metadata", "encoded_by=" + require('./package.json').name + "/" + require('./package.json').version, "./_youtoo/_audio.mp3" ], { stdio: "inherit" });
+ fs.renameSync("./_youtoo/_audio.mp3", "./_youtoo/Result/" + song + ".mp3");
+ }
+ }
+ }
})() \ No newline at end of file
diff --git a/package.json b/package.json
index cb14605..ee3a1ee 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "youtoo",
- "version": "1.2.23",
+ "version": "1.2.25",
"description": "A program that downloads, sorts and names music from YouTube",
"main": "index.js",
"scripts": {