我正在使用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);
});
您可以使用DOM Parser
var parser = new DOMParser;
let finalResult = parser.parseFromString(results, "text/html")
console.log(finalResult.body.innerHtml); // will turn & to &
在谷歌的问题跟踪器上找到相关的票后: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);
});