r/devsarg • u/silverbryanDEV • 2d ago
discusiones técnicas Hice web scrapping de +50.000 posts de r/argentina, les cuento lo que me paso
Hace tiempo que quise hacer un proyecto personal copado para poner a prueba todas mis habilidades como "vibecoder engineer" jaja. Asi que me puse a analizar y note que tenia un problema recurrente: "no podia encontrar el mismo meme que habia compartido hace semanas atras".
Como notaran, me gusta compartir memes en diferentes contextos y situaciones, tanto en Reddit como en el Teams de la empresa, jeje, para promover el "excelente clima laboral" mas que nada, porque se que voy a estar con mis compañeros por mucho mucho tiempo.
El scope del proyecto es simple: armar un MVP para recopilar, clasificar y visualizar en una pagina web los memes que mas uso semanalmente. Mi stack de expertise: Claude Code, Python (scrapper), Java para el backend y AWS (infra).
Proceso de recopilacion
Dado que los memes se los robo a rediturros randoms, lo mas logico fue armar un script en Python que consuma la API de JSON de https://old.reddit.com/r/argentina, luego iterar sobre todos los posts, seguido de los comentarios recursivamente, y buscar si alguno tiene una imagen adjunta.
Uno de los principales problemas que tuve es que la API tiene un rate limit de 100rpm y Claude (y muchos proveedores de AI) tienen bloqueado el host reddit.com. Estuve googleando y resulta que fueron demandados por Reddit por scrapear masivamente subreddits para entrenar sus modelos de AI. En cualquier momento me cae una demanda a mi tambien jaja.
Proceso de clasificacion
Este es el mas complicado y con el que tuve mas problemas. Una vez que recopile una solida base de miles de imagenes: ¿como saber si es un meme o no? ¿es viable que yo realice el proceso? ¿como hacer para detectar memes duplicados?
Aca entra en juego Claude Code. Usando la CLI, vos le podes pasar una imagen y un prompt, y luego con el computer vision de Claude te dice si es un meme o no y a que categoria corresponde. ¡Golazo!
Estuve semanas usando a full Claude Code con una sub de $20 rogando para no llegar al limite y si llegaba al limite esperaba un par de horas y volvia a correr el proceso jaja.
Para detectar memes duplicados reconozco que no fue buena la solucion, pero de momento, antes de procesar, se crea un hash de esa imagen y se compara con una base de hashes disponibles. No funciona bien si un usuario subio el mismo meme pero con otra resolucion en pixeles; ahi rompe.
La pagina web
https://openmeme.io/en/ Todo el proyecto esta subido a un repositorio publico en Github por si alguno quiere chusmear: https://github.com/alphabet90/openmeme. Lo hice asi porque necesitaba que el hosting fuera gratis y no queria pagarle al señor Bezos su servicio de AWS S3.
Dada mi experiencia laburando en apps con miles de usuarios y productos que hoy tienen millones de requests, la arquitectura que elegi es la siguiente:

Cloudflare, que fruta noble, infravalorada en mi opinion. El frontend esta construido en Nextjs y esta hosteado en un Cloudflare Worker, mientras que las imagenes tipo meme son entregadas a traves del CDN de Cloudflare, que no es mas que un reverse proxy apuntando a mi repositorio de github -> raw.github.com.
La API, una de mis mayores apuestas, esta construida en Spring Boot y desplegada en Railway. Primera vez que uso este servicio. Es una masa, va joya por el momento. Redis y PostgreSQL para la capa de cache y de datos.
Meilisearch, la joya de la corona. Todavia no esta en uso, pero basicamente planeo usarlo para tener un search engine (cost effective, obvio) que me permita buscar memes en la pagina con baja latencia. Probe PG Vector pero es una verga y lo voy a terminar sacando porque, por ejemplo, quiero buscar "simpsons meme" o "homero memes" y simplemente no lo entiende, a pesar de que existe en la base de datos "homero simpson trabajando...".
Por ultimo y menos importante tenemos al gran Tailscale, que me permite acceder de forma remota a mi db en PostgreSQL y Redis sin tener que exponer esos servicios a internet o acceder a ellos via SSH.
¿Por que elegi hostear en Cloudflare Worker y no en Vercel? Bueno, porque basicamente Vercel me parece un choreo el pricing y ya me estaban apurando para pasarme al Pro de $20. Me costo deployarlo en Cloudflare, no fue sencillo, pero entiendo que Nextjs esta construido de una manera en la que solo es posible deployarlo con un par de clicks en Vercel. Me parece diabolico pero asi es como funciona, y con eso entendes por que esa compañia vale billions. ahora estoy pensando seriamente en pasarme a otro framework. ¿Cual me recomiendan? ¿Que les parece mi proyecto?
