pic.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. var fs = require('fs');
  2. var request = require("request");
  3. var path = require('path');
  4. var src = "https://miscrofile.oss-cn-hangzhou.aliyuncs.com/root/question/data_structure2020/2020数据结构(第2章)/image3.png";
  5. content=fs.readFileSync("output.json", "utf8");
  6. list1 = content.match(/https:\/\/miscrofile.oss-cn-hangzhou.aliyuncs.com\/([^.]+)\.([a-zA-Z0-9]+)/g);
  7. list2 = content.match(/https:\/\/miscrofile.oss-cn-hangzhou.aliyuncs.com/g);
  8. writeFile(list1,0,null)
  9. function writeFile(uriList,num){
  10. let uri=uriList[num];
  11. let pathString=uri.replace("https://miscrofile.oss-cn-hangzhou.aliyuncs.com/","");
  12. dir=pathString.replace(/([^\/]+)\.([a-zA-Z0-9]+)/,"");
  13. if(dir.charAt(dir.length-1)==="/"){
  14. dir=dir.slice(0,dir.length-1)
  15. }
  16. mkdirsSync(dir);
  17. if(fs.existsSync(pathString)){
  18. // console.log("N:"+num+" 已经存在");
  19. num++;
  20. if(num<uriList.length){
  21. writeFile(uriList,num);
  22. }
  23. return;
  24. }
  25. let writeStream = fs.createWriteStream(pathString);
  26. let option={
  27. url:encodeURI(uri),
  28. headers: {
  29. "Referer": "http://neep.learncoder.com/content/practice/practice?id=116&name=%E7%BD%91%E7%BB%9C%E5%B1%82",
  30. "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
  31. },
  32. }
  33. let readStream = request(option)
  34. readStream.pipe(writeStream);
  35. readStream.on('end', function() {
  36. // console.log('文件下载成功');
  37. });
  38. readStream.on('error', function(err) {
  39. console.log("N:"+num+" 失败 "+err);
  40. num++;
  41. if(num<uriList.length){
  42. writeFile(uriList,num);
  43. }
  44. })
  45. writeStream.on("finish", function() {
  46. console.log("N:"+num+" 成功 "+uri);
  47. writeStream.end();
  48. num++;
  49. if(num<uriList.length){
  50. writeFile(uriList,num);
  51. }
  52. });
  53. }
  54. // let writeStream = fs.createWriteStream('image.png');
  55. // let readStream = request(option)
  56. // readStream.pipe(writeStream);
  57. // readStream.on('end', function() {
  58. // console.log('文件下载成功');
  59. // });
  60. // readStream.on('error', function(err) {
  61. // console.log("错误信息:" + err)
  62. // })
  63. // writeStream.on("finish", function() {
  64. // console.log("文件写入成功");
  65. // writeStream.end();
  66. // });
  67. function mkdirsSync(dirname) {
  68. if (fs.existsSync(dirname)) {
  69. return true;
  70. } else {
  71. if (mkdirsSync(path.dirname(dirname))) {
  72. fs.mkdirSync(dirname);
  73. return true;
  74. }
  75. }
  76. }