所以,今天早些时候,我在YouTube上做了一个实验,每10分钟更新一次缩略图。因此,我的Python代码基于youtube.thumbnails.set()上Google开发者页面的代码示例:https://developers.google.com/youtube/v3/docs/thumbnails/set
我的代码如下所示:
def doCredentialStuff():
global youtube
global flow
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
# Get credentials and create an API client
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
client_secrets_file, scopes)
credentials = flow.run_console(access_type='offline')
youtube = googleapiclient.discovery.build(
api_service_name, api_version, credentials=credentials)
def updateYTthumb(filename):
try:
request = youtube.thumbnails().set(
videoId=VIDEO_ID_UPLOAD,media_body=MediaFileUpload(filename))
response = request.execute()
print(response)
except Exception as exc:
print("ERROR!!!! I got this exception: "+str(exc)+" at time "+str(time.time()))
出于我的目的,我想每10分钟上传一次缩略图。因此,在开始运行代码时,我只运行一次doCredentials()。然后,每隔10分钟,我重新运行updateYTthumb(),它将在其中实际执行请求。(本部)
它适用于2到12次迭代!(20-120分钟)。但是,如果我让它保持足够长的时间,它最终总会返回以下错误:
[WinError 10053] An established connection was aborted by the software in your host machine
我不确定如何修复此问题:
doCredentialStuff()
中的某个地方获得一个刷新令牌,然后在updateYTthumb()
期间使用它李>
基本文档w.r.t.授权为OAuth 2.0 for Mobile & Desktop Apps
这个docspecifies表示在OAuth流上,您将收到一个短期访问令牌和一个长期刷新令牌
第Calling Google APIs节指定使用访问令牌可以发出需要授权的API调用(就像您的API调用一样)。第Refreshing an access token节指定访问令牌定期过期
因此,每次当前的访问令牌失效(即过期)时,您都必须使用之前收到的刷新令牌(除了用户explicitly revoked之外,该令牌根本不会过期)与API交换一个新的访问令牌
错误是说您的计算机上有东西中断了连接,下面是一些您可以尝试的事情:
尝试使用crontab来完成这样及时的操作
相关问题 更多 >
编程相关推荐