youtube 搜索没有获取 URLS

Posted

技术标签:

【中文标题】youtube 搜索没有获取 URLS【英文标题】:youtube search not getting URLS 【发布时间】:2020-09-18 00:51:45 【问题描述】:

我正在尝试创建一个在 youtube 上搜索视频 URL 的命令。当我自己运行该命令时,它会发送嵌入内容,告诉您缩小搜索范围。但是,当我运行命令 + 查询时,它会在控制台中记录大部分视频信息,但不会说明视频本身的 URL,也不会向服务器发送任何内容。它不记录错误,并且机器人保持在线。如何解决这个问题?

const opts = 
  maxResults: 25,
  key: '(youtube api key)',
  type: 'video'
;

const search = require('youtube-search')

bot.on('message', async message => 
  if(message.author.bot) return;

  if(message.content.toLowerCase() === 'a!play') 
    let embed = new Discord.MessageEmbed()
          .setColor("#73ffdc")
          .setDescription("Please enter a search query. Remember to narrow down your search.")
          .setTitle("YouTube Search API");
      let embedMsg = await message.channel.send(embed);
      let filter = m => m.author.id === message.author.id;
      let query = await message.channel.awaitMessages(filter,  max: 1 );
      let results = await search(query.first().content, opts).catch(err => console.log(err));
      if(results) 
          let youtubeResults = results.results;
          let i  =0;
          let titles = youtubeResults.map(result => 
              i++;
              return i + ") " + result.title;
          );
          console.log(titles);
          message.channel.send(
              embed: 
                  title: 'Select which song you want by typing the number',
                  description: titles.join("\n")
              
          ).catch(err => console.log(err));

          filter = m => (m.author.id === message.author.id) && m.content >= 1 && m.content <= youtubeResults.length;
          let collected = await message.channel.awaitMessages(filter,  maxMatches: 1 );
          let selected = youtubeResults[collected.first().content - 1];

          embed = new Discord.MessageEmbed()
          .setTitle(`$selected.title`)
              .setURL(`$selected.link`)
              .setDescription(`$selected.description`)
              .setThumbnail(`$selected.thumbnails.default.url`);

          message.channel.send(embed);
      
  
);

【问题讨论】:

【参考方案1】:

既然你说大多数信息都被记录下来了。也许一切都是正确的,只是因为你给了 api 的 url,它不需要把它作为信息返回。尝试使用 eval 命令或为随机视频创建自己的命令日志记录信息,例如

https://www.youtube.com/watch?v=nNCdYSzRKpU

看看它是否没有给你链接。如果没有,那么它是完全正常的,并且 api 只是不返回它,如果它返回,你应该添加 api 标签或搜索 youtube-search 文档

【讨论】:

以上是关于youtube 搜索没有获取 URLS的主要内容,如果未能解决你的问题,请参考以下文章

如何通过点击webview中的YouTube搜索页面链接获取视频ID

如何从 Youtube Data API v3 获取最大搜索结果?

获取 Youtube 搜索结果的链接

如何获取 YouTube 频道名称?

在搜索Youtube api后,如何获取Youtube视频[关闭]

使用 YouTube API 从用户提供的搜索词中获取 YouTube 视频 ID