From 1fd4e96a3ce6f5c06c0e30488cb288daf2d8f894 Mon Sep 17 00:00:00 2001 From: MeowcaTheoRange Date: Mon, 19 Feb 2024 19:43:35 -0600 Subject: [PATCH] Prioritize YouTube Music instead of just searching YouTube immediately. --- index.js | 44 ++++++++++++++++++++++++++++++++++---------- package.json | 1 + 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/index.js b/index.js index ea148e0..65d6f5f 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,7 @@ require('dotenv').config(); const { Readable } = require("stream"); const { finished } = require("stream/promises"); +const { searchMusics } = require('fix-esm').require("node-youtube-music"); const { GetListByKeyword } = require("youtube-search-api"); const skewered = require("skewered"); const { createClient } = require("fix-esm").require("webdav"); @@ -43,17 +44,40 @@ async function getVideo() { }); } - const videoList = await GetListByKeyword(`${trackData.artist.name} - ${trackData.name}`, false, 1, [ - {type: "video"} - ]); - - const musicVideo = videoList.items[0]; - - return { - url: musicVideo.id, - name: musicVideo.title, - channelName: musicVideo.channelTitle + let selectedVideo = { + url: "", + name: "", + channelName: "" }; + + const musicList = await searchMusics(`${trackData.artist.name} - ${trackData.name}`); + + const youtubeMusicVideo = musicList.find((song) => { + return skewered(song.title).includes(skewered(trackData.name)); + }); + + console.log(youtubeMusicVideo); + + if (youtubeMusicVideo == null) { + const videoList = await GetListByKeyword(`${trackData.artist.name} - ${trackData.name}`, false, 1, [ + {type: "video"} + ]); + + const musicVideo = videoList.items[0]; + + selectedVideo = { + url: musicVideo.id, + name: musicVideo.title, + channelName: musicVideo.channelTitle + }; + } + else selectedVideo = { + url: youtubeMusicVideo.youtubeId, + name: youtubeMusicVideo.title, + channelName: youtubeMusicVideo.artists[0].name + } + + return selectedVideo; } async function checkNextcloud({ url, name, channelName }, nextcloudClient) { diff --git a/package.json b/package.json index 63f390d..bfdfa28 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "express": "^4.18.2", "fix-esm": "^1.0.1", "node-notifier": "^10.0.1", + "node-youtube-music": "^0.10.3", "skewered": "^1.0.0", "socket.io": "^4.7.4", "socket.io-client": "^4.7.4",