# Github 居然可以这么玩

> 让你的Github个人页，变成一个博客首页，同时每天自动更新信息展示

- 发布日期: 2020-07-17
- Author: Tw93
- HTML: https://tw93.fun/2020-07-17/markdown.html
- English translation: https://tw93.fun/en/2020-07-17/markdown.md
- 全部文章: https://tw93.fun/posts.md

---

> 知乎答题上面的《你在 GitHub 上看到过的最有意思的项目是什么？》[个人回复](https://www.zhihu.com/question/23498424/answer/1348093118)，有一些文章的感觉，直接放到专栏

## 那到底是可以怎么玩呢？

答案是 **让你的 Github 个人页，变成一个博客首页，同时每天自动更新信息展示**

前几天 github 出了一个新彩蛋，会自动将你仓库下的同名用户名仓库的 README 展示到你的个人页面的上方，就是如下的这个样子：

### [github.com/tw93](https://github.com/tw93) 欢迎 Follow

<img src="https://gw.alipayobjects.com/zos/k/as/WL2zER.jpg" alt="tPPfRZ" width="800" />

周末两天空闲时间折腾了下，通过 Github Actions 自动每天去跑我的开源仓库、博客、WakaTime 和豆瓣动态，然后写入到 README 里面去，可编程性被大大提高了，很是潮流！

## 怎么实现的，知识点一个一个给大伙同步

### 预备知识

- 如何让你的 Github 个人页展示 Markdown 的内容，可见 [how-to-create-a-github-profile-readme](https://www.aboutmonica.com/blog/how-to-create-a-github-profile-readme)
- 如何使用 Github Actions 自动化处理内容，可见 [https://github.com/features/actions](https://github.com/features/actions)

### 自动化获取信息巧妙方式

**以上实现详细可见[github.com/tw93/tw93](https://github.com/tw93/tw93)仓库**，有这么几种不错的实现：

#### 1、利用 Github 提供的 Api

<img src="https://gw.alipayobjects.com/zos/k/2w/W3OtdM.jpg" width="600" />

比如图片中 Product Releases 是借助 Python 中的[GraphqlClient](https://pypi.org/project/graphqlclient/) 去获取 [Github Graphql Api](https://developer.github.com/v4/) 方式实现，先取到当前用户下所有的仓库字段信息，然后通过字符串拼接的方式凑成你需要的格式即可

### 2、利用网站的 RSS 地址很方便

<img src="https://cdn.tw93.fun/blog/upic/DqjHVz.jpg" width="600" />

比如说 Recent Blog 以及 Funny Soul 这两块，博客信息利用 [feed.xml](https://tw93.github.io/feed.xml) 可以快速获取

豆瓣的动态信息当时有想过去用 python 爬对应的信息，但是实现下来会比较蹩脚，登录态需要隔一段时间去维护一下，恰好在处理个人页信息时候看到了如下 [feed rss](https://www.douban.com/feed/people/username/interests)，半小时就把本来一天的事情给做了；

Rss 信息处理整体可以通过 [feedparser](https://pythonhosted.org/feedparser/) 将对应的 Rss 获取到内容数组，然后再进行拼接即可

### 3、利用自动化的工具提供的 API

<img src="https://cdn.tw93.fun/blog/upic/lfrh69.jpg" width="600" />

比如上文中的 [Weekly Development Breakdown](https://gist.github.com/tw93/7854aac61f991ef4e7ae7b8440e4fdc6) 这一块，超级推荐大家使用 [wakatime](http://link.zhihu.com/?target=https%253A//wakatime.com/) 这个工具来统计你的代码时间，具体使用可以 Google，此处不详细；

如何画如下这个图，可以参考 [tw93/waka-box](https://github.com/tw93/waka-box) 里面的代码，利用 [wakatime-client](https://github.com/jaebradley/wakatime-client) 取到信息，然后也是进行字符串拼接处理即可，由于是之前 fork 更改，最终会生成一个 [gist](https://gist.github.com/tw93/7854aac61f991ef4e7ae7b8440e4fdc6)

最后利用 [httpx](https://www.python-httpx.org/) 获取到对应 raw 的文本内容，然后通过到 Markdown 代码语法插入即可

## 更多思路

结合 Github Profile Readme 和 Actions 能力 还可以做更多有趣的事情，比如可以将每天需要看到文章自动生成到首页去，这样就不需要去找了，可参考[github.com/simonw](https://github.com/simonw)，周末弄时有些处理借鉴了 simonw 的思路

还有一种“忽悠的有趣玩法”，可以录制一个 mp4，然后转成 gif 放到首页上去，会比较有趣，比如说[praveenscience](https://github.com/praveenscience/)这个老外

<img src="https://gw.alipayobjects.com/zos/k/it/iShot2020-07-1918.36.05.gif" width="600" />

还有一种“更 6666 的”，直接将玩游戏搬到了首页，通过发送 issue 的方式来移动棋子，然后动态更新，有很多人在玩，还有排名，很是潮流，比如说[timburgan](https://github.com/timburgan)

<img src='https://gw.alipayobjects.com/zos/k/sc/v2-1d3ac494f0a53a183e7da8f5566f9acd_hd.gif' alt='v2-1d3ac494f0a53a183e7da8f5566f9acd_hd' width="600"/>

发现了一个 awesome 专门放 github profile readme 的仓库，提交了一个 PR，里面收集了大量的案例和使用，可见[abhisheknaiidu/awesome-github-profile-readme](https://github.com/abhisheknaiidu/awesome-github-profile-readme)

## 结尾

顿时觉得国外的程序员都挺会玩的，很是潮流，值得我们学习和去交流，少加无意义的班，多写有趣的代码。
