YouTube api
De seguro has visto estos vídeos que se pusieron de moda, donde los vídeos se van actualizando dependiendo de cuántas visitas tiene el vídeo.
yo mismo hice un vídeo aquí te lo dejo 👀
Y aunque no lo creas es más fácil de lo que parece, solo tenemos que usar la api de youtube esa la podemos encontrar en el siguiente https://developers.google.com/youtube/v3, para usarla necesitamos una cuenta de google que voy a asumir que ya la tienes.
También necesitamos tener instalado python3, voy a asumir que ya lo tienes instalado (si no lo tienes lo puedes descargar de aquí.
El el sitio web de la api podemos ver que hay un sección que se llama referencias, en esta sección hay bastantes ejemplos del uso que le podemos dar a la api, nosotros necesitamos 3 cosas:
- Obtener la data del video, para ver cuantas visitas tenemos.
- Actualizar el titulo del video
- Cambiar la miniatura del video
Vamor por el primer paso
Obtener la data del video
Nos vamos al menú, seleccionamos el submenú videos, y luego list.
En esta sección nos muestra la data que podemos obtener de un video, y los parámetros que se necesitan para obtenerla, a nosotros nos interesa la parte de las vistas!, esto data la podemos obtener si le pedimos que nos retorne las statistics y también necesitamos la data del video, para obtener el título anterior y esto viene en el item snippet .
Lo bueno es que podemos probar la api desde el sitio así que eso haremos, buscamos un video y copiamos su ID, el ID son los últimos dígitos de la url del video.
Este id lo ponemos en esta parte:
Luego ejecutamos esto, con el botón de hasta abajo que dice execute.
Y este nos retorna lo siguiente:
Como podemos ver que nos retorna la data del video, tanto la data de las views como la data del video título, descripción etc.
Ya obtenemos la data, ahora tenemos que hacer esto mismo pero desde python, lo bueno es que la api nos da estas mismas peticiones pero en diferentes lenguajes entonces nos vamos a buscarla para eso le damos a este botón.
Se nos abrira un menu donde podremos ver múltiples ejemplos en diferentes lenguajes
Nos vamos a la sección de python y copiamos el código para ponerlo en tu editor de código favorito, lo modificamos un poco para que podamos pasarle el id del video como parámetro y el código quedaría algo así:
# -*- coding: utf-8 -*- # Sample Python code for youtube.videos.list # See instructions for running these code samples locally: # https://developers.google.com/explorer-help/guides/code_samples#python import os import sys import google_auth_oauthlib.flow import googleapiclient.discovery import googleapiclient.errors # agregamos mas scopes para poder modificar nuestros videos desde el script scopes = ["https://www.googleapis.com/auth/youtube", "https://www.googleapis.com/auth/youtube.force-ssl", "https://www.googleapis.com/auth/youtube.readonly", "https://www.googleapis.com/auth/youtubepartner"] def main(): # Con esto obtenemos el id que pongamos cuando usemos el script ID = sys.argv[1] # Disable OAuthlib's HTTPS verification when running locally. # *DO NOT* leave this option enabled in production. os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" api_service_name = "youtube" api_version = "v3" client_secrets_file = "YOUR_CLIENT_SECRET_FILE.json" # Get credentials and create an API client flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file( client_secrets_file, scopes) credentials = flow.run_console() youtube = googleapiclient.discovery.build( api_service_name, api_version, credentials=credentials) request = youtube.videos().list( part="statistics, snippet", id=ID ) response = request.execute() print(response) if __name__ == "__main__": main()
Si queremos ejecutar este script, en mi caso lo guarde como update.py, nos va a dar error ya que no tenemos las librerias que necesitamos, las instalamos con los siguientes comandos (Es recomendado crear un entorno virtual para manejar las dependencia en python, te recomiendo leer esto https://docs.python.org/es/3/tutorial/venv.html 👀)
pip install --upgrade google-api-python-client pip install --upgrade google-auth-oauthlib google-auth-httplib2
Genial ya tenemos las librerías ahora nos faltan las credenciales para acceder a la api, estas las obtenemos en la consola de google → https://console.developers.google.com/
Tenemos que buscar la api de youtube en la consola de google
Luego habilitamos la api!
Ahora tendremos que crear nuestras credenciales.
Le ponemos un nombre a la app y le damos en guardar
Ahora creamos un cliente OAuth
Luego elegimos la opción de aplicación para ordenadores y le ponemos el nombre que queramos.
¡Ahora ya tenemos las credenciales! solo falta descargarlas
Una vez descargado lo movemos a la carpeta en la que estamos trabajando el proyecto y lo renombramos a client_secret.json, luego modificamos el código en el cual leemos este archivo a esto:
client_secrets_file = "client_secret.json"
Ahora si podemos ejecutar el script y nos tendría que funcionar, recuerda que tienes que pasarle un id de un video como argumento al script:
python elnombredetuscript.py poner id de mi video
Al momento de ejecutar en la consola nos saldrá un link al que tenemos que entrara para que nos de el token que ocupamos para que el script pueda funcionar, entramos a el link y seleccionamos la cuenta la cual tiene el video que queremos modificar, ya que para poder modificarlo tiene que ser un video nuestro, una vez seleccionada la cuenta nos dará un token lo copiamos y lo ponemos en el prompt de la consola, ahora ya nos traerá la data del video.
Entre toda esa data, está lo que ocupamos, así que tomamos esa data y la enviamos modificada, así que agregamos esto al código para que se actualice el título del vídeo:
data_del_video = response["items"][0]["snippet"] vistas = response["items"][0]["statistics"]["viewCount"] data_del_video["title"] = f"Este video tiene {vistas} vistas!" update_request = youtube.videos().update( part="snippet", body=dict( snippet=data_del_video, id = ID ) ).execute()
Ahora nos falta actualizar la imagen para eso vamos a usar una librería que se llama pillow, para generar la imagen, así que lo instalamos con el siguiente comando.
pip install pillow
Luego de instalarlo creamos un archivo que se llame generar_miniatura.py y ponemos el siguiente código:
from PIL import Image, ImageDraw, ImageFont def generar_imagen(vistas): img = Image.new('RGBA',(1280,720),'white') text_miniatura = f"Este video \ntiene \n{vistas} vistas" path = "./miniatura.png" font = ImageFont.truetype("Roboto-Black.ttf",80) w, h = font.getsize(text_miniatura) draw = ImageDraw.Draw(img) draw.text(((1280-w)/2,(720-h)/2),text_miniatura, font=font, fill="black") img.save(path) return path
Tenemos que tener una fuente en el directorio al mismo nivel del archivo, la fuente las puedes descargar de google fonts o de otra pagina que prefieres, la función nos regresa el path de donde fue guardada la imagen, ahora con ese dato y con la imagen generada podemos mandarla para que se actualice la imagen miniatura de nuestro video.
##### from generar_miniatura import generar_imagen ##### ##### path = generar_imagen(vistas) youtube.thumbnails().set( videoId=ID, media_body=path ).execute()
Lo ejecutamos y ahora ya funciona! ya actualizamos el titulo y la imagen del video!