youtube api返回的评论结果少于实体。
ex>实际评论总数:103条评论
由youtube api返回的评论数:86条评论
(第一页评论的总和:50,第二页评论的总和:36)
我得到第一页评论,然后输入“ nextpageToken”来获得下一页评论。但api返回的值小于50(要求的maxResults)。 甚至在视频中,总评论是103条评论。
这是一种错误吗?
我使用了youtube api.commentThreads()。list
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()
#######第一个结果的一部分
{
"kind": "youtube#commentThreadListResponse",
"etag": "\"Bdx4f4ps3xCOOo1WZ91nTLkRZ_c/lHjDTm_13OMmcHL6osO0eXmp450\"",
"nextPageToken": "QURTSl9pMDRyOS1NcXNhbEwxeVlIVThfY1Q0RGFxaGFkNVRmREM3YmxOUGw4ZXpfUjd3Z1JxYWwxT19GQ180Nm1OMFdGbmJlX2lNV2hrODk4OGlMM0ZNTUVOeTUtbkFqbWU3Smd5aXhDRk9oc2t0SUpZdlJ3bGxOME1ldE5HUncxNmc=",
"pageInfo": {
"totalResults": 50,
"resultsPerPage": 50
},
#
并且我将相同的代码与nextpagetoken一起使用。
# 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()
########第二个结果的一部分
{
"kind": "youtube#commentThreadListResponse",
"etag": "\"Bdx4f4ps3xCOOo1WZ91nTLkRZ_c/LXcTjLwg3AUlu8RNlb7nbrei05A\"",
"pageInfo": {
"totalResults": 36,
"resultsPerPage": 50
},
我希望视频有所有评论。 评论数少于100〜200条评论。 因此,我认为无论youtube api的软限制如何,我都能获得所有评论。
答案 0 :(得分:1)
请注意以下事实:对于视频评论,API将它们分为两类,并使其可以通过两个端点访问:CommentThreads和Comments。
根据documentation(强调是我的):
commentThread资源不一定包含对评论的所有回复,并且如果要检索以下内容的所有回复,则需要使用comments.list 方法一个特别的评论。另外请注意,有些评论没有回复。
更明确地指出,replies.comments[]
列表不包含所有注释(再次强调是我的):
一个或多个对顶级评论的回复列表。列表中的每个项目都是评论资源。
列表包含有限数量的答复,除非列表中的项目数等于snippet.totalReplyCount属性的值,否则答复列表只是以下内容的子集顶级评论可用的回复总数。
因此,我认为该API工作正常。任何YouTube视频页面-例如GazFsfcijXQ-显示一个评论计数器,用于累计顶级评论的数量和回复评论的数量。