用于处理视频的 Youtube Data API |第五组
先决条件:用于处理视频的 Youtube Data API |第 1 组、第 2 组、第 3 组
在本文中,我们将讨论为视频评分和获取视频评分。
本文中的示例将需要用户授权。因此,我们将首先创建 OAuth 凭据并安装其他库。
按照以下步骤生成客户端 ID 和密钥。
- 转到 Google Google Developers Console,然后单击页面右上角的登录。使用有效 Google 帐户的凭据登录。如果您没有 google 帐户,请先设置一个帐户,然后使用详细信息在 Google Developers 主页上登录。
- 现在导航到开发人员仪表板并创建一个新项目。
- 单击启用 API 选项。
- 在搜索字段中,搜索 Youtube Data API 并选择下拉列表中的 Youtube Data API 选项。
- 您将被重定向到显示有关 Youtube Data API 的信息的屏幕,以及两个选项: ENABLE 和 TRY API 。
- 单击启用选项以开始使用 API。
- 在 API 和服务下的侧栏中,选择凭据。
- 在页面顶部,选择 OAuth 同意屏幕选项卡。选择一个电子邮件地址,输入产品名称(如果尚未设置),然后单击保存按钮。
- 在 Credentials 选项卡中,选择 Create credentials 下拉列表,然后选择 OAuth Client Id。 OAuth 通常用于需要授权的情况,例如检索用户喜欢的视频。
- 选择应用类型Other,输入名称“YouTube Data API Myvideos”,点击Create按钮,点击OK。
- 单击客户端 ID 右侧的下载按钮以下载 JSON 文件。
- 将文件保存并重命名为
client_secret.json
并将其移动到工作目录。
使用pip命令安装其他库:
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
对视频进行评分的代码:此示例显示如何对视频进行评分。在此示例中,我们正在为一个视频评分。您可以在这里尝试三个选项:喜欢、不喜欢和无(意味着从视频中删除喜欢/不喜欢的任何一种类型的评分)。
import argparse
import os
import re
import urllib.request
import urllib.error
import google.oauth2.credentials
import google_auth_oauthlib.flow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google_auth_oauthlib.flow import InstalledAppFlow
CLIENT_SECRETS_FILE = 'client_secret.json'
SCOPES = ['https://www.googleapis.com/auth/youtube.force-ssl']
API_SERVICE_NAME = 'youtube'
API_VERSION = 'v3'
def get_authenticated_service():
flow = InstalledAppFlow.from_client_secrets_file(
CLIENT_SECRETS_FILE, SCOPES)
credentials = flow.run_console()
return build(API_SERVICE_NAME, API_VERSION,
credentials = credentials)
def like_video(youtube):
youtube.videos().rate(id ='ZmtLzRJh8n8',
rating ='like').execute()
# Driver Code
if __name__ == '__main__':
youtube = get_authenticated_service()
try:
like_video(youtube)
except urllib.error.HttpError as e:
print ('An HTTP error %d occurred:\n % s'
%(e.resp.status, e.content))
else:
print ('The rating has been added')
输出:
当您将执行代码时,您将被要求提供授权代码。要获取代码,您需要按照行上方命令提示屏幕中提到的链接:输入授权码。
现在点击链接并复制粘贴您将通过授予权限获得的授权代码。
从我的 Youtube 帐户的图像中,您可以看到喜欢的视频列表中增加了一些内容。
getRating 的代码:此示例显示如何检索授权用户对参数列表中的视频列表的评分。
import os
import google.oauth2.credentials
import google_auth_oauthlib.flow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google_auth_oauthlib.flow import InstalledAppFlow
# The CLIENT_SECRETS_FILE variable
# specifies the name of a file that
# contains the OAuth 2.0 information
# for this application, including its
# client_id and client_secret.
CLIENT_SECRETS_FILE = "client_secret.json"
# This OAuth 2.0 access scope allows for
# full read/write access to the authenticated
# user's account and requires requests to
# use an SSL connection.
SCOPES = ['https://www.googleapis.com/auth/youtube.force-ssl']
API_SERVICE_NAME = 'youtube'
API_VERSION = 'v3'
def get_authenticated_service():
flow = InstalledAppFlow.from_client_secrets_file(
CLIENT_SECRETS_FILE, SCOPES)
credentials = flow.run_console()
return build(API_SERVICE_NAME, API_VERSION,
credentials = credentials)
def print_response(response):
print(response)
# Remove keyword arguments that are not set
def remove_empty_kwargs(**kwargs):
good_kwargs = {}
if kwargs is not None:
for key, value in kwargs.items():
if value:
good_kwargs[key] = value
return good_kwargs
def videos_get_rating(client, **kwargs):
# See full sample for function
kwargs = remove_empty_kwargs(**kwargs)
response = client.videos().getRating(
**kwargs).execute()
return print_response(response)
if __name__ == '__main__':
# When running locally, disable OAuthlib's
# HTTPs verification. When running in
# production * do not * leave this option enabled.
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
client = get_authenticated_service()
videos_get_rating(client,
id ='UPmVTPyE5DM, c0KYU2j0TM4, eIho2S0ZahI',
onBehalfOfContentOwner ='')
输出:
当您将执行代码时,您将被要求提供授权代码。要获取代码,您需要按照行上方命令提示屏幕中提到的链接:输入授权码。
现在点击链接并复制粘贴您将通过授予权限获得的授权代码。
正如您从输出中看到的那样,其中一个视频被评为喜欢,而其他两个视频没有评级。
参考:
- https://developers.google.com/youtube/v3/docs/videos/rate
- https://developers.google.com/youtube/v3/docs/videos/getRating