首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >youtube api v3返回的结果少于实体

youtube api v3返回的结果少于实体
EN

Stack Overflow用户
提问于 2019-07-02 16:03:36
回答 1查看 85关注 0票数 1

youtube api返回的注释结果少于实体。

ex>真实评论总数: 103条

youtube api返回评论数: 86条

(首页评论总数: 50,第二页: 36)

我得到了第一页的评论,然后输入了“nextpageToken”来获得下一页的评论。但接口返回小于50(请求maxResults)。即使是评论总数也只有103条。

这是一种bug吗?

我用的是youtube api.commentThreads().list

代码语言:javascript
运行
复制
import os
import googleapiclient.discovery

def main():
     # Disable OAuthlib's HTTPS verification when running locally.
     # *DO NOT* leave this option enabled in production.
     os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"

     api_service_name = "youtube"
     api_version = "v3"
     DEVELOPER_KEY = "YOUR_API_KEY"
     youtube = googleapiclient.discovery.build(
     api_service_name, api_version, developerKey = DEVELOPER_KEY)

     request = youtube.commentThreads().list(
        part="snippet",
        maxResults=50,
        videoId="GazFsfcijXQ"
    )
    response = request.execute()

    print(response)

if __name__ == "__main__":
    main()

第一个结果的#######part

代码语言:javascript
运行
复制
{
 "kind": "youtube#commentThreadListResponse",
 "etag": "\"Bdx4f4ps3xCOOo1WZ91nTLkRZ_c/lHjDTm_13OMmcHL6osO0eXmp450\"",
 "nextPageToken": "QURTSl9pMDRyOS1NcXNhbEwxeVlIVThfY1Q0RGFxaGFkNVRmREM3YmxOUGw4ZXpfUjd3Z1JxYWwxT19GQ180Nm1OMFdGbmJlX2lNV2hrODk4OGlMM0ZNTUVOeTUtbkFqbWU3Smd5aXhDRk9oc2t0SUpZdlJ3bGxOME1ldE5HUncxNmc=",
 "pageInfo": {
  "totalResults": 50,
  "resultsPerPage": 50
 },

我对nextpagetoken使用了相同的代码。

代码语言:javascript
运行
复制
  nextpageToken="QURTSl9pMU5ISGYyUkpxWmRzSnBRejJjUXpRYVVNQ1RTZThrNnMzUUV0X1NyYUtXNmkyb1lxeXhqaVBSRnhqNGlCYXZ4bkNlNTVoZEtTVVNIcklURVlXWWkwSU9pZ2lBXy1ILUtNcDhsX2dub1ZPSGJuWkttYXRPaURvRXV4MGdBMWs="

def main():
    # Disable OAuthlib's HTTPS verification when running locally.
    # *DO NOT* leave this option enabled in production.
    os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"

    api_service_name = "youtube"
    api_version = "v3"
    DEVELOPER_KEY = "YOUR_API_KEY"
    youtube = googleapiclient.discovery.build(
        api_service_name, api_version, developerKey = DEVELOPER_KEY)

    request = youtube.commentThreads().list(
        part="snippet",
        maxResults=50, 
        pageToken = nextpageToken,
        videoId="GazFsfcijXQ",
    )
    response = request.execute()

    print(response)

if __name__ == "__main__":
    main()

########第二个结果的一部分

代码语言:javascript
运行
复制
    {
 "kind": "youtube#commentThreadListResponse",
 "etag": "\"Bdx4f4ps3xCOOo1WZ91nTLkRZ_c/LXcTjLwg3AUlu8RNlb7nbrei05A\"",
 "pageInfo": {
  "totalResults": 36,
  "resultsPerPage": 50
 },

我希望所有评论的视频。评论数量少于100~200条。所以,我想我可以得到所有的评论,不管youtube api的软限制。

EN

回答 1

Stack Overflow用户

发布于 2019-07-02 16:57:03

请注意,对于涉及视频评论的内容,该应用编程接口将它们分成两类,并通过两个端点进行访问:CommentThreadsComments

根据documentation (重点是我的):

commentThread资源不一定包含对某个评论的所有回复,如果您想要检索某个特定评论的所有回复,则需要使用方法。还要注意的是,有些评论没有回复。

更明确地说,replies.comments[]列表并不包含所有注释(再次强调是我的):

顶层评论的一个或多个回复的列表。列表中的每一项都是一个评论资源。

该列表包含有限数量的回复,除非列表中的项目数等于snippet.totalReplyCount属性的值,否则回复列表只是顶级注释可用回复总数的子集。

因此,我认为API工作正常。任何Youtube视频页面--比如GazFsfcijXQ --都会显示一个评论计数器,用来累计顶级评论和回复评论的数量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56847925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档