一行控制台代码实现 github 批量 unstar

231 天前
 cmdyu

前几天爆出了 github 刷星事件:《 GitHub 黑市曝光,高档刷星 6 元一颗,最奇葩开源项目 97%都是刷的》,这其实也很正常,哪里有需求,哪里就有供给;哪里有利益,哪里就有交易。今天不说这个,说一说如何用控制台编程来实现批量 unstar 。

人有时会心血来潮,对某一领域突然很感兴趣,也许就会在 github 上把这一领域的知名项目都 star 一遍。过了一段时间,兴趣消退了,可能就会想把那些项目再 unstar 了,这样它们就不会出现在自己的 star 列表里了。如果 star 过的项目比较多,手工一个个的点的话很麻烦,这时就可以用编程的方式来实现批量操作了。

方法是进入 star 列表页面,然后打开浏览器控制台,输入下面这行代码,回车就可以了。

for await (x of $$('.js-toggler-container .starred button')) { await new Promise(r => setTimeout(r, 500)); x.click() }

原理很简单,就是用 dom 选择函数选出 starred 按钮,然后用 for await of 循环遍历,触发它们的点击事件。在每次点击之前加了一个 500 毫秒的延迟,避免操作太快的话接口报错。

用同样的方法,还可以实现批量 unfollow

for await (x of $$('.js-form-toggle-container input[value="Unfollow"]')){await new Promise(r=>setTimeout(r,500)); x.click()}

在 for await of 循环中加延时这个技术比较有用,执行一些批量操作的时候经常会用到。样板代码如下

for await (x of list) { 
  await new Promise(r => setTimeout(r, 500));
}

大家可以留意一下。欢迎关注微信公众号:文本魔术,了解更多。

701 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/990474

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX