我一直在尝试找出如何通过API下载YouTube字幕的方法,但是官方说明是针对命令行代码量身定制的,而我正尝试在Python Shell中做到这一点。
目前,我一直没有关注此页面-https://developers.google.com/youtube/v3/docs/captions/list
似乎使我绊倒的是与存储和args相关的代码段,即使经过大量谷歌搜索对我来说也没有任何意义。
请参见下面的存储代码:
storage = Storage("%s-oauth2.json" % sys.argv[0])
#nowhere on the page does it refer to this oauth2.json file
credentials = storage.get()
if credentials is None or credentials.invalid:
credentials = run_flow(flow, storage, args)
#if credentials is none why would storage still be needed as an argument?
在页面的下半部分,所有都是在args.parser中添加参数的,这似乎是我在使用Python Shell时不希望使用的命令行内容。
我也一直在阅读有关获得针对YouTube API的OAuth 2.0授权的官方页面,因此我可以自己重写此代码,但我无法越过这一部分:https://developers.google.com/api-client-library/python/auth/web-app
步骤5:交换刷新和访问令牌的授权代码 Web服务器收到授权代码后,可以将授权代码交换为访问令牌。 在回调页面上,使用google-authlibrary验证授权服务器响应。然后,使用flow.fetch_token方法将响应中的授权代码交换为访问令牌:
state = flask.session['state']
这是我从上面的代码声明中得到的错误:
RuntimeError:在请求上下文之外工作。 这通常意味着您尝试使用所需的功能 活动的HTTP请求。查阅有关测试的文档 有关如何避免此问题的信息。
本质上,从对Oauth 2.0流程的大量挖掘中,我认为我无法获取flow.fetch_token来将我的授权代码交换为访问令牌。
我已经测试了我的所有凭据,所以它们很好,这是在授权我努力工作。
到目前为止,这是我作为第一个链接上的Captions API代码的简化版本编写的代码:
import google.oauth2.credentials
import google_auth_oauthlib.flow
flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file("//client_secret_file.json", scopes=["https://www.googleapis.com/auth/youtube.force-ssl"])
flow.redirect_uri = "http://localhost:8080"
authorization_url, state = flow.authorization_url(access_type="offline", include_granted_scopes="true")
flask.redirect(authorization_url)
[响应929字节[302找到]]
state = flask.session['state']
[RuntimeError]
摘要:
如何从Python Shell中的代码下载YouTube字幕?我已经设置好凭据,只是无法让Web服务器为我提供访问令牌,因此我可以执行其余代码。我会使用captions.list链接上的代码,但无法通过为命令行编写的Storage代码语句和args.arguments。