Estoy tratando de obtener todos los comentarios en un video de YouTube usando un programa Java. Sin embargo, no puedo obtenerlos, ya que tiene "Mostrar más" en lugar de todos los comentarios. Estoy buscando una manera de obtener todos los comentarios o páginas de comentarios que puedo leer. Tengo una identificación de video y cosas, solo necesito los comentarios.
He intentado all_comments en lugar de mirar en la URL, pero todavía no muestra todos los comentarios y redirige para ver de nuevo.
También he visto la API de YouTube y solo puedo encontrar cómo obtener comentarios con su identificación, pero necesito obtener todos los comentarios de una identificación de video.
Si alguien sabe cómo hacer esto, por favor dígame.
He agregado una recompensa de 50 repeticiones para quien pueda darme una buena respuesta a esto.
Debe obtener una solicitud de lista de hilos de comentarios para su video y luego avanzar utilizando el token de la página siguiente de la última respuesta:
private static int counter = 0;
private static YouTube youtube;
public static void main(String[] args) throws Exception {
// For Auth details consider:
// https://github.com/youtube/api-samples/blob/master/java/src/main/java/com/google/api/services/samples/youtube/cmdline/Auth.java
// Also don't forget secrets https://github.com/youtube/api-samples/blob/master/java/src/main/resources/client_secrets.json
List<String> scopes = Lists.newArrayList("https://www.googleapis.com/auth/youtube.force-ssl");
Credential credential = Auth.authorize(scopes, "commentthreads");
youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential).build();
String videoId = "video_id";
// Get video comments threads
CommentThreadListResponse commentsPage = prepareListRequest(videoId).execute();
while (true) {
handleCommentsThreads(commentsPage.getItems());
String nextPageToken = commentsPage.getNextPageToken();
if (nextPageToken == null)
break;
// Get next page of video comments threads
commentsPage = prepareListRequest(videoId).setPageToken(nextPageToken).execute();
}
System.out.println("Total: " + counter);
}
private static YouTube.CommentThreads.List prepareListRequest(String videoId) throws Exception {
return youtube.commentThreads()
.list("snippet,replies")
.setVideoId(videoId)
.setMaxResults(100L)
.setModerationStatus("published")
.setTextFormat("plainText");
}
private static void handleCommentsThreads(List<CommentThread> commentThreads) {
for (CommentThread commentThread : commentThreads) {
List<Comment> comments = Lists.newArrayList();
comments.add(commentThread.getSnippet().getTopLevelComment());
CommentThreadReplies replies = commentThread.getReplies();
if (replies != null)
comments.addAll(replies.getComments());
System.out.println("Found " + comments.size() + " comments.");
// Do your comments logic here
counter += comments.size();
}
}
Considere api-samples , si necesita un proyecto de esqueleto de muestra.
Actualizar
La situación en la que no puede obtener todos los comentarios también puede ser causada por los límites de la cuota (al menos lo enfrenté):
Esto no es un java, python, js o cualquier otra regla específica del idioma. Si desea superar la cuota, no puede intentar solicitar una cuota más alta . Sin embargo, comenzaría por controlar su rendimiento. Es muy fácil superar la cuota de 100 segundos / usuario .
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras