【小工具】自動生成url中包含的文件夾目錄

半夜睡不着,忽然想起最近在抓網絡數據的時候,批量下載圖片時的文件夾問題。好比:

https://img3.doubanio.com/img/celebrity/small/32214.jpg

https://img1.doubanio.com/view/movie_poster_cover/spst/public/p2443884789.webp

而這些圖片文件的路徑有不少是不一樣的。也就是放在了不一樣的文件目錄下。我但願下載下來的圖片目錄結構基本保持不變:

img/celebrity/small/32214.jpg

只是域名部分寫成我本身的。

有了需求,就開始寫代碼。仍是用node來實現:

var fs = require("fs");
var url = require("url");
//根據傳入的url,建立出該url中的path包含的全部文件夾
//dest是目標文件夾,新生成的文件夾會放在裏面
function createDirAccordingToUrl(originurl, dest) {
    var urlobj = url.parse(originurl);
    //將path用"/"分割爲數組
    var dirs = urlobj.path.split('/');
    var dir = dest;
    //用for循環來實現
    //由於開頭和結尾不是文件夾,所以從1開始,並排除數組的最後一項,也就是文件名: xx.jpg
    for (var i = 1; i < dirs.length - 1; i++) {
    //每循環一次,就把文件夾層級往裏進一步。
        dir += "/" + dirs[i];
        //判斷是否存在,且是否爲文件夾
        if (fs.existsSync(dir) && fs.statSync(dir).isDirectory()) {
            //若是該層文件夾存在,就繼續判斷下一層
        } else {

            console.log("文件夾不存在,建立:" + dir);
            fs.mkdirSync(dir);
        }

    }
}

用法:

var URL = "http://192.168.0.110:8080/img/celebrity/medium/31577.jpg";
createDirAccordingOnUrl(URL, __dirname);

生成結果以下:

圖片描述

瞌睡終於來了。各位晚安。。。

相關文章
相關標籤/搜索