¿Querés bajar un post de Reddit con todos sus comentarios y verlo ordenado, sin el quilombo de la web? Con este script en JavaScript lo podés hacer. Te voy a contar cómo funciona, para qué sirve y cómo modificarlo a tu gusto, con ejemplos que podés copiar y pegar.
Qué hace
El script agarra la URL de un post, le pide la info a la API pública de Reddit y te devuelve un texto legible con: autor, fecha, título, contenido y todos los comentarios (incluidas las respuestas en cadena).
Paso a paso
- Lee la URL: Saca el subreddit y el ID del post directo del navegador.
- Consulta a Reddit: Llama a
https://www.reddit.com/r/[subreddit]/comments/[postId].json
. - Procesa el post: Guarda autor, fecha, título y cuerpo del post.
- Procesa los comentarios: Usa una función recursiva para recorrerlos, respetando la jerarquía.
- Arma el texto final: Con indentaciones para las respuestas y un link a la fuente.
- Muestra todo: Lo tira en la consola del navegador.
Para qué sirve
- Guardar discusiones: Tener hilos completos para leer más tarde.
- Analizar datos: Ver tendencias, opiniones o comportamientos.
- Automatizar resúmenes: Pasar discusiones a blogs o reportes.
- Moderación: Revisar contenido sin pelearse con la interfaz de Reddit.
Ejemplo rápido
Si estás en:
https://www.reddit.com/r/javascript/comments/123abc/mi_proyecto_en_js/
y corrés el script en la consola, vas a ver algo así:
POST ORIGINAL
User123
8/14/2025, 9:18:00 PM
Mi proyecto en JS
Este es mi nuevo proyecto en JavaScript, ¿qué opinan?
COMENTARIOS
DevGuru
8/14/2025, 9:20:00 PM
¡Buen trabajo! ¿Usaste alguna librería específica?
CodeNinja
8/14/2025, 9:25:00 PM
Me gusta, pero probá con TypeScript para más seguridad.
User456
8/14/2025, 9:30:00 PM
Gran idea, pero el diseño podría mejorar.
Fuente: https://www.reddit.com/r/javascript/comments/123abc
Ideas para tunearlo
1. Guardar en un archivo .txt
Modificás el código para que en vez de mostrarlo en consola, te baje un archivo. Ideal si querés armar un archivo con varios hilos.
2. Mostrarlo en una página web
Podés meter el resultado en un HTML básico y verlo con formato, sin ensuciar la consola.
3. Filtrar por palabras clave
Por ejemplo, mostrar solo comentarios que contengan “error” o “bug” para cazar problemas rápido en hilos largos.
Cosas a tener en cuenta
- Límites: La API de Reddit no deja hacer infinitas consultas seguidas. Si vas a usarlo mucho, necesitás OAuth.
- Errores: No maneja casos como URLs inválidas o posts borrados.
- Posibles mejoras: Manejo de errores, contador de comentarios, exportar a JSON/CSV o paginar cuando hay miles de respuestas.
En resumen
Con unas pocas líneas de código, pasás de tener un hilo de Reddit lleno de ruido visual a un texto limpio y ordenado. Lo podés guardar, analizar o hasta mostrar en tu propia web. El límite está en qué tan creativo seas para usar los datos.
Si querés, puedo también reescribir los ejemplos de código para que suenen igual de “humanos” y no a documentación técnica seca. ¿Querés que lo haga?
Script completo
(async () => {
const urlParts = window.location.pathname.split('/');
const postId = urlParts[4];
const subreddit = urlParts[2];
const apiUrl = `https://www.reddit.com/r/${subreddit}/comments/${postId}.json`;
const response = await fetch(apiUrl);
const data = await response.json();
const post = data[0].data.children[0].data; // Post original
const comments = data[1].data.children;
function parseComments(commentsArray, depth = 0) {
let result = '';
for (const comment of commentsArray) {
if (comment.kind !== 't1') continue;
const c = comment.data;
const date = new Date(c.created_utc * 1000).toLocaleString();
const indent = ' '.repeat(depth);
result += `${indent}${c.author}\n`;
result += `${indent}${date}\n`;
result += `${indent}${c.body}\n\n`;
if (c.replies && c.replies.data) {
result += parseComments(c.replies.data.children, depth + 1);
}
}
return result;
}
let textoFinal = '';
// Post original
textoFinal += `POST ORIGINAL\n`;
textoFinal += `${post.author}\n`;
textoFinal += `${new Date(post.created_utc * 1000).toLocaleString()}\n`;
textoFinal += `${post.title}\n`;
if (post.selftext) textoFinal += `${post.selftext}\n`;
textoFinal += '\nCOMENTARIOS\n';
// Comentarios
textoFinal += parseComments(comments);
// Fuente
textoFinal += `\nFuente: https://www.reddit.com/r/${subreddit}/comments/${postId}`;
console.log(textoFinal);
})();
No hay comentarios.:
Publicar un comentario