我正在使用discord.js和node以及一些其他软件包(例如yt-search和ytdl-core)编写具有音乐功能的Discord机器人。
我要解决的问题与下面的代码有关(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。 -
然后通过
ytdl.getInfo()
函数传递该url值。 -
它在一定程度上可以正常工作,但是写入JSON会导致一个问题,即即使重新搜索完成,它也会返回相同的URL,直到重新启动程序为止,
-
然后,它将在执行程序时使用存储在JSON文件中的任何值重复该过程。但是,我在
console.log(videos[0].url)
时会得到结果,并且每个查询的值都会改变,但是如果不先写入JSON,就无法将数据传递到yts()
函数之外。
有什么想法吗?
很抱歉,如果我不够具体,或者我的理解困惑,这是我的第一个“复杂”项目之一。也可能是该问题存在于模块的其他位置,但是到目前为止,我认为它在上面显示的代码中。谢谢!