Github-Readme-Stats 简明教程

发布时间 2023-07-03 22:12:45作者: sarexpine

1. 更新 Readme 文件

在你想要放置 Readme-WakaTime 的位置中放置以下注释,这将作为程序的入口

<!--START_SECTION:waka-->
<!--END_SECTION:waka-->

2. 注册 WakaTime 账户

访问 WakaTime 官方网站注册并登录,你需要找到对应的 IDE/编辑器 插件,目前(2023.7.3)官方插件支持以下软件

img

3. 在工作软件中安装 WakaTime 插件

本篇教程以 VS Code 为例

  1. 在 VS Code 主界面按下 Ctrl+Shift+P 调出命令面板,输入Install,选择Install Extension选项并回车

  2. 之后在扩展界面中输入 WakaTime 并安装该插件
    img

  1. 安装完成之后,再次按下 Ctrl+Shift+P 调出命令面板,输入 WakaTime api 并回车
    img
  1. 在浏览器中打开WakaTime的账户设置页面 Settings | Account - WakaTime,找到 Secret API Key 选项复制API
    img
  1. 复制的 API key 粘贴到 VS Code 里,按下回车完成设置
    img
  1. 在 VS Code 中写入一些代码,观察插件是否能够正常工作。同时打开 Plugin Status - WakaTime 查看插件状态(图中的New Cli Version available是正常的,也代表插件正常工作,只是提醒你插件版本需要更新)
    img

4. 配置 WakaTime API Key 和 Github 访问令牌

  1. 在你的个人仓库中点击 Settings\(\rightarrow\)Secretes and variables\(\rightarrow\)New repository secret
    img
  1. 填入 WakaTime 的 API Key,设置完成后点击 Add Secret,设置完成后如第二张图所示
    img
    img
  1. 点击你的 Github头像 调出侧边栏
    img
  1. 点击 Settings

    img
  1. 在页面中往下滑,找到 Developer Settings
    img
  1. 在 Developer Settings 页面中找到 Persional access tokens\(\rightarrow\)点击 Tokens(classic)\(\rightarrow\)点击Generate a personal access token
    img
  1. 简单填写一下相关信息,勾选权限 repo和user,并设置令牌过期时间(建议>30天),设置好后就点击 Generate Token生成访问令牌
    img
  1. 访问令牌已经生成好了,我们把它复制下来备用
    img
  1. 之后再次回到个人主页的仓库设置,还是一样,新建一个仓库密钥
    img
  1. 填入我们刚才申请的 Github 个人访问令牌,配置好后点击 Add Secret
    img

配置好后这样的,如图所示

img

配置 Actions

  1. 进入个人主页仓库,切换为英文键盘并按下英文输入状态下的句号,即可唤起Github远程VS Code 工作流
    img
  1. 如果访问成功,你会看到如下界面
    img

img

  1. 在工作目录下点击新建文件夹,建立一个 .github/workflows 结构的文件夹
    img
    img
  1. workflows 文件夹下新建一个yml文件,注意不要建错了,很多人都会建错
    img
    img
  1. 将模板写入文件里
name: Waka Readme

on:
  schedule:
    # Runs at 12am IST
    - cron: '30 18 * * *'
  workflow_dispatch:
jobs:
  update-readme:
    name: Update Readme with Metrics
    runs-on: ubuntu-latest
    steps:
      - uses: anmol098/waka-readme-stats@master
        with:
          WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
          GH_TOKEN: ${{ secrets.GH_TOKEN }}

img

  1. 之后在 Git 中提交更改,点击 Commit&Push
    img

如果出现该对话框,那么请点击Pull后再次Commit&Push
img

  1. 之后到仓库的 Actions 中查看文件的上传结果,如图所示,文件成功上传到仓库中
    img
  1. 之后我们需要在 workflow中 手动运行yml文件,如图所示。点击\(\rightarrow\)WakaReadme\(\rightarrow\)点击右侧的Run workflow\(\rightarrow\)点击Run workflow
    img
  1. 刷新浏览器,执行完毕后会出现一个蓝色的\(\checkmark\)
    img

注:如果出现如下错误,那么你需要检查README.md文件是否写入了那两行注释,错误信息如下

File "/waka-readme-stats/main.py", line 221, in <module>

[29](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:30) run(main())

[30](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:31) File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run

[31](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:32) return runner.run(main)

[32](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:33) ^^^^^^^^^^^^^^^^

[33](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:34) File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run

[34](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:35) return self._loop.run_until_complete(task)

[35](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:36) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[36](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:37) File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete

[37](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:38) return future.result()

[38](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:39) ^^^^^^^^^^^^^^^

[39](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:40) File "/waka-readme-stats/main.py", line 208, in main

[40](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:41) stats = await get_stats()

[41](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:42) ^^^^^^^^^^^^^^^^^

[42](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:43) File "/waka-readme-stats/main.py", line 163, in get_stats

[43](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:44) data = await DM.get_remote_json("waka_all")

[44](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:45) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[45](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:46) File "/waka-readme-stats/manager_download.py", line 202, in get_remote_json

[46](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:47) return await DownloadManager._get_remote_resource(resource, None)

[47](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:48) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[48](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:49) File "/waka-readme-stats/manager_download.py", line 193, in _get_remote_resource

[49](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:50) raise Exception(f"Query '{res.url}' failed to run by returning code of {res.status_code}: {res.json()}")

[50](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:51)Exception: Query '[https://wakatime.com/api/v1/users/current/all_time_since_today?api_key=***](https://wakatime.com/api/v1/users/current/all_time_since_today?api_key=***)' failed to run by returning code of 202: {'data': {'is_up_to_date': False, 'range': {'start': '2023-07-01T16:00:00Z', 'start_date': '2023-07-02', 'start_text': 'Yesterday', 'end': '2023-07-03T15:59:59Z', 'end_date': '2023-07-03', 'end_text': 'Today', 'timezone': 'Asia/Shanghai'}, 'timeout': 15, 'percent_calculated': 0, 'total_seconds': 0, 'text': '0 secs', 'decimal': '0.00', 'digital': '0:00'}, 'message': 'Calculating stats for this user. Check back later.'}

[51](https://github.com/MagicCD/MagicCD/actions/runs/5444806464/jobs/9903159455#step:3:52)sys:1: RuntimeWarning: coroutine 'AsyncClient.get' was never awaited

解决方法:在README.md文件中的合适位置写入这两行注释

<!--START_SECTION:waka-->
<!--END_SECTION:waka-->

设置完成并执行成功后,回到你的个人仓库主页,你就会发现!我去,真甜蜜炫酷啊啊啊啊啊!!!!对不起,请允许我发电一下(深情~:D)
img

至此,所有的设置我们都做完了。如果你想对这些进行扩展,那么你可以参考我翻译的文档,里面记录了各个标志字段的作用和显示与否,也欢迎专业翻译人员对文档翻译进行语言改进,非常感谢!

翻译文档地址

WakaTime Readme Stats-开源项目翻译 - sarexpine - 博客园 (cnblogs.com)