我正在编写Python代码(2.76)来访问YouTube API V3,搜索给定频道(使用OAuth2.0进行身份验证),并返回该频道中项目的视频详细信息。我能够获得UniqueID,播放列表中的位置,标题,描述,关键字,隐私状态,ViewCount,发布日期,#Likes,#Dislikes,#Comments,License和Upload Status。
但是,我无法访问某个视频是否已被标记为“匹配的第三方内容”。我怀疑它位于 status.rejectionReason 。
status.rejectionReason 的有效字符串为:
“声明”,“版权”,“重复”,“不恰当”,“长度”, “termsOfUse”,“trademark”,“uploaderAccountClosed”,以及 “uploaderAccountSuspended”。
status.rejectionReason 的说明指出:
“此值解释了YouTube拒绝上传视频的原因 属性仅在 uploadStatus 属性指示时存在 上传被拒绝。“
status.uploadStatus 的有效字符串为:
“已删除”,“已失败”,“已处理”,“已拒绝”和“已上传”。
但是,在查看 status.uploadStatus 时,我发现我知道已被标记的视频实际上已经“处理”了状态。我认为这是有道理的,因为视频经常被上传并且看起来很好,直到它们稍后被标记为“匹配的第三方内容”。
偶尔,我可以撤回“拒绝”或“失败”状态,但到目前为止,“被拒绝”状态仅引用“重复”上传,而且大多数情况下,“失败”状态不包含 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}
我应该提一下,上述两个视频都没有被标记为版权。最后一个只是“失败”。 YouTube中的视频管理器页面显示“已中止上传”。它有标题,描述和其他元细节,只是没有视频。但是,返回的对象没有与之关联的 status.failedReason 。