我是 HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者 HullQin 授权。我独立开发了《联机桌游合集》,是个网页,可以很方便的跟朋友联机玩斗地主、五子棋等游戏,不收费没广告。还独立开发了《合成大西瓜重制版》。还开发了《Dice Crush》参加 Game Jam 2022。喜欢可以关注我 HullQin 噢~我有空了会分享做游戏的相关技术。
背景
他在沸点说:「我这么好你还舍得取关我,那我什么时候能成为百万粉丝博主?」
如果有人取消关注了你,你一定想知道是谁吧!
掘金没告诉你是谁取关了你,今天我来告诉你,是谁取关了你。
思路如下:
抓包看请求
看过我这专栏的人已经学会抓包了吧!学会Copy as fetch
了吗?
没看过的,在这里学:《遇到表格,手动翻页太麻烦?我教你写脚本,一页展示所有数据》。
点击这里,查看所有关注者:
就是这个请求,对它进行Copy as fetch
操作:
循环,获取粉丝列表
以下代码,需要在掘金页面的 Console 里运行,否则不会带 cookie 的。
// 不能给掘金太大压力,我们定义个sleep函数,1秒请求一次就好
const sleep = async () => new Promise(resolve => setTimeout(resolve, 1000));
// 获取所有新增粉丝,保存到followers。
const getFollowers = async () => {
const followers = {};
console.log('开始读取你的粉丝啦');
for (let i = 0; i < 100; i++) {
const res = await fetch("https://api.juejin.cn/user_api/v1/follow/followers?aid=改成你的&uuid=改成你的&user_id=改成你的&cursor=" + i * 20 + "&limit=20", {
"headers": {
"content-type": "application/json",
},
"referrer": "https://juejin.cn/",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "include"
});
const data = await res.json();
const result = data.data.data;
result.forEach(fan => {
followers[fan.user_id] = fan.user_name;
});
// 如果该页数量少于20,说明是最后一页,结束循环
if (result.length < 20) break;
// 不能给掘金太大压力,我们1秒请求一次就好
await sleep();
}
console.log('读取完毕你的粉丝啦');
return followers;
}
复制代码
调用函数 await getFollowers()即可发请求,并返回现在的粉丝列表。
保存到 LocalStorage
相信大家对浏览器的 localStorage 一定不会陌生!我们定义一个 key,叫做 my_followers,专门用来存储我们的粉丝。
因为 localStorage 只能存储字符串,我们用 JSON 序列化一下。
// 利用localStorage在本地记录所有粉丝
const FOLLOWER_KEY = 'my_followers';
const followers = await getFollowers();
localStorage.setItem(FOLLOWER_KEY, JSON.stringify(followers));
复制代码
第二天,再获取列表,跟昨天的粉丝 diff 一下
获取老粉丝,用 localStorage 中的数据。
获取新粉丝,重新调用 await getFollowers()即可。
const FOLLOWER_KEY = 'my_followers';
const oldFollowers = JSON.parse(localStorage.getItem(FOLLOWER_KEY) || '{}');
const newFollowers = await getFollowers();
复制代码
问题来了,我们要找出取消关注的粉丝,那么只要遍历oldFollowers
,看他们还在不在newFollowers
里面即可,在的,就是老粉,不在的,就上暗杀名单。
const badFollowers = Object.keys(oldFollowers).filter(fan => !(fan in newFollowers));
复制代码
记得更新今日最新粉丝名单:
localStorage.setItem(FOLLOWER_KEY, JSON.stringify(newFollowers));
复制代码
一些名单
输出暗杀名单
console.log(badFollowers.map(id => oldFollowers[id]));
复制代码
大家别上暗杀名单噢!
输出帅哥美女的名单
console.log(Object.values(newFollowers));
复制代码
每天看看是谁那么帅那么美!
输出今日变帅变美的人的名单
const goodFollowers = Object.keys(newFollowers).filter(fan => !(fan in oldFollowers));
console.log(goodFollowers.map(id => newFollowers[id]));
复制代码
看看今天是谁又变帅变美了!
写在最后
我是 HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者 HullQin 授权。我独立开发了《联机桌游合集》,是个网页,可以很方便的跟朋友联机玩斗地主、五子棋等游戏,不收费没广告。还独立开发了《合成大西瓜重制版》。还开发了《Dice Crush》参加 Game Jam 2022。喜欢可以关注我 HullQin 噢~我有空了会分享做游戏的相关技术。
评论