首页 文章

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

提问于
浏览
0

首先让我说我不是在问"how to check a status of a previously uploaded video" . 我的问题是从上传的响应中获取视频的状态 . 我正在使用dotnet客户端,在上传完成后,响应是一个 Google.Apis.Youtube.v3.Data.Video 对象 . 该对象有一个名为 Status 的属性,其中包含以下字段: RejectionReasonPrivacyStatusUploadStatus . 问题是只有PrivacyStatus和UploadStatus才有值 . RejectionReason为null . 杰夫波斯尼克提到(see whole thread here

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

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

响应包括状态非常重要,因为如果没有,那么在代码中,每次上传时我们都要做两次API调用:(1)insertmediaupload then(2)video.list . 这是一项非常昂贵的操作,尤其是并非所有上传都会重复 .

EDIT 作为回应Jeff-Posnick的评论,问题是 "can the API wait for a few seconds and check if the processing is done and then include the status as part of the response?".

因为我看到的行为,我提出了这个问题: That's a bit strange because when I issue a video.list right after the upload the API returns a status for the uploaded video . 但我一直在玩API并得到不一致的结果 . 我一遍又一遍地上传了同一个视频,有时会有"a duplicate"状态,有时也没有 . 请注意我采取的步骤,上面的#1和#2 . 这两个API调用之间没有其他代码 .

1 回答

  • 0

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

    您似乎了解上传方式与YouTube API一起使用的限制,这些限制仍适用于YouTube数据API的v3 . 在从 videos.insert() 请求返回响应时,视频的状态未知,因为它没有实时完成,并且期望videos.insert()API调用阻止等待是不合理的处理完成 .

    我不同意你的评估,即执行 videos.list(id=...,part=status) 是"very costly operation" . 与实际视频上传相比,消耗的带宽量和YouTube API配额最低 . 提供一种通过某种回调或推送更新机制独立于 videos.insert() 调用回传处理状态的方法会很好,但我们目前没有这样的可用内容 . 你必须轮询 videos.list(id=...,part=status) .

相关问题