我正在编写Python代码(2.76)来访问YouTube API V3,搜索给定 Channels (使用OAuth2.0进行身份验证),并返回该 Channels 中项目的视频详细信息 . 我可以获得UniqueID,播放列表中的位置, Headers ,说明,关键字,隐私状态,ViewCount,发布日期,#Likes,#Dislikes,#Comments,License和Upload Status .

但是,我无法访问是否已将某个视频标记为"matched third party content" . 我怀疑它在于status.rejectionReason .

status.rejectionReason的有效字符串是:

“claim”,“copyright”,“duplicate”,“unsuractive”,“length”,“termsOfUse”,“trademark”,“uploaderAccountClosed”和“uploaderAccountSuspended” .

status.rejectionReason的描述说明:

“此值解释了YouTube拒绝上传视频的原因 . 仅当uploadStatus属性指示上传被拒绝时,才会显示此属性 . ”

status.uploadStatus的有效字符串是:

“已删除”,“已失败”,“已处理”,“已拒绝”和“已上传” .

但是,在查看status.uploadStatus时,我发现对于我知道已被标记的视频,状态实际上是"processed" . 我认为这是有道理的,因为视频经常被上传,看起来很好,直到它们被标记为"Matched Third Party Content" .

偶尔,我可以撤回'rejected'或'failed'状态,但到目前为止,'rejected'状态仅引用'duplicate'上传,而且大多数情况下,'failed'状态不包含status.failureReason,它应该只是

“codec”,“conversion”,“emptyFile”,“invalidFile”,“tooSmall”或“uploadAborted”

我的问题是:我是否还有其他地方可以查看第三方版权标志的设置位置?

这影响了我们如何通过视频获利 . 我也不知道在哪里查看视频是否已货币化或其货币化尝试是否已被拒绝 . 如果有可能,这可能是收集我正在寻找的信息的更好的地方 .

我的代码的相关部分:

# Call the API's videos.list method to retrieve the video resource.
 videos_list_response = youtube.videos().list(
   id=playlist_item["snippet"]["resourceId"]["videoId"],
   part="snippet,statistics,status"
   ).execute()

 if videos_list_response["items"][0]["status"]["uploadStatus"] == "failed":
   print videos_list_response["items"][0]["status"]
     try:
       WorkSheet.row(i).write(14,videos_list_response["items"][0]["status"]["failureReason"])
     except:
       WorkSheet.row(i).write(14,"Error on failureReason")

 if videos_list_response["items"][0]["status"]["uploadStatus"] == "rejected":
   print videos_list_response["items"][0]["status"]
     try:
       WorkSheet.row(i).write(14,videos_list_response["items"][0]["status"]["rejectionReason"])
     except:
       WorkSheet.row(i).write(14,"Error on rejectionReason")

我得到的示例回复:

被拒绝:

Getting video_id: jt0zTqTBid8  Index #765
{u'license': u'youtube', u'embeddable': True, u'privacyStatus': u'public', u'pub
licStatsViewable': True, u'uploadStatus': u'rejected', u'rejectionReason': u'dup
licate'}

失败:

Getting video_id: 7ttiQfkl_K0  Index #837
{u'publicStatsViewable': True, u'privacyStatus': u'public', u'uploadStatus': u'f
ailed', u'license': u'youtube', u'embeddable': True}

我应该提一下,上述两个视频都没有被标记为版权 . 最后一个只是"failed" . YouTube中的视频管理器页面显示"aborted upload" . 它有 Headers ,描述和其他元细节,只是没有视频 . 但是,返回的对象没有与之关联的status.failedReason .