V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cmdyu
V2EX  ›  分享创造

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

  •  
  •   cmdyu · 191 天前 · 679 次点击
    这是一个创建于 191 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前几天爆出了 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));
    }
    

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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2288 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:54 · PVG 20:54 · LAX 05:54 · JFK 08:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.