Обязательное условие: API данных Youtube для обработки видео | Набор-1
Недавно мы обсудили первые два варианта метода списка видео: Список видео по идентификатору видео и Список видео по нескольким идентификаторам видео. Теперь давайте обсудим два других варианта –
- Список Видео Самых Популярных Видео
- Список Видео, Которые Мне Понравились
- Список самых популярных видео: В
regionCode
параметре указывается страна, для которой вы извлекаете видео.videoCategoryId
параметр может быть установлен для извлечения наиболее популярных видео в определенной категории.
# import libraries
from apiclient.discovery import build
import pprint
# arguments to be passed to build function
DEVELOPER_KEY = "Your_developer_key"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
# creating youtube resource object
# for interacting with API
youtube = build(YOUTUBE_API_SERVICE_NAME,
YOUTUBE_API_VERSION,
developerKey = DEVELOPER_KEY)
def mostpopular_video_details():
# Call the videos.list method to retrieve video info
list_videos_byid = youtube.videos().list(
part = "id, snippet, contentDetails, statistics",
chart ='mostPopular', regionCode ='IN',
maxResults = 2, videoCategoryId ='').execute()
# extracting the results from search response
results = list_videos_byid.get("items", [])
# empty list to store video details
videos = []
n = 1
for result in results:
videos.append("% s (% s) (% s) (% s) (% s) (% s)"
% (n, result["snippet"]["title"],
result['snippet']['description'],
result["snippet"]["publishedAt"],
result['contentDetails'],
result["statistics"]))
n = n + 1
print ("Videos:\n", "\n".join(videos), "\n")
if __name__ == "__main__":
mostpopular_video_details()
Выход:
Список понравившихся видео: Для этого требуется авторизация пользователя для получения понравившихся видео пользователя. Установив myRating
параметр «Не нравится», можно получить не понравившиеся видео. myRating
параметр указывает, что поиск должен выполняться в учетной записи авторизованного пользователя. Поскольку этот метод требует аутентификации пользователя, поэтому мы создадим OAuth
тип учетных данных для этого примера. Выполните следующие действия, чтобы создать Идентификатор клиента и Секретный ключ.
- Перейдите в консоль разработчиков Google Google и нажмите «Войти» в правом верхнем углу страницы. Войдите в систему, используя учетные данные действительной учетной записи Google. Если у вас нет учетной записи Google, сначала настройте учетную запись, а затем используйте данные для входа на домашнюю страницу разработчиков Google.
- Теперь перейдите на панель инструментов разработчика и создайте новый проект.
- Нажмите на опцию Включить API.
- В поле поиска найдите API данных Youtube и выберите опцию API данных Youtube, которая находится в раскрывающемся списке.
- Вы будете перенаправлены на экран с информацией об API данных Youtube, а также двумя вариантами : ВКЛЮЧИТЬ и ПОПРОБОВАТЬ API.
- Нажмите на опцию ВКЛЮЧИТЬ, чтобы начать работу с API.
- На боковой панели в разделе API и службы выберите
Credentials
. - В верхней части страницы выберите
OAuth consent screen
вкладку. Выберите адрес электронной почты, введите название продукта, если оно еще не задано, и нажмите кнопку Сохранить. - На вкладке Учетные данные выберите раскрывающийся список Создать учетные данные и выберите
OAuth Client Id
. OAuth обычно используется там, где требуется авторизация, например, в случае получения понравившихся видео пользователя. - Выберите тип приложения “Другое», введите имя «API данных YouTube Myvideos”, нажмите кнопку «Создать» и нажмите «ОК».
- Нажмите на кнопку загрузки справа от идентификатора клиента, чтобы загрузить файл JSON.
- Сохраните и переименуйте файл как
client_secret.json
и переместите его в рабочий каталог.
Установите дополнительные библиотеки с помощью pip
команды:
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
Ниже приведен пример:
# importing libraries
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
# client_id and client_secret.
CLIENT_SECRETS_FILE = "client_secret.json"
# This 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)
# Build a resource based on a list
# of properties given as key-value pairs.
# Leave properties with empty values
# out of the inserted resource.
def build_resource(properties):
resource = {}
for p in properties:
# Given a key like "snippet.title", split
# into "snippet" and "title", where
# "snippet" will be an object and "title"
# will be a property in that object.
prop_array = p.split('.')
ref = resource
for pa in range(0, len(prop_array)):
is_array = False
key = prop_array[pa]
# For properties that have array values,
# convert a name like "snippet.tags[]"
# to snippet.tags, and set a flag to
# handle the value as an array.
if key[-2:] == '[]':
key = key[0:len(key)-2:]
is_array = True
if pa == (len(prop_array) - 1):
# Leave properties without values
# out of inserted resource.
if properties[p]:
if is_array:
ref[key] = properties[p].split(', ')
else:
ref[key] = properties[p]
elif key not in ref:
# For example, the property is "snippet.title",
# but the resource does not yet have a "snippet"
# object. Create the snippet object here.
# Setting "ref = ref[key]" means that in the
# next time through the "for pa in range ..."
# loop, we will be setting a property in the
# resource's "snippet" object.
ref[key] = {}
ref = ref[key]
else:
# For example, the property is
# "snippet.description", and the resource
# already has a "snippet" object.
ref = ref[key]
return resource
# 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_list_my_liked_videos(client, **kwargs):
kwargs = remove_empty_kwargs(**kwargs)
response = client.videos().list(**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_list_my_liked_videos(client,
part ='snippet, contentDetails, statistics',
myRating ='like', maxResults = 2)
Выход:
При выполнении кода он запросит код авторизации. Для получения кода нам нужно перейти по ссылке, указанной на экране командной строки над строкой: Введите код авторизации.
Теперь перейдите по ссылке и скопируйте код авторизации, полученный при предоставлении разрешения.
Для удобства мы установили maxResults
параметр равным 2.
Полный список параметров см. в документации по API данных Youtube-video.list ()
Ссылка: https://developers.google.com/youtube/v3/документы/видео/список