Github-Weekly-WakaTime

今天,你摸鱼了吗?

期望

想要自己的 Github -> Overview 上出现好看的 Weekly development breakdown

预备

  • 一点点科学知识,方便进入 Github - gist 功能
  • 一点点 node 知识
  • 一点点 yml
  • 最好已使用 WakaTime

步骤

以下步骤,均为烂翻译提供,并带有部分自定义设置,具体详情请移步至官网

准备

  1. 创建一个 Github-Gist ,标题与内容可随意,成功运行后会被修改,保存 Gist-url 上一串 key,如:https://gist.github.com/matchai/6d5f84419863089a167387da62dd70816d5f84419863089a167387da62dd7081
  2. 创建带有 gist 功能 Github Token 并保存下来 Token
  3. 登入 WakaTime 页面,没有账号的,请自行创建
  4. 进入 WakaTime 配置页面,勾选 Display coding activity publiclyDisplay languages, editors, operating systems publicly
  5. 查看 WakaTime 账号 api-key,并保存好

项目设置

  1. fork 项目 - https://github.com/matchai/waka-box
  2. fork 项目下 Settings > Secrets,新增 GH_TOKENWAKATIME_API_KEY,Value 分别对应上面生成的 Github TokenWakaTime api-key
  3. 打开 .github/workflows/schedule.yml 文件,修改 GIST_ID:自己的gist - url

建议与部分自定义

Github -> Overview 上显示内容不全的问题,导致某大佬不爽,改了一把,后续本人一发不可收拾了

预备

  • clone 下自己的项目到本地
  • VScode + Run Code 插件
  • Gist-url-keyGithub TokenWakaTime-api-key三个密钥

修改 .github/workflows/schedule.yml 线上调试,与指向自己项目

name: Update gist with WakaTime stats
on:
  schedule:
    - cron: "0 0 * * *"      # 可修改 "*/10 * * * *" 每10分钟 action,方便调试
jobs:
  update-gist:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
      - name: Update gist
        uses: ZindexYG/waka-box@master  # 原 matchai/waka-box,修改成自己的
        env:
          GH_TOKEN: ${{ secrets.GH_TOKEN }}
          GIST_ID: 38913796d6d4f3f471baa354fdaf2aeb
          WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}

自定义输出格式,与调试

调试前记得 npm install

打开./index.js 文件

// line - 5 为方便调试用,不可提交入
const {
  GIST_ID: gistId = 'Gist-url-key',
  GH_TOKEN: githubToken = 'Github Token',
  WAKATIME_API_KEY: wakatimeApiKey = 'WakaTime-api-key'
} = {};
/* ... */

async function updateGist(stats) {
  /* ... */
  // line - 28
  const lines = [];
  for (let i = 0; i < Math.min(stats.data.languages.length, 5); i++) {
    const data = stats.data.languages[i];
    const { name, percent, text: time } = data;
    // 内容格式
    const line = [
      name.padEnd(11),
      time
        .replace(/hrs/g, "h")
        .replace(/mins/g, "m")
        .padEnd(9),
      generateBarChart(percent, 16),
      String(percent.toFixed(1)).padStart(5) + "%"
    ];

    lines.push(line.join(" "));
  }
  // 记得全局科学,输出内容样式 console.log(lines);
}
  • 直接点击 run code 即可调试,若不打印内容,则无内容输出
  • 各项修改完成,记得 npm run build
  • 提交记得连带 dist/index.js 一并提交

感谢

感谢阅读,基本是为了好玩,耍的一点小把戏

相关项目