Список воспроизведения API данных Youtube | Комплект-4

Опубликовано: 8 Июля, 2021

В прошлой статье мы обсудили, как составить список содержимого желаемого списка воспроизведения и как вставить видео в список воспроизведения. Теперь в этой статье мы обсудим, как обновить видео в желаемом плейлисте и как удалить видео.

Итак, начав с видео «Обновление видео», давайте быстро обсудим, как получить идентификатор клиента и секретный ключ.

  1. Перейдите в консоль разработчиков Google Google и нажмите « Войти» в правом верхнем углу страницы. Войдите в систему, используя учетные данные действующей учетной записи Google. Если у вас нет учетной записи Google, сначала настройте учетную запись, а затем используйте данные для входа на главной странице Google Developers.
  2. Теперь перейдите к панели инструментов разработчика и создайте новый проект.
  3. Нажмите на опцию Включить API .
  4. В поле поиска найдите Youtube Data API и выберите опцию Youtube Data API в раскрывающемся списке.
  5. Вы будете перенаправлены на экран с информацией об API данных Youtube, а также с двумя вариантами: ВКЛЮЧИТЬ и ПОПРОБОВАТЬ API .
  6. Нажмите кнопку ВКЛЮЧИТЬ, чтобы начать работу с API.
  7. На боковой панели в разделе API и службы выберите Учетные данные .
  8. Вверху страницы выберите вкладку экрана согласия OAuth. Выберите адрес электронной почты, введите название продукта, если оно еще не установлено, и нажмите кнопку «Сохранить».
  9. На вкладке «Учетные данные» выберите раскрывающийся список «Создать учетные данные» и выберите « Идентификатор клиента OAuth» . OAuth обычно используется там, где требуется авторизация, например, в случае получения понравившихся видео пользователя.
  10. Выберите тип приложения «Другое», введите имя «YouTube Data API Myvideos», нажмите кнопку «Создать» и нажмите кнопку «ОК».
  11. Нажмите кнопку « Загрузить» справа от идентификатора клиента, чтобы загрузить файл JSON.
  12. Сохраните и переименуйте файл как client_secret.json и переместите его в рабочий каталог.

Установите дополнительные библиотеки с помощью команды pip :

 pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2

Код для обновления видео: в этом примере показано, как обновить видео, добавленное в список воспроизведения. Обязательными параметрами являются id (идентификатор элемента списка воспроизведения), snippet.resourceId и snippet.playlistId. Здесь мы обновляем позицию загруженного видео. Раньше по умолчанию видео было на первой позиции в плейлисте. Но мы меняем позицию на вторую, устанавливая параметр snippet.position, который принимает значение, начиная с 0, где 0 означает первую позицию, 1 означает вторую позицию и так далее.




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.
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]
key elif 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 not is None :
for key, value in kwargs.items():
if value:
good_kwargs[key] = value
return good_kwargs
def playlist_item_update_position(client, properties, * * kwargs):
resource = build_resource(properties)
kwargs = remove_empty_kwargs( * * kwargs)
response = client.playlistItems().update(
body = resource, * * 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()
playlist_item_update_position(client,
{ 'id' : 'UExxQUpOSkM0dENZdHlWWWxSQUJrNU5URERpMnNmcWJxVi5CMEQ2Mjk5NTc3NDZFRUNB' ,
'snippet.playlistId' : 'PLqAJNJC4tCYtyVYlRABk5NTDDi2sfqbqV' ,
'snippet.resourceId.kind' : 'youtube# video' ,
'snippet.resourceId.videoId' : 'MhPgMbYkuHc' ,
'snippet.position' : '1' },
part = 'snippet' ,
onBehalfOfContentOwner = '')

Примечание. Id - это идентификатор элемента списка воспроизведения, который можно записать, перечислив элемент желаемого списка воспроизведения с помощью кода, описанного в статье Список воспроизведения API данных Youtube | Комплект-3. Запишите атрибут id, который следует за атрибутом etag после тега kind, как «youtube # playlistItem».

Выход:

Когда вы выполните код, вам будет предложено ввести код авторизации. Для получения кода вам необходимо перейти по ссылке, указанной на экране командной строки над строкой: Введите код авторизации.

Теперь перейдите по ссылке и скопируйте и вставьте код авторизации, который вы получите, предоставив разрешение.

Если вы сравните два изображения ниже, вы увидите, что видео, которое раньше находилось в позиции 0, т.е. первая позиция, теперь смещена в позицию 1, то есть вторую позицию.

Код для удаления элемента списка воспроизведения: в этом примере показано, как удалить элемент списка воспроизведения. Идентификатор свойства является обязательным свойством. Это определяет элемент списка воспроизведения, который необходимо удалить.
Успешное завершение отмечается кодом ответа HTTP 204.




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.
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]
key elif 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 not is None :
for key, value in kwargs.items():
if value:
good_kwargs[key] = value
return good_kwargs
def playlist_items_delete(client, * * kwargs):
# See full sample for function
kwargs = remove_empty_kwargs( * * kwargs)
response = client.playlistItems().delete(
* * 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()
playlist_items_delete(client,
id = 'UExxQUpOSkM0dENZdHlWWWxSQUJrNU5URERpMnNmcWJxVi5CMEQ2Mjk5NTc3NDZFRUNB' ,
onBehalfOfContentOwner = '')

Выход:

Когда вы выполните код, вам будет предложено ввести код авторизации. Для получения кода вам необходимо перейти по ссылке, указанной на экране командной строки над строкой: Введите код авторизации.

Теперь перейдите по ссылке и скопируйте и вставьте код авторизации, который вы получите, предоставив разрешение.

Как видно из двух изображений ниже, видео, которое мы добавили в список воспроизведения, а затем обновили, теперь успешно удалено из списка воспроизведения.

Рекомендации:

  1. https://developers.google.com/youtube/v3/docs/playlistItems/delete
  2. https://developers.google.com/youtube/v3/docs/playlistItems/insert
  3. https://developers.google.com/youtube/v3/docs/playlistItems/update
  4. https://developers.google.com/youtube/v3/docs/playlistItems/list
  5. https://developers.google.com/youtube/v3/docs/playlistItems