前端冰可乐🥤|用 50 行代码成为洛竹🎋升级lv5的关键先生

1,965 阅读5分钟

大家好,我是寒草😈,一只草系码猿🐒。间歇性热血🔥,持续性沙雕🌟。
如果喜欢我的文章,可以关注➕点赞,与我一同成长吧~

「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!

系列开篇词

前端冰可乐是我的新的专栏,虽然是新的专栏但是我也把之前的部分文章放在了这个专栏下,这个系列主要是分享我的一些好玩有趣或者有一些鬼点子的前端 demo

口号是:把前端变成冰可乐一样让大家快乐的东西

ps:两周内我还会发布一个内容满满的系列专栏,请大家依然保持期待,趣味性实践和硬核内容分享,草系前端全都要🔥

前奏🎵

我在本月发 掘金的镇站之宝们:掘金八大分类百强文章可视化分析 这篇文章之后被优弧大佬拉进了掘金技术群,在里面认识了很多大佬,其中就包括 洛竹🎋,与其相谈甚欢,就在我前几天发了我与前端有场约会🌟 | 工作一周年经验总结,洛竹也给了我祝福和鼓励,就在我们谈天说地的时候他说他要发新的文章了,顺便提到了他应该把文章发出来大概率就是lv5了。

我想既然如此,那我就当你升上lv5的关键先生吧,可是能他发文章的时候我一定在努力工作 💪 ,我不能一直在他的主页一直挂着,那咋办呢,于是我想到那我就写个 Nodejs 脚本,帮我在洛竹倔力值到 9999 的时候点个赞吧。

嘿嘿嘿,我也说别期待,我周末很忙的,但是我还是做了,好兄弟吧~

仓库地址:luozhu-auto-digg

ps:或许本篇文章的名字应该改成 震惊,草系前端为了不影响工作居然在周末对洛竹🎋做这种事!

间奏🎵

代码其实很简单,在这里发出来就是想激发一下大家,其实我们平时用的技术也可以用来做一些工作之外的好玩的事情,怎么说呢,既能锻炼编码能力,又能让你对技术保持热情

先说说我的思路:

  • 通过轮询获取洛竹🎋的信息
  • 因为倔力值更新可能有延迟,所以此处倔力值我要自己通过总点赞和阅读数去计算
  • 洛竹🎋倔力值到达 9999,给我之前没有点过赞的文章点个赞,诶,我这样就成了关键先生!

ps:此处我特意取消了之前给洛竹🎋文章的点赞,让他升级晚一点,别升级太早了让我的程序没有用武之地,我就是一个心机满满的草系前端。所以此文的标题应该改成 震惊!草系前端因嫉妒洛竹🎋取消了之前的点赞,没想到他是这样的人

下面我们一起看看我的代码吧~

const superagent = require('superagent');
const COOKIE = 'COOKIE不给你看';
const LV5_POWER = 10000;
const THRESHIOLD_VALUE = 20;
const NEARLY_DELAY = 5000;
const UN_NEARLY_DELAY = 60000;

// 倔力值计算公式
const computedPower = (digg, view) => {
    return digg + Math.floor(view / 100);
}

// 获取洛竹的信息数据
const getLuoZhuPower = async () => {
    const resData = await superagent.get('https://api.juejin.cn/user_api/v1/user/get?aid=2608&user_id=325111174662855&not_self=1'); 
    const { got_digg_count, got_view_count } = JSON.parse(resData.text).data;
    return computedPower(got_digg_count, got_view_count);
}

// 给洛竹的🍉点赞
const diggLuoZhu = () => {
    superagent.post('https://api.juejin.cn/interact_api/v1/digg/save').send({
        client_type: 2608,
        item_id: "6983854006124675108",
        item_type: 2 
    }).set('Cookie', COOKIE);
}

// 判断是否已经接近 10000 倔力值了
const getIsNearly = (luozhuPower) => {
    if( LV5_POWER - luozhuPower <= THRESHIOLD_VALUE ) return true;
    return false;
}

// 根据是否已经接近 10000 倔力值,确定轮询时间
const getDelayTime = (isNearly) => {
    if(isNearly) return NEARLY_DELAY;
    return UN_NEARLY_DELAY;
}

// 程序的入口方法
const generateDigg = async () => {
    // 获取信息
    let luozhuPower = await getLuoZhuPower();
    let isNearly = getIsNearly(luozhuPower);
    setTimeout(() => {
        // 如果倔力值是 9999,趁现在点赞(兼容运气不好,没有点到的情况)
        if(luozhuPower >= LV5_POWER - 1) {
            diggLuoZhu();
        } else {
            generateDigg();
        }
    }, getDelayTime(isNearly));
    
}

generateDigg();

代码中我为了避免给掘金造成更多负担,设置了一个 isNearly 属性,如果洛竹🎋 已经快要升级了,我才会去把轮询周期缩短。

ps:或许本篇文章的名字应该改成 震惊,草系前端为了成为洛竹🎋升级的关键先生,居然恨不得五秒钟刷一次页面!

尾奏🎵

image.png

在结尾,首先提前预祝 洛竹🎋 伙伴成为lv5作者,倔力值正式变成五位数,也期待你未来更多优秀的文章。

我在这里也希望我在这里发文可以为掘金带来更多的活力🔥 ,不仅仅是分享技术,也要用技术实现一些好玩的东西,(可以做更多好玩的东西)或许就是我们这个行业的魅力吧,当然这一期代码很简单,但是写这种趣味性的小 demo 很有乐趣~

就像大帅的:

说白了,技术就是用来实现或者创造一些东西的

有深度的技术分享✨
好玩有趣的实践吐槽✨

寒草🌳 这里都有,欢迎 👍 关注 ➕ ,这是对我最大的支持~

大家,新的一周要开开心心的哦☀️