我在Github的用户名为zhaoolee,如果我在Github中建立一个名为zhaoolee的仓库,那zhaoolee仓库中READNE.md的内容,便会展现到github主页顶部。更有趣的是,如果给仓库编写一个脚本,就可以利用Github Actions自动更新主页的内容。
我有两个网站V2方圆和方圆小站,我通过Github Actions设置了一个每隔15分钟自动运行的任务,任务内的程序会自动爬取V2方圆和方圆小站的前三篇内容,并将链接更新到我的Github主页。当用免费的Github Actions为自己的博客引流时,我体会到了白嫖的快乐,获得了Github长期的优质流量。
image-20210123160311592Python脚本如下
import feedparser
import time
import os
import re
import pytz
from datetime import datetime
def get_link_info(feed_url, num):
result = ""
feed = feedparser.parse(feed_url)
feed_entries = feed["entries"]
feed_entries_length = len(feed_entries)
all_number = 0;
if(num > feed_entries_length):
all_number = feed_entries_length
else:
all_number = num
for entrie in feed_entries[0: all_number]:
title = entrie["title"]
link = entrie["link"]
result = result + "\n" + "[" + title + "](" + link + ")" + "\n"
return result
def main():
v2fy_info = get_link_info("https://v2fy.com/feed/", 3)
fangyuanxiaozhan_info = get_link_info("https://fangyuanxiaozhan.com/feed/", 3)
insert_info = v2fy_info + fangyuanxiaozhan_info
# 替换 ---start--- 到 ---end--- 之间的内容
# pytz.timezone('Asia/Shanghai')).strftime('%Y年%m月%d日%H时M分')
fmt = '%Y-%m-%d %H:%M:%S %Z%z'
insert_info = "---start---\n\n## 最近更新文章(" + "更新时间:"+ datetime.fromtimestamp(int(time.time()),pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') + " | 通过Github Actions自动更新)" +"\n" + insert_info + "\n---end---"
# 获取README.md内容
with open (os.path.join(os.getcwd(), "README.md"), 'r', encoding='utf-8') as f:
readme_md_content = f.read()
new_readme_md_content = re.sub(r'---start---(.|\n)*---end---', insert_info, readme_md_content)
with open (os.path.join(os.getcwd(), "README.md"), 'w', encoding='utf-8') as f:
f.write(new_readme_md_content)
main()
以上代码以及Github Action配置文件永久开源地址
https://github.com/zhaoolee/zhaoolee
Github Actions脚本位置:
https://raw.githubusercontent.com/zhaoolee/zhaoolee/main/.github/workflows/main.yml
如果大家都善用Github自定义主页,互联网会更开放
长期来看,Github在搜索引擎中的权重很高,以上方法直接为搜索引擎提供最新的内容资源,如果推广开来,会让互联网更开放,而不是内容平台各自跑马圈地,割裂互联网。虽然真正开放的互联网很难达成,但我还是想,留给后来者一个尽可能开放的,资源知识一触及达的互联网。
Github Actions玩法是丰富多彩的,道路也是曲折渐进的,关于定时任务,阮一峰大佬,搞了一个定时往自己邮箱发天气预报的功能; 以前有一个表特日报的服务,订阅后,每日都能收到ptt网站最新的好看妹子图片, 我们也可以把发天气预报搞成公共服务,需要的人只需在仓库issues下留下自己的邮箱,程序会定时获取issues内的邮箱,然后群发,这样大家都能享受天气预报的邮件服务。
Gihub Actions的不足
Github Actions 也还有一些小bug,如果你设置每隔15分钟运行一次,可能会偶尔漏掉几次任务,目前比较好的解决方案是,把频次改成每2小时发一次,基本可以避免漏发(Github Actions应该是资源不足造成的,微软有的是银子,多氪金就能修复)
本文永久更新地址:
https://fangyuanxiaozhan.com/p/2020-01-23-15-github-actions-blog/
网友评论