Programa para buscar VKontakte con ideas afines [Código abierto]

VK proporciona herramientas muy buenas para la orientación publicitaria, que le permiten encontrar personas del género, edad, estado social y marital adecuados, suscritas a grupos específicos, etc. Esto es solo la punta del iceberg, si profundiza en los grandes datos disponibles en las redes sociales, puede conocer a la persona casi más de lo que sabe sobre sí mismo.

Al mismo tiempo, prácticamente no existe un mecanismo para encontrar nuevos amigos, lo cual es bastante irónico en el contexto de una red social. Por otro lado, es comprensible, si algo no genera ingresos, significa que lo más probable es que no se desarrolle. Para las citas, VK lanzó recientemente la aplicación, pero, según tengo entendido, este es en realidad un clon de Tinder, y no extrae ningún dato de los perfiles, ni siquiera una actitud banal hacia el tabaquismo o el alcohol: de la red social solo hay autorización.

Nos resultó interesante cómo solucionar de manera realista esta situación utilizando la API de VK, y esto es lo que surgió de esto:

Cinta de ideas afines en su pantalla de inicio

¿Como era?


Entonces, para empezar, vale la pena pintar el estado inicial. La única estrategia adecuada que viene a la mente es encontrar una comunidad más cercana a usted en términos de indicadores de cosmovisión / estética / pasatiempo, y abrir una búsqueda de suscriptores. Introduzca algunos filtros, por ejemplo, la edad, y luego mire todos en una fila.

Pero esta opción tiene las siguientes desventajas:

  • Muchos perfiles abandonados, cerrados y falsos
  • La búsqueda por campos de posición de vida está rota
  • No hay una opción múltiple en la búsqueda, es decir, una actitud negativa y muy negativa hacia el alcohol, por ejemplo, no puede elegir
  • Tienes que cambiar constantemente entre pestañas del navegador
  • Es necesario evaluar manualmente en qué lugar el usuario en la lista tiene al público en cuestión, ¿está realmente interesado?
  • Es necesario evaluar manualmente lo que el usuario todavía está suscrito, si hay otros públicos de interés para nosotros o algo inaceptable.
  • No puede marcar los perfiles que ha visto si no vio a todos a la vez.

Afortunadamente, casi todo esto es solucionable, y dado 100 millones de usuarios activos por mes, incluso los introvertidos con gustos muy específicos tienen la oportunidad de encontrar personas de ideas afines.



¿Cómo es?


Decidimos intentar hacer un proyecto basado en el análisis de suscripciones, con una interfaz conveniente y herramientas de automatización. En modo totalmente automático, el algoritmo es algo como esto:

  1. El usuario inicia sesión a través de VK
  2. Descargue la lista de sus suscripciones (menos de 1M)
  3. Evaluamos cada uno de ellos de acuerdo con la posición en la lista.
  4. Descargue N suscriptores de cada uno de sus grupos (N depende de cuánto tiempo haya indicado)
  5. Encontramos en la base de datos usuarios suscritos a varios grupos y calculamos su calificación
  6. Para las personas con la calificación más alta, descargue sus listas de suscripción para asegurarse de que los grupos encontrados no estén en el lugar 2048 para desarrollar sus principales intereses

A continuación, el programa pasa al modo manual, donde también puede especificar grupos no deseados, cambiar calificaciones, agregar grupos a los que no están suscritos, pero personas que también son interesantes: todo se volverá a calcular, la parte superior se reconstruirá. También hay un modo completo que puede usarse para analizar grupos pequeños individuales. En ella, la base de datos se forma exclusivamente mediante la obtención de datos de cada usuario, no es necesario descargar todos los grupos de la lista.




Sobre el código fuente


Decidimos abrir la fuente para que todos (que conozcan C ++, eh) puedan experimentar incluso con esos parámetros que no están hechos en la configuración. Bueno, a nadie le preocupaba que su página fuera esclavizada por los controladores de bot, y los datos se vendieran en la darknet.

Algunos desarrolladores abren el código para presumir; vea cómo puedo hacerlo. Este no es el caso. El proyecto se desarrolló sin una especificación técnica clara, con requisitos que cambian constantemente, y no puede haber una buena arquitectura aquí como clase, incluso la más flexible, con mayor frecuencia, no se dobla en absoluto donde se suponía que debía hacerlo. Una vez que el proyecto se vuelve final y los requisitos se vuelven claros, generalmente tenemos que hacer una refactorización a gran escala, pero en este caso decidimos posponerlo.

En primer lugar, el programa se ha vuelto especialmente relevante a la luz de los acontecimientos recientes, y retrasar el lanzamiento por otro mes sería una tontería. De repente, alguien en cuarentena se siente especialmente solo, puedes encontrar amigos en Internet.

En segundo lugar, no está claro si alguien está interesado en este programa, y ​​si no, entonces no tiene sentido perder el tiempo en mejorar el código, porque no se espera soporte. Por lo tanto, para la deuda técnica y los recortes no son tan importantes, estamos al tanto.

También fue necesario posponer otras mejoras, por ejemplo, acelerar el trabajo a través de los procedimientos de VK o tener en cuenta la posición del grupo en la lista de usuarios para reducir la contribución de los grupos de bajo nivel. Una versión anterior y una mayor estabilidad fueron más importantes.

Requisitos del sistema


Monitor de 1366 x 768, se recomienda FullHD. SSD tampoco será superfluo.

Las bases no se probaron durante más de 5 millones, después de que seguramente comenzarán 10 frenos fuertes. Puede cambiar a un DBMS más potente con bastante rapidez (las abstracciones Qt lo permiten), pero hasta ahora parece poco práctico porque los públicos multimillonarios tienen poco que decir sobre los suscriptores, por lo que muchas personas no pueden ser nicho.

Fuentes aquí . Binarios para Windows y Linux .

PD: Tengo pensamientos sobre cómo VK podría mejorar la situación de su lado, pero este es un tema para un artículo separado.

PPS Muchos editores de TI (incluido Habr) tienen listas de suscriptores cerradas, y no podrá tenerlas en cuenta.

All Articles