我似乎无法使该脚本适用于“统计信息”:
C_Leaf -> ...
我可以使用'id','snippet'或'id,snippet',但是我无法使其与'statistics'一起使用。我一直在寻找答案几个小时,但没有发现任何东西。有任何线索吗?
答案 0 :(得分:0)
根据API文档,YouTube.Search
包含Video
,Channel
和Playlist
的结果。并非所有这些资源都具有统计信息节点,因此YouTube.Search
端点不允许查询statistics
节点-仅查询id
和snippet
。
对于跟踪statistics
的集合(例如Video
),您可以直接查询它们以访问statistics
。由于Videos.list
不会搜索,因此您需要先搜索然后提供相关的视频ID。请注意,您可以更改搜索顺序(和许多其他搜索属性)-API参考中提供了完整的详细信息-但默认排序为“相关性”。
例如:
function getVideoStatistics(videoIds) {
const options = {
id: videoIds.join(","),
fields: "nextPageToken,items(id,statistics)"
};
const results = [];
do {
var search = YouTube.Videos.list('statistics', options);
if (search.items && search.items.length)
Array.prototype.push.apply(results, search.items);
options.pageToken = search.nextPageToken;
} while (options.pageToken);
return results;
}
function getVideosFromQuery(query, maxResults) {
const options = {
q: query,
maxResults: maxResults,
type: 'video',
fields: "nextPageToken,pageInfo/totalResults,items(id/videoId,snippet(title,channelTitle))"
};
const results = [];
do {
var search = YouTube.Search.list('snippet', options);
if (search.items && search.items.length)
Array.prototype.push.apply(results, search.items);
options.pageToken = search.nextPageToken;
} while (options.pageToken && results.length < search.pageInfo.totalResults && results.length < maxResults);
return results;
}
function foo() {
var someQuery = "something";
var searchResults = getVideosFromQuery(someQuery, 50);
var ids = searchResults.map(function (videoSearchResult) {
return videoSearchResult.id.videoId;
});
var stats = getVideoStatistics(ids);
console.log({message:"query video statistics", searchResults: searchResults, statistics: stats});
}