Я работаю над написанием бота Discord с функциональностью musi c с использованием discord. js и узла, а также нескольких других пакетов, таких как yt-search и ytdl-core.
Проблема, которую я пытаюсь решить, связана с кодом ниже (newVar был просто заполнителем при тестировании):
let regex = /^https/i;
let isUrl = regex.test(checkUrl);
let songInfo;
if (!isUrl) {
yts(suffix, function (err, r) {
if(err) console.error(err);
const videos = r.videos;
let data = JSON.stringify(videos[0])
fs.writeFileSync('youtube.json', data)
})
let newVar = require('../youtube.json');
let {url, title} = newVar;
songInfo = await ytdl.getInfo(newVar.url)
} else {
songInfo = await ytdl.getInfo(args[1]);
}
const song = {
title: songInfo.title,
url: songInfo.video_url,
};
Что я пытаюсь сделать,
Проверяет, является ли 'суффикс' URL-адресом, и, если нет, запускает суффикс через функцию yts() (yt-search)
и получает URL-адрес из возвращаемого объекта.
Затем передайте это значение URL через функцию ytdl.getInfo()
.
Работает до определенной степени, но запись в JSON вызывает проблему в том, что он возвращает тот же URL, даже когда новый поиск завершен, до тех пор, пока программа будет перезапущен,
Затем он будет повторять процесс с тем значением, которое было сохранено в файле JSON при запуске программы. Тем не менее, я получаю результаты, когда я console.log(videos[0].url)
, и значение меняется с каждым запросом, но у меня нет возможности передать эти данные за пределы функции yts()
без предварительной записи в JSON.
Есть идеи?
Извините, если я не указал c достаточно или запутался в моем понимании, это один из моих первых "сложных" проектов. Возможно также, что проблема существует в другом месте модуля, но из того, что я сделал до сих пор, я думаю, что это где-то в коде, показанном выше. Спасибо!