python-3.x - 检查视频是否有年龄限制
问题描述
您好,我如何能够搜索视频属性以检查视频是否有年龄限制,如果是,那么它会启动一个 if 语句
@commands.command()
async def yt(self, ctx, *, search):
query_string = urllib.parse.urlencode({'search_query': search})
htm_content = urllib.request.urlopen('http://www.youtube.com/results?' + query_string)
search_results = re.findall(r'/watch\?v=(.{11})',htm_content.read().decode())
await ctx.send('http://www.youtube.com/watch?v=' + search_results[0])
一点背景故事:我将我的机器人提交给了一个机器人托管网站 top.gg,但它被拒绝了,因为该机器人能够在非 NSFW 频道中发送“NSFW”内容,我真的很想继续工作,所以所有的帮助都很大赞赏
解决方案
根据 YouTube 的数据 API 文档,您可以使用以下属性附加到有年龄限制的视频:
contentDetails.contentRating.ytRating
(细绳)YouTube 用来识别有年龄限制的内容的分级。
此属性的有效值为:
ytAgeRestricted
您必须调用Videos.list
API 端点,将参数id
as传递给它id=VIDEO_ID
,其中VIDEO_ID
是您感兴趣的视频的 ID。也不必忘记拥有part
包含值的参数contentDetails
。
JSON 响应文本将包含您需要的值items[0].contentDetails.contentRating.ytRating
;如果等于 with ,则应检查该值ytAgeRestricted
。另请注意,该属性ytRating
很可能不存在;在这种情况下,视频不受年龄限制。
在 Python 的上下文中,如果您使用Google APIs Client Library for Python,那么您对Videos.list
端点的调用将如下所示:
from googleapiclient.discovery import build
youtube = build('youtube', 'v3', developerKey = APP_KEY)
response = youtube.videos().list(
id = VIDEO_ID,
part = 'contentDetails',
fields = 'items(contentDetails(contentRating(ytRating)))',
maxResults = 1
).execute()
age_restricted = response['items'][0] \
['contentDetails'] \
['contentRating'] \
.get('ytRating') == \
'ytAgeRestricted'
请注意,上面的代码被简化了很多,因为没有错误处理。
另请注意,上面的代码使用参数for仅从fields
端点获取属性。从 API 中只询问真正需要的信息总是好的。ytRating
推荐阅读
- python - Python Pandas MD5 Value not in index
- python - No such file or directory while using os.rename
- excel - excel 文件 (.xlms) 继续加载但未打开。但是,在加载它时,它会打开,如果单击另一个 excel 文件以打开它
- java - Deserializing a list of JSON objects having object's ID as an object name
- swift - Bind uitextfield value to viewModel using mvvm
- c++ - C++17 copy constructor, deep copy on std::unordered_map
- amazon-web-services - 无法在新的 AWS EMR 集群中获取 SparkContext
- python - How do I add an element to numpy nd array?
- javascript - How to throw error in node js and catch it mocha
- spring - 名称为“configServicePropertySource”的 bean 定义无效