当前位置:   article > 正文

GitHub Actions 定时运行代码:每天定时百度链接推送

github如何让代码每天运行

博客上线已经有些日子了,却发现百度迟迟没有收录我的博客页面,在百度推送工具当中除了有自动推送的代码嵌入网站之外,还有一个实时的主动推送更高效。

最近刚好了解到GitHub Actions的定时运行代码功能,可以用它来每天自动运行命令生成所有博客链接并进行一次性推送给百度。

GitHub Actions 是一个 CI/CD(持续集成/持续部署)工具,但也可用作代码运行环境。功能非常强大,能够玩出许多花样。

链接主动推送在百度站长中有介绍,如图。

主动提交

具体使用方法就是创建一个文件urls.txt,文件内每行一条链接的格式写入提交的多个链接,如图。

urls.txt

运行命令

curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=xugaoyi.com&token=T5PEAzhG*****"

上面命令的地址和参数由百度站长提供。运行完命令会返回推送结果,不出意外的话就会把urls.txt内的所有链接一次性推送给百度。

这个方法虽然比嵌入网站头部的自动推送更高效,但是也有它的麻烦之处,就是得自己填入链接到urls.txt文件,然后手动运行命令。

没关系,技术的本质就是让人"偷懒"的。于是,我写了一个nodejs工具,用于把所有的博客页面链接生成到urls.txt

  1. // baiduPush.js
  2. /**
  3. * 生成百度链接推送文件
  4. */
  5. const fs = require('fs');
  6. const path = require('path');
  7. const logger = require('tracer').colorConsole();
  8. const matter = require('gray-matter'); // FrontMatter解析器 https://github.com/jonschlinkert/gray-matter
  9. const readFileList = require('./modules/readFileList');
  10. const urlsRoot = path.join(__dirname, '..', 'urls.txt'); // 百度链接推送文件
  11. const DOMAIN = process.argv.splice(2)[0]; // 获取命令行传入的参数
  12. if (!DOMAIN) {
  13. logger.error('请在运行此文件时指定一个你要进行百度推送的域名参数,例:node utils/baiduPush.js https://xugaoyi.com')
  14. return
  15. }
  16. main();
  17. function main() {
  18. fs.writeFileSync(urlsRoot, DOMAIN)
  19. const files = readFileList(); // 读取所有md文件数据
  20. files.forEach( file => {
  21. const { data } = matter(fs.readFileSync(file.filePath, 'utf8'));
  22. if (data.permalink) {
  23. const link = `\r\n${DOMAIN}${data.permalink}/`;
  24. console.log(link)
  25. fs.appendFileSync(urlsRoot, link);
  26. }
  27. })
  28. }

上面代码仅是针对我个人的博客生成链接到urls.txt文件。更多代码在 这里 (opens new window)

运行如下命令就可以生产一个包含博客所有链接的urls.txt文件:

node utils/baiduPush.js https://xugaoyi.com

哈哈,第一个麻烦解决了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/185981
推荐阅读
相关标签