Lista de reproducción de la API de datos de Youtube | Conjunto-3

Del artículo anterior, hemos visto que la API se puede usar para insertar, actualizar o eliminar una lista de reproducción. Ahora viene la pregunta de que una vez que hemos creado una lista de reproducción, tenemos que ir a Youtube y agregar manualmente el video a la lista de reproducción recién creada. ¡¡¡NO!!! todo lo que tiene que hacer es usar la credencial de OAuth y conocer la identificación de la lista de reproducción para agregar el video a la lista de reproducción.

Podemos encontrar el ID de la lista de reproducción para una lista de reproducción específica con la que queremos trabajar. Bueno, la respuesta es: hay dos formas de encontrar la identificación:

  1. La primera forma es usar el código que hemos discutido en el artículo anterior para enumerar toda su lista de reproducción. Esto generará la lista de reproducción que posee, y también mencionará la identificación junto con el nombre.
  2. La segunda forma es iniciar sesión en su cuenta de Youtube. Vaya a la lista de reproducción deseada, haga clic en ella y haga clic en la opción de compartir. Esto le mostrará la identificación de la lista de reproducción.

Dado que todo esto requiere la autorización del usuario, primero crearemos la Credencial OAuth.
Antes de agregar un video, veremos cómo enumerar el contenido de una lista de reproducción usando el código.
Siga los pasos a continuación para generar una identificación de cliente y una clave secreta.

  1. Vaya a Google Developers Console y haga clic en Iniciar sesión en la esquina superior derecha de la página. Inicie sesión con las credenciales de la cuenta de Google válida. Si no tiene una cuenta de Google, primero configure una cuenta y luego use los detalles para iniciar sesión en la página de inicio de Google Developers.
  2. Ahora navegue hasta el panel del desarrollador y cree un nuevo proyecto.
  3. Haga clic en la opción Habilitar API .
  4. En el campo de búsqueda, busque Youtube Data API y seleccione la opción Youtube Data API que viene en la lista desplegable.
  5. Será redirigido a una pantalla que dice información sobre la API de datos de Youtube, junto con dos opciones: HABILITAR y PROBAR API .
  6. Haga clic en la opción HABILITAR para comenzar con la API.
  7. En la barra lateral debajo de API y servicios, seleccione Credenciales .
  8. En la parte superior de la página, seleccione la pestaña de la pantalla de consentimiento de OAuth . Seleccione una dirección de correo electrónico, ingrese un nombre de producto si aún no lo ha establecido y haga clic en el botón Guardar.
  9. En la pestaña Credenciales , seleccione la lista desplegable Crear credenciales y elija ID de cliente de OAuth . OAuth generalmente se usa cuando se requiere autorización, como en el caso de recuperar videos que le gustan a un usuario.
  10. Seleccione el tipo de aplicación Otro, ingrese el nombre «YouTube Data API Myvideos», y haga clic en el botón Crear y haga clic en Aceptar.
  11. Haga clic en el botón Descargar a la derecha de la identificación del cliente para descargar el archivo JSON.
  12. Guarde y cambie el nombre del archivo como client_secret.json y muévalo al directorio de trabajo.

Instale bibliotecas adicionales usando el comando pip :

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

Código para enumerar los elementos de la lista de reproducción:

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 playlist_items_list(client, **kwargs):
  
    kwargs = remove_empty_kwargs(**kwargs)
    response = client.playlistItems().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()
      
    playlist_items_list(client,
        part='snippet,contentDetails',
        maxResults=3,
        playlistId='PLqAJNJC4tCYtyVYlRABk5NTDDi2sfqbqV')

Salida:
Cuando ejecute el código, se le pedirá el código de autorización. Para obtener el código, debe seguir el enlace mencionado en la pantalla del símbolo del sistema sobre la línea: Ingrese el código de autorización.

Ahora siga el enlace y copie y pegue el código de autorización que obtendrá al otorgar el permiso.

Para mayor comodidad, hemos establecido el parámetro maxResults en 3. De lo contrario, el recuento de resultados totales es 32. Esto significa que la lista de reproducción consultada consta de 32 videos.

Código para insertar un video: este ejemplo muestra cómo insertar un video en una lista de reproducción. Los atributos requeridos son id, snippet.resourceId.kind y snippet.resourceId.videoId.
Antes de agregar un video a la lista de reproducción requerida, primero cargaremos el video en el canal de YouTube y luego asignaremos el video a la lista de reproducción deseada utilizando la identificación del video. Siga los pasos mencionados en los videos de la API de datos de Youtube | Artículo Set-3 para subir el video. Como referencia, utilicé el mismo código y subí el mismo video al canal de Youtube.

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 playlist_items_insert(client, properties, **kwargs):
    resource = build_resource(properties)
    kwargs = remove_empty_kwargs(**kwargs)
      
    response = client.playlistItems().insert(
        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_items_insert(client, 
        {'snippet.playlistId': 'PLqAJNJC4tCYtyVYlRABk5NTDDi2sfqbqV',
        'snippet.resourceId.kind': 'youtube#video',
        'snippet.resourceId.videoId': 'MhPgMbYkuHc',
        'snippet.position': ''},
        part='snippet',
        onBehalfOfContentOwner='')

Salida:
Cuando ejecute el código, se le pedirá el código de autorización. Para obtener el código, debe seguir el enlace mencionado en la pantalla del símbolo del sistema sobre la línea: Ingrese el código de autorización.

Ahora siga el enlace y copie y pegue el código de autorización que obtendrá al otorgar el permiso.

Como puede ver, el video se agrega a la lista de reproducción. Si ejecuta el código discutido anteriormente para enumerar todos los elementos en una lista de reproducción mencionada, verá que el parámetro totalResults ahora tiene el valor 33.

Referencias:

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

Publicación traducida automáticamente

Artículo escrito por rashi_garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *