gpt4 book ai didi

python - 在 Youtube 上获取视频评论

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:14 36 4
gpt4 key购买 nike

我正在使用 Google API,特别是 Youtube 的数据 API,使用视频 ID 在视频上方获取评论。我正在使用 Google 文档中的 python 示例 here ,但出现以下错误:

Missing property "redirect_uris" in a client type of "web"

所以,这是我的 client_secrets_....json 文件:

{
"installed": {
"client_id":"xxxxxxxxxxxx-xxxxje3a7fk4jbs63g6m1a2mand4sa3h.apps.googleusercontent.com",
"project_id":"progettotesicuozzo",
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"token_uri":"https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
"client_secret":"XXXXXXXXXXX",
"redirect_uris":[
"urn:ietf:wg:oauth:2.0:oob",
"http://localhost"
]
}
}

这是代码:

# Usage example:
# python test.py --videoid='<video_id>' --text='<text>'

import httplib2
import os
import sys
import json

from apiclient.discovery import build_from_document
from apiclient.errors import HttpError
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
from oauth2client.tools import argparser, run_flow

CLIENT_SECRETS_FILE = "./client_secret_....json"

YOUTUBE_READ_ONLY_SCOPE = "https://www.googleapis.com/auth/youtube.readonly"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"

MISSING_CLIENT_SECRETS_MESSAGE = """WARNING: Please configure OAuth 2.0
To make this sample run you will need to populate the client_secrets.json file found at: %s with information from the APIs Console https://console.developers.google.com
For more information about the client_secrets.json file format, please visit: https://developers.google.com /api-client-library/python/guide/aaa_client_secrets""" % os.path.abspath(os.path.join(os.path.dirname(__file__), CLIENT_SECRETS_FILE))

def get_authenticated_service(args):
flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, scope=YOUTUBE_READ_ONLY_SCOPE, message=MISSING_CLIENT_SECRETS_MESSAGE)

storage = Storage("%s-oauth2.json" % sys.argv[0])
credentials = storage.get()

if credentials is None or credentials.invalid:
credentials = run_flow(flow, storage, args)

with open("youtube-v3-discoverydocument.json", "r", encoding="utf8") as f:
doc = f.read()
return build_from_document(doc, http=credentials.authorize(httplib2.Http()))

def get_comment_threads(youtube, video_id):
results = youtube.commentThreads().list(
part="snippet",
videoId=video_id,
textFormat="plainText"
).execute()

for item in results["items"]:
comment = item["snippet"]["topLevelComment"]
author = comment["snippet"]["authorDisplayName"]
text = comment["snippet"]["textDisplay"]
print("Comment by " + author + ": " + text)

return results["items"]


def get_comments(youtube, parent_id):
results = youtube.comments().list(
part="snippet",
parentId=parent_id,
textFormat="plainText"
).execute()

for item in results["items"]:
author = item["snippet"]["authorDisplayName"]
text = item["snippet"]["textDisplay"]
print("Comment by " + author + ": " + text)

return results["items"]

if __name__ == '__main__':
# The "videoid" option specifies the YouTube video ID that uniquely
# identifies the video for which the comment will be inserted.
argparser.add_argument("--videoid", help="Required; ID for video for which the comment will be inserted.")
# The "text" option specifies the text that will be used as comment.
#argparser.add_argument("--text", help="Required; text that will be used as comment.")
args = argparser.parse_args()

if not args.videoid:
exit("Please specify videoid using the --videoid= parameter.")

youtube = get_authenticated_service(args)
# All the available methods are used in sequence just for the sake of an example.
try:
video_comment_threads = get_comment_threads(youtube, args.videoid)
parent_id = video_comment_threads[0]["id"]
video_comments = get_comments(youtube, parent_id)
except HttpError as e:
print("An HTTP error " + str(e.resp.status) + " occurred:\n" + json.dumps(str(e.content)))
else:
print("Inserted, listed, updated, moderated, marked and deleted comments.")

请问如何配置好我的json文件?

修复我的 Json 文件后,我现在遇到了这个错误:

An HTTP error 403 occurred:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "insufficientPermissions",
"message": "Insufficient Permission"
}
],
"code": 403,
"message": "Insufficient Permission"
}
}

我已使用 Web URL 中的 ID 请求了我的个人视频,但在提示我使用 redirect_uri 后出现错误。

最佳答案

当您在 google developer console 上创建项目时系统将提示您下载 JSON 文件。您不应该更改此文件,因为您似乎已经删除了重定向 URI。重定向 URI 是作为浏览器凭据的一部分创建的。需要告诉服务器将响应返回到哪里。

例子:

{  
"web":{
"client_id":"xxxxx-i6cjd1hkjntu5bkdkjj5cdnpcu4iju8p.apps.googleusercontent.com",
"project_id":"daimto-tutorials-101",
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"token_uri":"https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
"client_secret":"xxxxx",
"redirect_uris":[
"http://localhost/google-api-php-client-samples/Analytics/Oauth2.php",
"http://localhost/google-api-php-client-samples/Calendar/Oauth2.php"
],
"javascript_origins":[
"https://www.example.com"
]
}
}

Authorized redirect URIs For use with requests from a web server. This is the path in your application that users are redirected to after they have authenticated with Google. The path will be appended with the authorization code for access. Must have a protocol. Cannot contain URL fragments or relative paths. Cannot be a public IP address.

insufficientPermissions 意味着您正在验证的用户无权执行您正在尝试执行的操作。您通过用户和 channel 进行了身份验证。您只能访问该 channel 内的视频。

关于python - 在 Youtube 上获取视频评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42925239/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com