基于Butterfly主题添加友链截图
灵感来源
之前在Buttrfly群里看到有人问网站截图API、然后想起 ChenYFan 大佬有关于友链截图的项目、并且友链和Butterfly的友链页面类似,于是就写了一个爬取博客友链截图的小项目:https://github.com/zykjofficial-actions/screen_shot
具体效果:
使用技术
- Python (正则和requests)
- Github Actions(用于每周定时执行)
使用Python
获取博客的友链
和Gitee Issue的友链(如果有)
并且截图
基本介绍
本项目是基于 ChenYFan 大佬的项目修改而成
参考 baidu-url-submit-by-using-sitemap 的
Github Action
配置截图网站为:https://www.thum.io/ 、具体使用可以查看官网官方文档:https://www.thum.io/documentation/api/url
Gitee Issue友链教程
:https://www.tzki.cn/posts/e01152f6/index.html (旧版) https://www.yuque.com/kdoc/bf/friend (新版) 感谢小康大佬写的Gitee友链感谢大神: CC康纳百川 大神的图片压缩教程:博客图片的 webp 之路 、使得图片体积更小
访问我的 友链 查看效果
简单原理
curl 命令下载图片
:
图片大小比较小
1
curl https://image.thum.io/get/width/400/crop/800/allowJPG/wait/20/noanimate/https://<YourDomain>/ -o <YourDoamin>.jpg
图片大小比较大
1
curl https://image.thum.io/get/width/1024/crop/768/https://<YourDomain>/ -o <YourDoamin>.jpg
可以在https://cdn.jsdelivr.net/gh/zykjofficial-actions/screen_shot@gh-pages/ 查看友链图片 可能不适配pjax
使用
- fork https://github.com/zykjofficial-actions/screen_shot
在 https://github.com/settings/tokens ,(默认存在一个TOKEN、可以不需要创建)Generate new token
、名字随便填、勾选repo
、再点击Generate token
复制好token、在这个仓库Settings > Secrets > new New secret
、Name 中填写TOKEN
,Value
为生成的token。(放入 Secrets 中能防止 token 泄露)
编辑 screen_shot.py
1 | if __name__ == '__main__': |
- 将
getLinkFriends
函数里的内容替换成你自己的友链页面 - 将
getGiteeFriends
函数里替换成gitee用户名
、ISSUE仓库
、如果你不使用Gitee Issue友链
、请将这一行用#
注释 - 如果你使用的是其他截图网站API、
downloadFriends
第一个参数为截图网站API、格式类似https://image.thum.io/get/width/400/crop/800/allowJPG/wait/20/noanimate/https://
、第二个参数为下载图片的后缀(默认jpg
),或者类似https://s0.wordpress.com/mshots/v1/https://zykj.js.org?w=1280&h=960
的API、第一个参数为截图网站前缀https://s0.wordpress.com/mshots/v1/https://
、第二个参数为截图网站后缀?w=1280&h=960
、第三个参数为下载图片的后缀(默认jpg
)
修改完成你的配置、就可以在Action
查看是否运行成功
配置
注意:此操作只支持Butterfly主题
: 鼠标放在友链上可以显示友链截图
灵感来自: https://blog.cyfan.top/links/ 不过是通过JS来操作
如果Butterfly主题开启了pjax、建议排除以免出现问题
1 | pjax: |
针对旧版 :https://cdn.jsdelivr.net/gh/zykjofficial/zykjofficial.github.io@master/js/Friend_old.js
1 | <script src="https://cdn.jsdelivr.net/gh/zykjofficial/zykjofficial.github.io@master/js/Friend_old.js"></script> |
针对新版:https://cdn.jsdelivr.net/npm/butterfly-friend@latest/dist/friend.min.js
1 | <script src='https://cdn.jsdelivr.net/npm/butterfly-friend@latest/dist/friend.min.js'></script> |
添加Snackbar
提示(确保Butterfly主题开启Snackbar)、当显示:友链截图加载完毕
就可以查看截图了、如果显示:友链加载失败
,请刷新页面(有一定几率会加载失败)
何时运行
本项目会在At 9:00 AM, only on Sunday
运行
如果想修改运行时间 、修改screen_shot/.github/workflows/screen_shot.yml
1 | - cron: '0 0 * * 0' |
运行可能需要很长时间
问题
- 运行比较缓慢,毕竟下载图片需要一定时间
- 正则表达式写的太菜了、如果大佬有更好的改进、欢迎提 Issue
- 部分网站的图片可能抓取不到