❤️❤️为你统计掘金活动更文进度❤️❤️

548 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

参加了掘金的 "小知识,大挑战!"活动,精英矿工 需要 发布 32 篇合格文章,且更文天数 ≥ 14 天。如果我们的文章达到一定的数量,我们就不好去统计参与当前活动的进度,发布几篇文章?更新了几天?再也不用担心参与进度问题啦😜😜

why

为了让我们更加的清晰的知道自己已经发布了多少片文章,更新的天数。通过一个脚本代码去快速的分析出来结果,对自己参加活动的进度有个清晰的认识,再也不用一个个的去翻页统计了。

完整代码

/**
 * @param {string} user_id 从页面 Network 的 Request Payload 中获取
 * @param {string} aid 从页面 Network 的 Query String Parameters 中获取
 * @param {string} uuid 从页面 Network 的 Query String Parameters 中获取
 * @return {*}
 */
function spider({ user_id, aid, uuid }) {
  // 入参 cursor 代表分页的数据 [0, 10, 20]
  const cursors = ['0', '10', '20'];

  const payload = { user_id: user_id, sort_type: 2, cursor: '0' };
  const url =
    `https://api.juejin.cn/content_api/v1/article/query_list?aid=${aid}&uuid=${uuid}`;

  // 获取用户的cookie
  const cookie = document.cookie;
  // 活动开始时间
  const startDate = new Date('2021-09-24').getTime();
  // 截止目前的文章数量
  let counts = 0;
  // 文章创建时间
  let createDate = [];

  const maxCounts = 32;
  const maxDays = 14;

  const getData = async (cursor) => {
    // 获取文章数据
    const { data, err_no, has_more } = await fetch(url, {
      method: 'POST',
      body: JSON.stringify({ ...payload, cursor: cursor }),
      headers: { cookie: cookie, 'content-type': 'application/json' },
      credentials: 'include',
    }).then((res) => res.json()).catch(e => {
      console.log('error', e)
    });

    // console.log(data);
    data.forEach((element) => {
      // 获取文章创建时间 ctime 为 10 位长度的时间戳,需要转为 13位
      const ctime = element.article_info.ctime * 1000;
      // const title = element.article_info.title;
      // 判断是是否是开始时间之后的
      if (ctime > startDate) {
        counts++;
        const ctimeTemp = new Date(ctime);
        const time = `${ctimeTemp.getFullYear()}-${
          ctimeTemp.getMonth() + 1
        }-${ctimeTemp.getDate()}`;
        createDate.push(time);
      }
    });
  };
  // 获取分页数据
  Promise.all(cursors.map((ele) => getData(ele))).then(() => {
    console.log(
      '🏅🏅精英矿工奖:',
      `发布 ${maxCounts} 篇合格文章,且更文天数 ≥ ${maxDays} 天`
    );
    console.log(
      `🚀🚀你已经发布 ${counts} 篇文章,且更文天数 = ${
        [...new Set(createDate)].length
      } 天`
    );
  });
}

使用

  1. 将上面代码拷贝到浏览器控制台的 console
  2. network中去获取一下用户的数据 user_id, aid, uuid 作为入参。
  3. 执行spider({user_id: '', aid: '', uuid: ''})函数

如下图:

image.png

执行结果

image.png

结语

如果这篇文章帮到了你,欢迎点赞👍和关注⭐️。

文章如有错误之处,希望在评论区指正🙏🙏。