Los hilos de comentarios son donde vive la verdadera señal de Reddit. El titular es un texto de marketing, pero las respuestas deciden si un reclamo se sostiene bajo escrutinio. Este tutorial muestra cómo recuperar una publicación de Reddit y su árbol de comentarios completo con una sola llamada API y luego trabajar con la matriz de comentarios plana y con anotaciones profundas para representar, filtrar o agregar.
Requisitos previos
- Python 3.8 o superior
- solicita biblioteca
- Una clave API de Scavio
- Una URL de publicación de Reddit que deseas analizar
Guia paso a paso
Paso 1: Elija una URL de publicación de Reddit
Cualquier URL canónica de publicación de Reddit funciona. La ruta /comments/<id>/ es suficiente.
POST_URL = "https://www.reddit.com/r/Python/comments/1smb9du/fastapi_vs_django/"Paso 2: Obtener la publicación y los comentarios
PUBLICAR en /api/v1/reddit/post con la URL. La respuesta incluye la publicación más la matriz de comentarios planos.
import os, requests
r = requests.post(
"https://api.scavio.dev/api/v1/reddit/post",
headers={"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}"},
json={"url": POST_URL},
timeout=30,
)
data = r.json()["data"]Paso 3: Representar comentarios con sangría profunda
Cada comentario tiene un campo de profundidad que comienza en 0 para respuestas de nivel superior. Multiplique la profundidad por dos espacios para obtener un árbol legible.
for c in data["comments"]:
indent = " " * c["depth"]
print(f"{indent}[{c['score']:>4}] u/{c['author']}: {c['body'][:100]}")Paso 4: Agregado por profundidad para un análisis rápido
Utilice la profundidad para resumir los sentimientos de alto nivel por separado de las respuestas profundas.
from collections import defaultdict
by_depth = defaultdict(list)
for c in data["comments"]:
by_depth[c["depth"]].append(c["score"])
for depth, scores in sorted(by_depth.items()):
print(f"depth {depth}: {len(scores)} comments, avg score {sum(scores)/len(scores):.1f}")Ejemplo en Python
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
def fetch_post(url: str):
r = requests.post(
"https://api.scavio.dev/api/v1/reddit/post",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"url": url},
timeout=30,
)
r.raise_for_status()
return r.json()["data"]
data = fetch_post("https://www.reddit.com/r/Python/comments/1smb9du/")
print(data["post"]["title"])
for c in data["comments"][:20]:
print(" " * c["depth"] + f"u/{c['author']}: {c['body'][:80]}")Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
async function fetchPost(url) {
const r = await fetch("https://api.scavio.dev/api/v1/reddit/post", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ url }),
});
const { data } = await r.json();
return data;
}
const data = await fetchPost("https://www.reddit.com/r/Python/comments/1smb9du/");
console.log(data.post.title);
for (const c of data.comments.slice(0, 20)) {
console.log(" ".repeat(c.depth) + `u/${c.author}: ${c.body.slice(0, 80)}`);
}Salida esperada
FastAPI vs Django in 2026 -- what the teams are actually using
u/senior_py: We moved to FastAPI for the API surface and kept Django for admin
u/django_dev: Django ORM is still unmatched for anything with relational depth.
u/another_dev: Agreed -- the admin is a force multiplier for internal tools.