You are currently viewing API данных Youtube для обработки видео | Набор-2

API данных Youtube для обработки видео | Набор-2

Обязательное условие: 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 тип учетных данных для этого примера. Выполните следующие действия, чтобы создать Идентификатор клиента и Секретный ключ.

  1. Перейдите в консоль разработчиков Google Google и нажмите «Войти» в правом верхнем углу страницы. Войдите в систему, используя учетные данные действительной учетной записи Google. Если у вас нет учетной записи Google, сначала настройте учетную запись, а затем используйте данные для входа на домашнюю страницу разработчиков Google.
  2. Теперь перейдите на панель инструментов разработчика и создайте новый проект.
  3. Нажмите на опцию Включить API.
  4. В поле поиска найдите API данных Youtube и выберите опцию API данных Youtube, которая находится в раскрывающемся списке.
  1. Вы будете перенаправлены на экран с информацией об API данных Youtube, а также двумя вариантами : ВКЛЮЧИТЬ и ПОПРОБОВАТЬ API.
  2. Нажмите на опцию ВКЛЮЧИТЬ, чтобы начать работу с API.
  3. На боковой панели в разделе API и службы выберите Credentials.
  4. В верхней части страницы выберите OAuth consent screen вкладку. Выберите адрес электронной почты, введите название продукта, если оно еще не задано, и нажмите кнопку Сохранить.
  5. На вкладке Учетные данные выберите раскрывающийся список Создать учетные данные и выберите OAuth Client Id. OAuth обычно используется там, где требуется авторизация, например, в случае получения понравившихся видео пользователя.
  6. Выберите тип приложения “Другое», введите имя «API данных YouTube Myvideos”, нажмите кнопку «Создать» и нажмите «ОК».
  7. Нажмите на кнопку загрузки справа от идентификатора клиента, чтобы загрузить файл JSON.
  8. Сохраните и переименуйте файл как 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/документы/видео/список