自动列出有更新的文章链接
条评论前言
用的Hexo博客,一直存在的问题是市面上的插件不是很多,有时候有些需求没法完成。
虽然有自动提交链接到百度的插件,但这个插件也有点鸡肋,如果你使用了百度统计,那本身就会带这个功能,这个插件也就不需要了。
现实需求
因为开通了百度熊掌号,所以有个需求:将更改或者新增的文章自动提交到百度熊掌号。
解决方案
在此之前,迷迷糊糊用了个 grep
来过滤含 index.html
的链接,以为带了这个就是在首页的文章,后来发现不是这么回事,因为一直都是那么几个链接,o(╯□╰)o。
1 | grep -r -l 'index.html' * >urllist.txt #这个思路是错误的 |
git思路
我的Hexo部署方案是自己有个VPS,然后VPS里装了git服务端和Hexo程序,MarkDown文档提交到VPS上的git仓库后,触发 post-receive
执行shell功能。
之前是在Hexo渲染完HTML文件后去处理,而Hexo每次渲染文件是全部重新生成的,时间特征不可取,所以解决思路是利用git日志,在MarkDown文件提交的时候知道哪个文档有增删改动,而且是准确的,将日志里出现的文件取出并拼接成外网链接,解决!
1 |
|
这里并未考虑删除的情况,无所谓
上面的sed
写法请根据自己的实际情况增删改
解释
1 | git diff --name-status HEAD^ >gitdiff.log |
对比当前版本和上一次提交的文件区别,并输出文本,内容一般是这样的:
1 | M hexo/source/_posts/2017-07-how-to-use-shadowsocks-andriod.md |
M
是有修改,D
是删除,A
是新增文件
1 | sed -e 's/^.*_posts\/......../http:\/\/sobaigu.com\//' -e 's/md$/html/' gitdiff.log >urls.txt |
用 sed
命令查找特征字符,并替换成我们要的链接,最后拼出来的效果便是:
1 | http://sobaigu.com/linux-shell-with-vps.html |
最后用百度要求的 curl
命令规范提交就可以了。
参考文档
本文标题:自动列出有更新的文章链接
文章作者:凹凸曼
发布时间:2018-03-02
最后更新:2018-03-02
原始链接:https://sobaigu.com/auto-list-new-posts-by-git.html
版权声明:转载请务必保留本文链接和注明内容来源,并自负版权等法律责任。