[C++] 136 FLTK : Final Cut Proのライブラリ掃除 改良版

[M1 Mac, Big Sur 11.6.8, clang 13.0.0, FLTK 1.3.8, NO IDE, C++17]

前回の続きです。

サイズ的にはあまり重要ではありませんが、Thumnail Mediaディレクトリも空にするようにしました。

これでFinal Cut Library ManagerというアプリのClean機能と同等になりました。

void FCPClean(){
    string dirPath = "/movie"; // ライブラリ保存ディレクトリ
    vector<string> paths = getFilePath(dirPath, "fcpbundle");

    int num = 1;
    for (string path:paths){
        cout << num << " " << path << endl;

        vector<string> dirs = getDirPath(path);

        int num2 = 1; 
        for (string dir:dirs){

            if (dir.find("High Quality Media") != std::string::npos){
                cout << "High Quality Mediaディレクトリ " << num2 << " " << dir << endl;

                struct stat statBuf;
                int detect = stat(dir.c_str(), &statBuf);
                if (detect == 0){
                    vector<string> dirs2 = getDirPath(dir);
                    for (string dir:dirs2){
                        cout << "削除対象dir " << dir << endl;
                        std::filesystem::remove_all(dir);
                    }
                } else {
                    cout << "ディレクトリは削除済みです" << endl;
                }
                num2 += 1;
            }
        }

        int num3 = 1; 
        for (string dir:dirs){

            if (dir.find("Thumbnail Media") != std::string::npos){
                cout << "Thumbnail Mediaディレクトリ " << num3 << " " << dir << endl;

                struct stat statBuf;
                int detect = stat(dir.c_str(), &statBuf);
                if (detect == 0){
                    vector<string> dirs2 = getDirPath(dir);
                    for (string dir:dirs2){
                        cout << "削除対象dir " << dir << endl;
                        std::filesystem::remove_all(dir);
                    }
                } else {
                    cout << "ディレクトリは削除済みです" << endl;
                }
                num3 += 1;
            }
        }
        num += 1;
    }

    output_line->insert("FCP Clean完了!\n");
}