Batch download pictures node

down.js

/**
 * Node Reptilia
 */
var fs = require('fs');
var request = require("request");
var cheerio = require("cheerio");
var async = require('async');

// local storage directory
var dir = './images';

// number of concurrent
was asyncNum = 5;

// download pictures
function downloadImg(photos, dir, asyncNum) {
  console.log ( "the upcoming asynchronous concurrent download pictures, the current number of concurrent is:" + asyncNum);
  async.mapLimit(photos, asyncNum, function (photo, callback) {
    var filename = photo.substr(-5, 5);
    if (filename) {
      console.log ( 'downloading' + photo);
      // default
      // fs.createWriteStream(dir + "/" + filename)
      // prevent pipe error
      request(photo)
        .on('error', function (err) {
          console.log(err);
        })
        .pipe(fs.createWriteStream(dir + "/" + filename));
      the console.log ( 'Download Complete');
      callback(null, filename);
    }
  }, function (err, result) {
    if (err) {
      console.log(err);
    } else {
      console.log(" all right ! ");
      console.log(result);
    }
  })
}

was originUrl = 'http://mhpic.mh51.com/comic/Y/%E9%A9%AD%E7%81%B5%E5%B8%88/3-6%E8%AF%9D/1.jpg ';
was Sum 10;
var photos = [];

for (var i = 1; i <= sum; i++) {
  var url = originUrl.substring(0, originUrl.length - 5);
  photos.push(url + i + '.jpg');
}

photos.forEach((url, idx) => {
  let filename = url.split ( '/') pop ();. // name of the original network has been named the local picture picture
  // request({ url }).pipe(
  // fs.createWriteStream ( `./images / $ {filename}`) .on ( 'close', err => {console.log ( 'write failure', err)})
  // )

  request.get({ uri: url, encoding: 'binary' }, function (err, res) {
    if (!err) {
      fs.writeFile(`./images/${filename}`, res.body, "binary", function (err, res) {
        if (!err) {
          //
        } else {
          console.log(err);
        }
      })
    }
  })
})

// downloadImg(photos, dir, asyncNum)

.

Guess you like

Origin www.cnblogs.com/crazycode2/p/12521607.html