def title_from_youtube(bot, url):
try:
youtube_api_key = bot.config.get_by_path(["spotify", "youtube"])
youtube_client = build("youtube", "v3", developerKey=youtube_api_key)
except (KeyError, TypeError) as e:
logger.error("<b>YouTube API key isn't configured:</b> {}".format(e))
return ""
# Regex by mantish from http://stackoverflow.com/a/9102270 to get the
# video id from a YouTube URL.
match = re.match(
r"^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*", url)
if match and len(match.group(2)) == 11:
video_id = match.group(2)
else:
logger.error("Unable to extract video id: {}".format(url))
return ""
# YouTube response is JSON.
try:
response = youtube_client.videos().list( # pylint: disable=no-member
part="snippet", id=video_id).execute()
items = response.get("items", [])
if items:
return items[0]["snippet"]["title"]
else:
logger.error("<b>YouTube response was empty:</b> {}"
.format(response))
return ""
except YouTubeHTTPError as e:
logger.error("Unable to get video entry from {}, {}".format(url, e))
return ""
评论列表
文章目录