美文网首页
使用Github Actions 动态更新Github主页

使用Github Actions 动态更新Github主页

作者: zhaoolee | 来源:发表于2021-01-23 16:22 被阅读0次

    我在Github的用户名为zhaoolee,如果我在Github中建立一个名为zhaoolee的仓库,那zhaoolee仓库中READNE.md的内容,便会展现到github主页顶部。更有趣的是,如果给仓库编写一个脚本,就可以利用Github Actions自动更新主页的内容。

    我有两个网站V2方圆方圆小站,我通过Github Actions设置了一个每隔15分钟自动运行的任务,任务内的程序会自动爬取V2方圆方圆小站的前三篇内容,并将链接更新到我的Github主页。当用免费的Github Actions为自己的博客引流时,我体会到了白嫖的快乐,获得了Github长期的优质流量。

    image-20210123160311592

    Python脚本如下

    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/

    相关文章

      网友评论

          本文标题:使用Github Actions 动态更新Github主页

          本文链接:https://www.haomeiwen.com/subject/xkduzktx.html