使用Node.JS批量查找替换目录下文本文件中图片地址内容


发布者 newghost  发布时间 1534425872703
关键字 JS学习  Node.JS 
最近想起来 adsense 的广告费好久没领了,就登陆了查看了一下。发现最近几个月 ourjs 的流量下降地很厉害。 然后登陆 google analytics 仔细查看,发现流量量几乎降低了一半。

然后分析里面的一些文章,发现很多图片不能显示了。

仔细研究下发现,以前用的 github page 图床被墙了,所有引用 github.io 的图片都打不开。

但是又发现,githubusercontent 的图片引用是可以用的,比如:

http://ourjs.github.io/static/2015/firefox_default.png
https://raw.githubusercontent.com/ourjs/static/gh-pages/2015/firefox_default.png


找到问题的原因,赶紧花了几分钟写了个小脚本,把里面所有的地址替换了一下。


var fs    = require('fs')
var path  = require('path')

fs.readdir('article', function(err, files) {

  files.forEach(function(file) {
    var filePath = path.join('article', file)

    fs.readFile(filePath, function(err, data) {
      if (err) {
        return
      }

      data = data.toString()

      var idx = data.indexOf('http://ourjs.github.io/static/')
      if (idx > 0) {
        data = data.replace(/http:\/\/ourjs\.github\.io\/static\//g, 'https://raw.githubusercontent.com/ourjs/static/gh-pages/')

        //尝试将替换过的文本解析一下,看看是否出错,出错会中止
        var article = JSON.parse(data)
        //不出错将替换后的文本写入文件
        fs.writeFile(filePath, data)
      }

    })
  })

})


因为 ourjs 里的文章都是放到一个目录下的,所以没有考虑子文件夹,如果有需要的话可以参考这篇文章: 

Node.JS循环递归复制文件夹目录及其子文件夹下的所有文件


补充: 发现 jiathis 分享插件也没法用了,发现这家公司可能运营不下下去了,官网也打不开,已经替换成百度分享。