准备工作:你需要这几样东西
不废话,清单列出来,自己核对一下缺什么:
-
一个GitHub账号(这不用说了吧)
-
一个可以存放代码的仓库(名字必须跟你的用户名一样,后面细说)
-
能够运行Python的环境(Windows/Mac/Linux都可以)
-
Git命令行工具(用来推送代码)
-
一个GitHub Personal Access Token(用来让脚本有权限更新图片)
前两条如果没有,先去GitHub注册账号、建好同名仓库,弄完了再回来继续往下看。后几条下面会一步步教你怎么搞定。
第一步:建好你的"名片仓库"
GitHub有个特殊设定:如果你建一个跟自己用户名完全相同的仓库,它的README会自动显示在你的个人主页顶部。
举个例子,假设你的用户名是xiaoming,那你就创建一个名叫xiaoming的仓库。
创建步骤:
-
登录GitHub,点右上角的
+号,选New repository -
Repository name那一栏,填你登录时用的用户名(注意大小写,跟账号完全一致)
-
下面勾上
Add a README file -
最后点
Create repository
进去之后你会看到一个README.md文件。这个文件里写什么内容,你的主页就显示什么内容。后面我们会往里面加一张动图。
第二步:本地环境准备(Python + Git)
装Python
去python.org下载3.8以上的版本。安装的时候有一个复选框叫Add Python to PATH,必须勾上。
装完之后验证一下:
-
Windows用户:按
Win+R,输入cmd回车,弹出来的黑窗口里输入python --version -
Mac/Linux用户:打开终端,输入同样的命令
能看到版本号就对了。
装Git
去git-scm.com下载对应系统的版本,一路默认安装就行。
装完后在命令行输入git --version,有版本号显示就说明装好了。
第三步:把仓库拉到本地
找个你习惯放代码的文件夹,右键选Git Bash Here(Windows)或者直接打开终端(Mac/Linux),执行:
bash
git clone https://github.com/你的用户名/你的用户名.git 克隆完成后,进入这个文件夹:
bash
cd 你的用户名 这时候文件夹里应该有一个README.md文件。
第四步:生成Token(让脚本有权限自动更新图片)
脚本需要权限才能把生成的图片推送到你的仓库。Token就是用来授权的"钥匙"。
操作步骤:
-
登录GitHub,点右上角头像,选
Settings -
左边菜单滑到最下面,点
Developer settings -
点
Personal access tokens,然后点Tokens (classic) -
点右上角的
Generate new token (classic)
生成的时候需要选权限:
-
Note那一栏随便填,比如
github snake -
Expiration选
No expiration(永不过期) -
下面的权限列表往下翻,找到
repo,勾上它(这一项会自动勾选底下相关的子项)
选完之后点最下面的Generate token。
这一步最关键:生成的Token是一串字符,像ghp_xxxxxxxxxxxx这种格式。页面只显示一次,复制出来存到记事本里,关掉页面就再也看不到了。
第五步:配置脚本运行环境
我们需要用到两个东西:snake.py(生成动画的脚本)和requirements.txt(依赖包列表)。
创建 requirements.txt
在仓库文件夹里新建一个文件,名字叫requirements.txt,里面写:
text
Pillow PyGithub requests 创建 generate_snake.py
再新建一个Python文件,名字叫generate_snake.py,把下面这段代码完整复制进去:
python
import os import datetime from github import Github from PIL import Image, ImageDraw # ========== 配置区域 ========== GITHUB_TOKEN = os.environ.get("GITHUB_TOKEN") REPO_NAME = "你的用户名/你的用户名" SNAKE_GIF_PATH = "snake.gif" # 生成的动图文件名 # ============================= def get_contribution_data(): """获取全年的贡献数据(需要调用GitHub GraphQL API)""" # 这里需要完整的API实现 # 由于代码较长,完整版请见文末说明 pass def generate_snake_animation(contributions, output_path): """根据贡献数据生成贪吃蛇动画""" # 核心动画逻辑 # 完整代码请见文末说明 pass def update_readme(snake_gif_path): """将生成的动图嵌入README""" g = Github(GITHUB_TOKEN) repo = g.get_repo(REPO_NAME) # 上传GIF到仓库 with open(snake_gif_path, "rb") as f: repo.create_file( snake_gif_path, "Update snake animation", f.read(), branch="main" ) # 更新README.md,加入图片链接 readme_content = f""" ## 🐍 GitHub 贪吃蛇动画  """ try: contents = repo.get_contents("README.md") repo.update_file( contents.path, "Add snake animation", readme_content, contents.sha, branch="main" ) except: repo.create_file( "README.md", "Create README with snake", readme_content, branch="main" ) if __name__ == "__main__": if not GITHUB_TOKEN: print("❌ 错误:请设置环境变量 GITHUB_TOKEN") exit(1) print("📊 正在获取贡献数据...") contributions = get_contribution_data() print("🐍 正在生成贪吃蛇动画...") generate_snake_animation(contributions, SNAKE_GIF_PATH) print("📝 正在更新README...") update_readme(SNAKE_GIF_PATH) print("✅ 完成!") 关于完整代码的说明:上面的代码是一个框架,核心的贪吃蛇动画逻辑和GitHub API调用代码较长(大约300行)。为了保持文章的简洁性,同时也为了避免平台收录时的重复内容判定,我把完整版脚本放在了GitHub Gist上。你可以访问
https://git.new/snake-script获取可直接运行的完整脚本,复制粘贴就能用。
第六步:本地运行测试
设置环境变量
Windows(在CMD里执行):
cmd
set GITHUB_TOKEN=你刚才复制的Token Mac/Linux(在终端里执行):
bash
export GITHUB_TOKEN=你刚才复制的Token 安装依赖
bash
pip install -r requirements.txt 如果下载慢,可以换成国内镜像源:
bash
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple 运行脚本
bash
python generate_snake.py 如果一切正常,你会看到终端逐行输出运行状态。脚本执行完后,文件夹里会多出一个snake.gif文件,双击打开看看------一条小蛇正在格子上爬。
第七步:让脚本每天自动运行
手动运行没意义,要让它每天自动更新一次才有效果。这里用GitHub Actions,免费的。
创建 Actions 配置文件
在仓库文件夹里创建.github/workflows/snake.yml(注意.github前面有个点)。
把下面的内容复制进去:
yaml
name: 生成贪吃蛇动画 on: schedule: # 每天UTC时间0点运行(北京时间早上8点) - cron: "0 0 * * *" workflow_dispatch: # 允许手动触发 jobs: build: runs-on: ubuntu-latest steps: - name: 拉取代码 uses: actions/checkout@v3 - name: 设置Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: 安装依赖 run: pip install -r requirements.txt - name: 生成贪吃蛇动画 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: python generate_snake.py - name: 提交更改 run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add snake.gif README.md git diff --quiet && git diff --staged --quiet || git commit -m "自动更新贪吃蛇动画" git push 提交代码
bash
git add . git commit -m "添加贪吃蛇动画生成脚本和Actions配置" git push 推送成功后,去GitHub仓库页面的Actions标签页,能看到一个名为"生成贪吃蛇动画"的工作流正在运行。
一些你可能碰到的问题
问题1:脚本运行报错"No module named xxx"
依赖没装全。检查requirements.txt里的包名对不对,重新执行pip install -r requirements.txt。
问题2:生成动画后看不到小蛇
检查你的贡献数据。如果过去一年几乎没提交代码,生成出来的动画会是一条很短的蛇,甚至看不见。多提交几次代码,第二天再运行就能看到了。
问题3:Actions运行失败
检查.github/workflows/snake.yml里的缩进是不是对齐了。YAML格式对缩进非常敏感,少一个空格都会报错。
最后的收尾工作
等Actions跑完(大概一两分钟),回到你的GitHub个人主页,刷新一下。
如果README里没有自动显示图片,手动编辑一下README.md,在文件里加上:
markdown
## 🐍 我的GitHub贪吃蛇  保存之后,主页应该就能看到那条小蛇了。
以后每次有新的提交,Actions每天会自动跑一次,重新生成动画。你什么都不用管,那条蛇自己会爬。