Requisito previo: API de YouTube
Google proporciona un gran conjunto de API para que el desarrollador elija. Todos y cada uno de los servicios proporcionados por Google tienen una API asociada. Siendo uno de ellos, la API de datos de YouTube es muy fácil de usar y ofrece funciones como:
- buscar videos
- Manejar videos como recuperar información sobre un video, insertar un video, eliminar un video, etc.
- Manejar suscripciones como listas de todas las suscripciones, insertar o eliminar una suscripción, etc.
En este artículo, discutiremos cómo extraer comentarios de YouTube y responder usando la API de YouTube de Google en Python.
Comprender la implementación paso a paso: –
- Recuperar resultados de videos de YouTube
- Aquí usaremos commentThreads, lista, método de ejecución, dará la lista de comentarios y respuestas
- Método de lista interna , pase el fragmento y las respuestas en la propiedad de la parte y en la propiedad videoId pase la identificación del video de la URL del video
Python3
# creating youtube resource object youtube = build('youtube','v3', developerKey="Enter API Key") # retrieve youtube video results video_response=youtube.commentThreads().list( part='snippet,replies', videoId="Enter Video ID" ).execute()
- Repita cada respuesta en video y obtenga comentarios y respuestas
- Los datos vienen en formato de diccionario, los datos de cada comentario tienen un número de conteo de respuestas, si el número de conteo de respuestas es cero significa que no hay respuesta en ese comentario
- si el recuento es mayor que cero, iteramos cada respuesta y obtenemos el texto.
- nextPageToken contiene los siguientes datos, aquí estamos verificando si nextPageToken no tiene valor, significa que el valor es Ninguno, finaliza el ciclo, de lo contrario, el ciclo continuará.
A continuación se muestra la implementación completa:
Python3
from googleapiclient.discovery import build api_key = 'API KEY' def video_comments(video_id): # empty list for storing reply replies = [] # creating youtube resource object youtube = build('youtube', 'v3', developerKey=api_key) # retrieve youtube video results video_response=youtube.commentThreads().list( part='snippet,replies', videoId=video_id ).execute() # iterate video response while video_response: # extracting required info # from each result object for item in video_response['items']: # Extracting comments comment = item['snippet']['topLevelComment']['snippet']['textDisplay'] # counting number of reply of comment replycount = item['snippet']['totalReplyCount'] # if reply is there if replycount>0: # iterate through all reply for reply in item['replies']['comments']: # Extract reply reply = reply['snippet']['textDisplay'] # Store reply is list replies.append(reply) # print comment with list of reply print(comment, replies, end = '\n\n') # empty reply list replies = [] # Again repeat if 'nextPageToken' in video_response: video_response = youtube.commentThreads().list( part = 'snippet,replies', videoId = video_id ).execute() else: break # Enter video id video_id = "Enter Video ID" # Call function video_comments(video_id)
Producción:
Verifiquemos los resultados: