全文共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进行处理,非常感谢!