搜索志同道合的VKontakte的程序[开源]

VK提供了非常好的广告定位工具,使您可以找到性别,年龄,社会和婚姻状况正确的人,已订阅特定人群等。这只是冰山一角,如果您深入研究社交网络上可用的大数据,就可以找到有关此人的信息。几乎超过他对自己的了解。

同时,实际上没有找到新朋友的机制,这在社交网络的背景下颇具讽刺意味。另一方面,可以理解的是,如果某事不产生收入,则意味着它很可能不会发展。为了约会,VK最近启动了该应用程序,但是据我了解,它实际上是Tinder的克隆,它根本不会从个人资料中提取任何数据,甚至对吸烟或酗酒也持平庸态度-从社交网络上只能获得授权。

对于我们来说,如何使用VK API解决这种情况变得现实起来变得很有趣,结果如下:

主屏幕上志同道合的功能区

因为它是?


因此,对于初学者来说,值得绘制初始状态。我想到的唯一适当的策略是,从世界观/审美/爱好指标的角度寻找一个与您尽可能接近的社区,并开始寻找订阅者。引入一些过滤器,例如年龄,然后连续查看所有过滤器。

但是此选项具有以下缺点:

  • 许多废弃,封闭,伪造的档案
  • 按生活领域搜索位置被打破
  • 搜索中没有多项选择,例如,不能选择对酒精的消极态度和极端消极态度
  • 您必须不断在浏览器标签之间切换
  • 有必要手动评估列表中用户对公众有疑问的位置,他是否真的有兴趣
  • 有必要手动评估用户仍在订阅什么,是否有我们感兴趣的其他公众,或不可接受的东西。
  • 如果您没有一次看到所有人,则无法标记您已查看的个人资料。

幸运的是,几乎所有这一切都是可以解决的,而且每月有1亿活跃用户,即使是内向性很强的内向者也有机会找到志趣相投的人。



如何?


我们决定尝试基于订阅分析,使用方便的界面和自动化工具来创建一个项目。在全自动模式下,算法如下所示:

  1. 用户通过VK登录
  2. 下载他的订阅列表(少于1M)
  3. 我们根据列表中的位置评估它们。
  4. 从他的每个组中下载N个订阅者(N取决于他指示的时间)
  5. 我们在数据库中发现用户订阅了多个组并计算他们的评分
  6. 对于评分最高的人,请下载其订阅列表,以确保找到的组不在第2048位,以建立他们的最高兴趣

接下来,程序进入手动模式,在该模式下,您可以另外指定不需要的组,更改等级,添加未订阅的组,但是其中一些人也很有趣-将会重新计算所有内容,重新构建顶部。 还有一种完整模式可用于分析单个小组。在其中,数据库是通过从每个用户获取数据而专门形成的,不需要下载列表中的所有组。




关于源代码


我们决定开放源代码,以便每个人(知道C ++的人)都可以尝试使用设置中未设置的那些参数。好吧,没有人担心他的页面将被机器人驱动程序奴役,并且数据将在暗网上出售。

一些开发人员打开了要吹牛的代码-看看我怎么做。不是这种情况。该项目开发时没有明确的技术规范,要求不断变化,这里没有一类优秀的体系结构-即使最灵活的体系结构,大多数情况下,也根本不会按预期弯曲。在项目采用最终形式并且要求变得明确之后,通常我们必须进行非常大规模的重构,但是在这种情况下,我们决定将其推迟。

首先,鉴于最近发生的事件,该程序变得尤为重要,而将发布推迟一个月是愚蠢的。突然,隔离区中的某人特别寂寞,您可以在Internet上找到朋友。

其次,目前尚不清楚是否有人对此程序感兴趣,如果没有,那么浪费时间在改进代码上没有意义,因为期望得到支持。因此,对于技术债务和偷工减料没有多大作用,我们已经知道。

也有必要推迟其他改进,例如通过VK程序加速工作,或考虑该组在用户列表中的位置,以减少低级组的贡献。更早的发布和更高的稳定性更为重要。

系统要求


显示器分辨率为1366 x 768,建议使用FullHD。SSD也不会多余。

在确定要开始10次强力刹车之后,未对这些基地进行超过500万次的测试。您可以相当快地切换到功能更强大的DBMS(允许使用Qt抽象),但是到目前为止,这似乎是不切实际的,因为数百万美元的公众对订户几乎没有话语权,利基的事情可能对很多人都不感兴趣。

来源在这里WindowsLinux的二进制文件

PS:我曾考虑过VK如何改善其方面的情况,但这是另一篇文章的主题。

PPS许多IT发布者(包括Habr)都关闭了订阅者列表,因此您将无法考虑它们。

All Articles