Youtube api 使用Youtube API v3 Dotnet客户端处理重复的Youtube视频上载

Youtube api 使用Youtube API v3 Dotnet客户端处理重复的Youtube视频上载,youtube-api,google-api-dotnet-client,Youtube Api,Google Api Dotnet Client,首先,我要说的是,我不是在问“如何检查以前上传的视频的状态”。我的问题是从上传的响应中获取视频的状态。我正在使用dotnet客户端,上传完成后,响应是一个Google.api.Youtube.v3.Data.Video对象。该对象有一个名为Status的属性,其中包含以下字段:RejectionReason、PrivacyStatus和UploadStatus。问题是只有PrivacyStatus和UploadStatus有值。RejectionReason为空。杰夫·波斯尼克提到() 作为上传

首先,我要说的是,我不是在问“如何检查以前上传的视频的状态”。我的问题是从上传的响应中获取视频的状态。我正在使用dotnet客户端,上传完成后,响应是一个
Google.api.Youtube.v3.Data.Video
对象。该对象有一个名为
Status
的属性,其中包含以下字段:
RejectionReason
PrivacyStatus
UploadStatus
。问题是只有PrivacyStatus和UploadStatus有值。RejectionReason为空。杰夫·波斯尼克提到()

作为上传响应的一部分,无法确定视频是否重复,因为YouTube在处理视频之前不知道该视频是否重复,并且在上传完成后才进行处理

这有点奇怪,因为当我在上传之后发布video.list时,API会返回上传视频的状态。因此,即使视频未发布,YouTube似乎仍在索引/处理视频,但它已经知道“刚刚上传的视频”的状态。那么,为什么它不能返回状态作为响应的一部分呢

响应包括状态是很重要的,因为如果没有,那么在代码中,每次执行上载时,我们必须执行两个API调用:(1)insertmediaupload,然后(2)video.list。这是一个非常昂贵的操作,尤其是不是所有的上传都是重复的

编辑 作为对Jeff Posnick下面评论的回应,问题是“API能否等待几秒钟,检查处理是否完成,然后将状态作为回应的一部分?”


我提出这个问题是因为我所看到的行为:
这有点奇怪,因为当我在上传之后发布video.list时,API会返回上传视频的状态。但我一直在玩弄API,结果不一致。我已经上传了相同的视频一遍又一遍,有时有“重复”的状态,有时没有。请注意我采取的步骤,上面第1和第2步。这两个API调用之间没有其他代码。

我不确定这里的问题是什么

您似乎理解上传使用YouTube API的方式的局限性,这些局限性仍然适用于YouTube数据API的v3。从
videos.insert()
请求返回响应时,视频的状态未知,因为尚未对其进行处理。实际处理可能发生在视频上传后一两秒钟,也可能发生在视频上传后几分钟(或更长时间),尤其是对于较大的视频文件。这不是实时完成的,期望videos.insert()API调用阻止等待处理完成也是不合理的


我不同意您的评估,即执行
videos.list(id=…,part=status)
是一项“非常昂贵的操作”。与实际视频上传相比,占用的带宽和YouTube API配额是最小的。如果能够提供一种独立于
videos.insert()
调用的方式,通过某种回调或推送更新机制反馈处理状态,那就太好了,但目前我们还没有类似的功能。你必须投票
视频。列表(id=…,part=状态)

我编辑了我的文章。不过,我同意回调机制是最好的。另外,我已经针对我遇到的问题开始了轮询技术,这确实是根据API的v3我们可以拥有的唯一解决方案。