Youtube视频搜索出错(总不匹配项)

问题描述 投票:0回答:2

首先,我仍然不熟悉所有这些,但是我仍然决定尝试一下,因此请耐心等待我。

我在这里使用的软件包是discord.js Commando和discord-youtube-api。在添加播放功能之前,我决定看看是否可以正确找到搜索功能。但是每次我尝试搜索时,结果都是胡说八道(甚至与我尝试搜索的视频都没有任何关联),并且只给了我一个结果(watch?v = -yDd2D5OHyc),而没有其他结果。

class SearchCommand extends Commando.Command {
    constructor(client){
        super(client,{
            name: 'search',
            group:'music',
            memberName:'search',
            description: 'Search a Youtube video',
            args: [
                {
                    key: 'text',
                    prompt: 'Input the video name?',
                    type: 'string'
                }
            ]
        });
    }

    async run (message, args, {text})
    {
        message.channel.send(args)
        message.channel.send(text)
        var video = await youtube.searchVideos(args.toString().replace(/,/g,' '));
        message.channel.send(video.url);
        message.channel.send(video.thumbnail);
        message.channel.send(video.length);

    }
}

module.exports = SearchCommand;
youtube-api bots discord discord.js youtube-javascript-api
2个回答
0
投票

...它[']只给我一个结果...

这是根据searchVideos()package's page方法的预期行为。


[T]结果是胡说八道...

Array.toString()将用逗号连接数组的元素。这可能会导致您出乎意料的结果。

您可以将Array.toString()数组与args结合在一起,并使用空格作为定界符而不是逗号。考虑这个例子...


0
投票

感谢懒散地回答我的问题。当您的解决方案对于有疑问的问题是正确的时,发生了另一个错误

Array.join()

但是,提出的解决方案没有错。只是不完整。幸运的是,我已经找到了新错误的解决方案,并与您的解决方案结合使用,可以使它像这样工作

const text = 'baby shark 10 hours';
const args = text.split(/ +/g);

console.log(args.toString());  // Your current search query
console.log(args.join(' '));   // The expected search query
© www.soinside.com 2019 - 2024. All rights reserved.