如何修复返回编码的Youtube API结果标题

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

我正在使用youtube-search 1.1.4查找视频。问题是我得到了用&'编码的结果标题,而不仅仅是&'等等。

我从下面的示例代码得到的一个结果的例子(再次,故意在字符之间添加空格):title: "Post Malone - "Wow." (Official Music Video)"

尝试通过decodeURI,decodeURIComponent或unescape解决这个问题,但没有帮助。使用直接调用youtube api并得到相同的结果。我错过了什么?

var youtubeSearch = require("youtube-search")

var opts = {
  maxResults  : 15,
  key         : 'MY_API_KEY',
  part        : 'snippet',
  type        : 'video',
};

youtubeSearch('post malone', opts, function(err, results) {
  if(err) return console.log(err);

  console.dir(results);
});
javascript node.js youtube-data-api
2个回答
0
投票

您可以使用DOM Parser

var parser = new DOMParser;

let finalResult = parser.parseFromString(results, "text/html")
console.log(finalResult.body.innerHtml); // will turn & to &

0
投票

在谷歌的问题跟踪器上找到相关的票后:issuetracker.google.com/u/1/issues/128673539并得到谷歌的回应,这是预期的行为,他们不会修复它,我只是使用用户3limin4t0r建议并使用he.js库解码返回值标题,这是空闲解决这个问题的方法,但我无意等待谷歌从他们的决定中走出来......

所以,我的解决方案是这样的:

var youtubeSearch = require("youtube-search")
let he            = require('he');

var opts = {
  maxResults  : 15,
  key         : 'MY_API_KEY',
  part        : 'snippet',
  type        : 'video',
};

youtubeSearch('post malone', opts, function(err, results) {
  if(err) return console.log(err);
  results = results.map(item => {
        item.snippet.title = he.decode(item.snippet.title);
        return item;
   });
  console.dir(results);
});
© www.soinside.com 2019 - 2024. All rights reserved.