Programa para pesquisar o VKontakte com a mesma opinião [Código aberto]

O VK fornece ferramentas muito boas para a segmentação de publicidade, que permitem encontrar pessoas do sexo, idade, status social e conjugal corretos, inscritos em grupos específicos etc. Essa é apenas a ponta do iceberg, se você se aprofundar nos grandes dados disponíveis nas redes sociais, poderá descobrir sobre a pessoa quase mais do que ele sabe sobre si mesmo.

Ao mesmo tempo, praticamente não há mecanismo para encontrar novos amigos, o que é bastante irônico no contexto de uma rede social. Por outro lado, é compreensível que, se algo não gera renda, significa que provavelmente não se desenvolverá. Para namorar, a VK lançou recentemente o aplicativo, mas, pelo que entendi, na verdade, é um clone do Tinder, e não extrai nenhum dado dos perfis, nem mesmo uma atitude banal em relação ao fumo ou ao álcool - da rede social há apenas autorização.

Tornou-se interessante para nós o quão realista seria corrigir essa situação usando a API VK, e aqui está o que aconteceu:

Faixa de opções na sua tela inicial

Como era?


Então, para começar, vale a pena pintar o estado inicial. A única estratégia adequada que vem à mente é encontrar uma comunidade o mais próxima possível de você em termos de indicadores de cosmovisão / estética / hobby e abrir uma busca por assinantes. Introduza alguns filtros, por exemplo, idade e, em seguida, apenas observe todos em uma linha.

Mas esta opção tem as seguintes desvantagens:

  • Muitos perfis abandonados, fechados e falsos
  • Pesquisa por campos da posição da vida está interrompida
  • Não há múltipla escolha na pesquisa, ou seja, uma atitude negativa e acentuadamente negativa em relação ao álcool, por exemplo, - você não pode escolher
  • Você precisa alternar constantemente entre as guias do navegador
  • É necessário avaliar manualmente em que lugar o usuário da lista tem o público em questão. Ele está realmente interessado?
  • É necessário avaliar manualmente o que o usuário ainda está inscrito, se existem outros públicos de interesse para nós ou algo inaceitável.
  • Você não pode marcar os perfis que visualizou se não viu todo mundo ao mesmo tempo.

Felizmente, quase tudo isso é solucionável e, dados 100 milhões de usuários ativos por mês, até introvertidos com gostos muito específicos têm a chance de encontrar pessoas com idéias semelhantes.



Como é?


Decidimos tentar fazer um projeto com base na análise de assinaturas, com uma interface conveniente e ferramentas de automação. No modo totalmente automático, o algoritmo é algo como isto:

  1. Usuário efetua login via VK
  2. Baixe a lista de suas assinaturas (menos de 1 milhão)
  3. Avaliamos cada um deles de acordo com a posição na lista.
  4. Faça o download de N assinantes de cada um de seus grupos (N depende de quanto tempo ele indicou)
  5. Encontramos no banco de dados usuários inscritos em vários grupos e calculamos sua classificação
  6. Para as pessoas com a classificação mais alta, faça o download das listas de assinaturas para garantir que os grupos encontrados não estejam no 2048º lugar para criar seus principais interesses

Em seguida, o programa entra no modo manual, onde você pode especificar adicionalmente grupos indesejados, alterar notas, adicionar grupos que não estão inscritos, mas pessoas que também são interessantes - tudo será recalculado, a parte superior será reconstruída. Há também um modo completo que pode ser usado para analisar pequenos grupos individuais. Nele, o banco de dados é formado exclusivamente pela obtenção de dados de cada usuário, não sendo necessário fazer o download de todos os grupos da lista.




Sobre o código fonte


Decidimos abrir a fonte para que todos (que conhecem C ++, hein) pudessem experimentar mesmo com os parâmetros que não são criados nas configurações. Bem, ninguém estava preocupado com o fato de sua página ser levada à escravidão aos motoristas de bots e os dados serem vendidos na darknet.

Alguns desenvolvedores abrem o código para se gabar - veja como eu posso. Este não é o caso. O projeto foi desenvolvido sem uma especificação técnica clara, com requisitos em constante mudança, e não pode haver boa arquitetura aqui como uma classe - mesmo a mais flexível, na maioria das vezes, não se curva de maneira alguma para onde deveria. Depois que o projeto toma sua forma final e os requisitos se tornam claros, geralmente temos que fazer uma refatoração em larga escala, mas, neste caso, decidimos adiá-la.

Em primeiro lugar, o programa se tornou especialmente relevante à luz dos eventos recentes, e atrasar o lançamento por mais um mês seria tolice. De repente, alguém em quarentena fica especialmente sozinho, você pode encontrar amigos na Internet.

Em segundo lugar, não está claro se alguém está interessado nesse programa e, se não, não faz sentido perder tempo aprimorando o código, porque o suporte não é esperado. Portanto, para as dívidas técnicas e os custos de corte não chutam muito, estamos cientes.

Também foi necessário adiar outras melhorias, por exemplo, acelerar o trabalho por meio de procedimentos de VK ou levar em consideração a posição do grupo na lista de usuários para reduzir a contribuição de grupos baixos. Uma versão anterior e maior estabilidade foram mais importantes.

requisitos de sistema


Monitor de 1366 x 768, recomenda-se FullHD. O SSD também não será supérfluo.

As bases não foram testadas por mais de 5 milhões, depois que 10 freios fortes certamente começarão. Você pode mudar para um DBMS mais poderoso com bastante rapidez (abstrações do Qt permitem), mas até agora parece impraticável porque públicos multimilionários têm pouco a dizer sobre assinantes; muitas pessoas não podem ser um nicho.

Fontes aqui . Binários para Windows e Linux .

PS: Penso em como a VK poderia melhorar a situação, mas esse é um tópico para um artigo separado.

PPS Muitos editores de TI (incluindo Habr) têm listas de assinantes fechadas e você não poderá levá-las em consideração.

All Articles