如果没有“好友圈”,怎样轻松找到与你互相关注的人?

全文共2524字,预计学习时长14分钟

图源:burlimonster

不是所有的 交媒体都可以显示互关列表的。Facebook上可以清晰地看到哪些是你的朋友,Instagram也能让你看到自己关注的人是否也关注了自己。

但Medium却不然。虽然可以显示粉丝和关注的人有哪些,但怎样才能知道与自己“互相关注”的人有哪些呢?

一种方法是:在你长长的粉丝栏里面,不断刷屏,希望无意中能发现里面带绿勾的地方( 页浏览器则为黑色),这种方法枯燥、无聊还很耗时。要是正在浏览其他人的个人资料,这种方法就真的太繁琐了,你得记下在“粉丝”一栏和“关注的人”一栏中同时出现的Medium用户。

现在,一小段代码就能将你从枯燥、无聊、耗时的刷屏中解救出来。最重要的是,无需学习编码知识,你就可以轻松找到“好朋友”!

Python脚本

接下来要用到的逻辑原理,是我们在高中时就学过的有趣的集合概念——维恩图。下图便说明了在Medium上找互关对象的逻辑原理:

为了能把这个维恩图用到实际操作中,我们用Python编写了一个脚本,通过链接的方式发送给用户。同时,我们也会获得该Medium用户所有的followers和following。

通过利用这一基础集合知识,我们创建了代表followers与following交集的互关列表,并将列表导出到一个CSV文件中。以下便是这个Python脚本:

import requests        import json        import csv        import sys             MEDIUM='https://medium.com'             deflist_to_csv(medium_friends):            withopen('yay3.csv', 'a') as file:                writer = csv.writer(file)                writer.writerow(("ID", "Name"))                     for key, value in medium_friends.items():                    writer.writerow([MEDIUM+'/@'+key, value])             defcommon_member(a, b):            a_set =set(a)            b_set =set(b)                 common = []                 if (a_set & b_set):                print(a_set & b_set)                common = a_set & b_set            else:                print("No commonelements")                 return common             defclean_json(response):            return json.loads(response.text.replace('])}while(1);</x>', '', 1))             # Get the UserID from a Medium Username        defget_user_id(username):                 print('Retrieve UserID...')                 url =MEDIUM+'/@'+ username +'?format=json'            response = requests.get(url)            response_dict =clean_json(response)            return response_dict['payload']['user']['userId']             defget_list_of_users(user_id, user_type):                 next_id =False            my_dict = {}                 whileTrue:                     if next_id:                    url =MEDIUM+'/_/api/users/'+ user_id +'/'+ user_type +'?limit=8&to='+ next_id                else:                    url =MEDIUM+'/_/api/users/'+ user_id +'/'+ user_type                     response = requests.get(url)                response_dict =clean_json(response)                     for user in response_dict['payload']['value']:                         print(user['username'])                    my_dict[user['username']] = user['name']                     try:                    next_id = response_dict['payload']['paging']['next']['to']                except:                    break                 return my_dict             defmain(name):                 user_id =get_user_id(name)            print(user_id)                 following =get_list_of_users(user_id, 'following')            followers =get_list_of_users(user_id, 'followers')                 common =common_member(followers.keys(), following.keys())            filtered_dictionary =dict((k, following[k]) for k in common if k in following)                 list_to_csv(filtered_dictionary)             if __name__ =="__main__":            iflen(sys.argv) >1:                main(sys.argv[1])            else:                raiseSystemExit("usage: python filename.py <username>")

我们有两种方法可以运行该程序:

· 在系统上操作命令行。

· 复制粘贴脚本到在线编译器。

操作命令行

首先,启动命令行终端或提示符,并查看是否已经安装了Python 3。

如果用的是macOS系统

假设Python已经在系统上安装好了。键入python –version确定版本。如果是2.7以上3以下的版本,就可以粘贴以下命令,按回车键,然后输入管理员密码进行安装:

/usr/bin/ruby -e "$(curl -fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"

刚刚已经安装了Homebrew软件包,现在可以继续安装所需的软件。这次我们用Python3进行演示:

brew install python3

如果用的是Windows系统

倘如已经安装了Python,键入python –version,就会显示出Python的版本 ;如果还没有安装,或者安装的是Python3以前的版本,需要查找最新稳定版本。

Python安装程序下载后,根据安装向导进行操作,几分钟后,Python程序就安装好了。

图源:bt

现在已经安装好了Python3。接着,如果使用的是Windows系统,就输入python,如果使用的是macOS系统,就输入python3,按空格键,将文件拖放到终端中,再按空格键,然后输入你的Medium用户名。

只需拖放文件,然后输入Medium用户名

最后,只要按下回车键,你就可以去冲一杯咖啡,等着脚本帮你搜索与你互关的Medium用户啦。

生成的CSV文件中显示了每个与你互关的Medium用户以及他们的个人资料连接。以下是运行上述脚本时的截屏:

复制粘贴脚本到在线编译器

如果命令行不对你的胃口,可以跳转这个在线编译器
anupamchugh/0ad2c9dfbaa8e7d8dbf2bf10f515b0fa)。

现在,需要确保两件事:

· 确保右上角选择的语言是Python3。

· 将Medium用户名放入特定行中(下图中突出显示的行):

这种方法的唯一不足是无法轻松导出CSV文件,最终结果只能出现在屏幕底部。

如何找到第X位与你互关的用户

有时,你可能很着急,或者你的粉丝很多,并且希望在找到第X位与你互关的用户时就停止运行该程序。这很简单:

· 首先获取following列表(假设比粉丝列表要少)

· 在获取followers列表(从 址中获取,以8个为一批)时,搜索一下following集合中的元素是否也在followers列表里面。

· 一旦从followers列表中检索到第X个following用户,程序就会输出结果并停止运行。

在命令行上运行

来看看用于查找第X位互关用户的脚本:
https://gist.github.com/anupamchugh/c738e8f76431ac81b31db30a458c41bf

运行该脚本,只需在终端上的python命令中添加一个数字(比如10)到Medium用户名后面。如果不输入一个数字,那么与你互关的用户都将被提取出来。以下是命令示范:

#Find first 10 mutual connectionspython3 script_file_name.py anupamchugh 10

在线编译器上运行

这是修改后的脚本(
https://gist.github.com/anupamchugh/a87e5317083c59acacca9229b3f2a364),可以输入你的用户名并选择 码在在线编译器上运行:

怎样才能知道两个Medium用户是否互关

只想知道两个Medium 用户是否互关,而不是获取全部的互关列表呢?

例如,想知道用户A和B是否互关,我们可能会在用户B的“following”列表中查找是否存在用户A,反之亦然。以下四种情况都是可能的:

根据这一逻辑,我们设计了一种Python脚本(
https://gist.github.com/anupamchugh/9833a433b51ea32fecb3dcd276a50567),该脚本要求上传每位Medium用户的两个用户参数。

该脚本在用户B的following列表中搜索A的username,反过来也是一样的(假设你关注的人少于你的粉丝数量)。

现在,在macOS命令行提示下运行以下命令,看看得到的输出:

python3 two_medium_users.pyanupamchugh elye.project

你可以随意替换用户名name1和name2,就可以在别人的粉丝列表中找到你认识的人啦。

图源:unsplash

用API(应用程序接口)或检查 站可以创建更多分析工具、查找模式。例如,Medium用户的数据就包含了以下值:isMembershipTrialEligible , isWriterProgram mediumMemberAt等。

快去找找与你默默互关的小伙伴吧!

留言点赞关注

我们一起分享AI学习与发展的干货

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月5日
下一篇 2020年5月5日

相关推荐