SyntaxHighlighter

2015年12月27日日曜日

setRenderOutput

レンダーキューでアクティブなキューの設定をする(ディレクトリも作成)

//年月日取得
function dateAcquisition(){
  //今日の日時示
  var now   = new Date();
  var year  = now.getYear();      // 年
  var month = now.getMonth() + 1; // 月
  var day   = now.getDate();      // 日
  var hour  = now.getHours();     // 時
  var min   = now.getMinutes();   // 分
  var sec   = now.getSeconds();   // 秒
  if(year < 2000) { year += 1900; }
  // 数値が1桁の場合、頭に0を付けて2桁で表示する指定
  if(month  < 10) { month = "0" + month; }
  if(day    < 10) { day   = "0" + day; }
  if(hour   < 10) { hour  = "0" + hour; }
  if(min    < 10) { min   = "0" + min; }
  if(sec    < 10) { sec   = "0" + sec; }
  return [ year , month , day , hour , min , sec ];
}
//ファイル名と拡張子とバージョン取得
function fileNameVersionExtension(AbsolutePath){
  //拡張子込ファイル名
  var filePathAry           = AbsolutePath.split("/");
  var filePathAryLength     = filePathAry.length -1;
  var fileFullName          = filePathAry[filePathAryLength];
  //ファイル名とファイルタイプ(拡張子)
  var fileNameAry           = fileFullName.split(".");
  var fileNameAryLength     = fileNameAry.length -1;
  var fileName              = fileNameAry[0];
  var fileExtension         = fileNameAry[fileNameAryLength];
  //ファイルネーム要素
  var fileNameElement       = fileName.split("_");
  var fileVersionAryLength  = fileNameElement.length -1;
  var fileVersion           = fileNameElement[fileVersionAryLength];
  return [fileFullName , fileName , fileExtension , fileNameElement , fileVersion ];
}
//コマンドラインオプション
function commandLineOption(i){
  //コンポジション名 "-comp comp_name"
  var compositonName              = app.project.renderQueue.item(i).comp.name;
  //コンポジションのフレームレート
  var compositonFrameRate         = app.project.renderQueue.item(i).comp.frameRate;
  //コンポジションのデュレーション
  var compositonDuration          = app.project.renderQueue.item(i).comp.duration * compositonFrameRate;
  //コンポジションのスタートフレーム "-s start_frame"
  var compostionStartTime         = app.project.renderQueue.item(i).comp.displayStartTime * compositonFrameRate;
  //コンポジションのエンドフレーム "-e end_frame"
  var compostionEndTime           = (compostionStartTime + compositonDuration) - 1;
  //ワークエリアのスタートフレーム "-s start_frame"
  var compostionWorkAreaStart     = app.project.renderQueue.item(i).comp.workAreaStart * compositonFrameRate;
  //ワークエリアのデュレーション
  var compositonWorkAreaDuration  = app.project.renderQueue.item(i).comp.workAreaDuration * compositonFrameRate;
  //コンポジションのエンドフレーム "-e end_frame"
  var compostionWorkAreaEndTime   = (compostionWorkAreaStart + compositonWorkAreaDuration) - 1;
  //レンダリング出力先 "-output  output_path"
  var renderPath                  = app.project.renderQueue.item(i).outputModule(1).file;
  //レンダリング出力先その2 ※Absoluteをつけないと配列にならない
  var renderAbsolutePath          = app.project.renderQueue.item(i).outputModule(1).file.absoluteURI;
  return [ compositonName , compostionStartTime , compostionEndTime , compostionWorkAreaStart , compostionWorkAreaEndTime , renderAbsolutePath ]
}
//コンプレイヤネーム
function compostionLayerName(i){
  var compositonName      = commandLineOption(i)[0];
  var compNameElement     = compositonName.split("_");
  var compNameAryLength   = compNameElement.length -1;
  var compLayerName       = compNameElement[compNameAryLength];
  return [ compLayerName ];
}
//
function makeOutputDir(i){
  var compLayerName = compostionLayerName(i)[0];
  var folder        = app.project.file.path +"/"+ "images" +"/"+ aepFileVersion  +"/"+ compLayerName;
  folderObj = new Folder(folder);
  folderObj.create();
  return [ folder ];
}
//
function setRenderOutput(i,selectChoice){
  //パディング指定部分の文字列
  var frameCountPadding           = new RegExp("%5B#{1,7}%5D","i");
  //ムービもしくはサウンドファイルの拡張子の文字列
  var movieSoundFile              = new RegExp("(aif|avi|f4v|flv|mp4|m4v|mp3|mpg|mxf|mov|wav)$","i");
  //イメージファイルの拡張子文字列
  var sequenceImageFile           = new RegExp("dpx|cin|iff|jpg|exr|png|psd|hdr|sgi|tif|tga","i");
  var curRnedSet                  = app.project.renderQueue.item(i).outputModule(1);
  var renderAbsolutePath          = app.project.renderQueue.item(i).outputModule(1).file.absoluteURI;
  var fileNeme                    = fileNameVersionExtension(renderAbsolutePath);
  var renderOutputFolder          = makeOutputDir(i)[0];
  if (selectChoice == 0) {
    if ((frameCountPadding.test(fileNeme[0]) == 1)&&(sequenceImageFile.test(fileNeme[0]) == 1)) {
      curRnedSet.file = new File(renderOutputFolder +"/"+  fileNameSetImage );
    }
    else if ((frameCountPadding.test(fileNeme[0]) == 0)&&(sequenceImageFile.test(fileNeme[0]) == 1)) {
      curRnedSet.file = new File(renderOutputFolder +"/"+  fileNameSetImage );
    }
    else if (movieSoundFile.test(fileNeme[0]) == 1) {
      curRnedSet.file = new File(renderOutputFolder +"/"+  fileNameSetMovieSound );
    }
    //
  }else if (selectChoice == 1) {
    curRnedSet.applyTemplate(outputModuleProject);
    curRnedSet.file = new File(renderOutputFolder +"/"+  fileNameSetImage );
    //
  }else if (selectChoice == 2) {
    if ((frameCountPadding.test(fileNeme[0]) == 1)&&(sequenceImageFile.test(fileNeme[0]) == 1)) {
      curRnedSet.applyTemplate(outputModuleImage);
      curRnedSet.file = new File(renderOutputFolder +"/"+  fileNameSetImage );
    }
    else if ((frameCountPadding.test(fileNeme[0]) == 0)&&(sequenceImageFile.test(fileNeme[0]) == 1)) {
      curRnedSet.applyTemplate(outputModuleImage);
      curRnedSet.file = new File(renderOutputFolder +"/"+  fileNameSetImage );
    }
    else if (movieSoundFile.test(fileNeme[0]) == 1) {
      curRnedSet.applyTemplate(outputModuleMovieSound);
      curRnedSet.file = new File(renderOutputFolder +"/"+  fileNameSetMovieSound );
    }
  }else {
  }
}
//
function inputPromptSetRenderOutput(){
  var selectChoice = prompt("0-2を入力してください\n"+
                    "0:出力モジュールは変更せず出力先を設定\n"+
                    "1:出力モジュールを一括設定して出力先を設定!\n"+
                    "2:出力モジュールを設定して出力先を設定(ファイル判別)"
                    ,"0"
                    ,"setRenderPath");
  if (selectChoice != null){
    for (i = 1 ; i <= renderQueNumberItem ; i++){
        var renderQueActiveCompostion   = app.project.renderQueue.item(i).render;
        var renderAbsolutePath          = app.project.renderQueue.item(i).outputModule(1).file.absoluteURI;
        var fileNeme                    = fileNameVersionExtension(renderAbsolutePath);
        if (renderQueActiveCompostion == 1) {
          makeOutputDir(i);
          setRenderOutput(i,selectChoice);
        }
        else if(renderQueActiveCompostion == 0) {
          //alert("レンダーキューにアクティブなアイテムがねーっす:-q")
        }
    }
    if (selectChoice <= 2) {
      alert("設定しました");
    }else {
      alert("むりっす:-p");
    }
  }else {
    alert("キャンセルされました")
  }
}

//日時
var currentDate                 = dateAcquisition()[0] +"_"+ dateAcquisition()[1] +"_"+ dateAcquisition()[2] ;
//時刻
var currentTime                 = dateAcquisition()[3] +"_"+ dateAcquisition()[4];
//カレントのAepファイルのパス "-project project_path"
var aepProjectFileAbsolutePath  = app.project.file.absoluteURI;
//カレントのAepファイルの名前
var afterEffectsFileNeme        = fileNameVersionExtension(aepProjectFileAbsolutePath);
//レンダーキューのアイテム数
var renderQueNumberItem         = app.project.renderQueue.numItems;
//カレントのAepファイルのバージョン
var aepFileVersion              = fileNameVersionExtension(aepProjectFileAbsolutePath)[4];
//出力モジュール
var outputModuleImage           = "TIFF シーケンス (アルファ付き)"   //"Photoshop"
var outputModuleMovieSound      = "ロスレス圧縮(アルファ付き)"     //"H.264"
var outputModuleProject         = "Photoshop"                    //"TIFF シーケンス (アルファ付き)"
//ファイル名
var fileNameSetImage            = "[compName]_" + aepFileVersion + "_[####].[fileExtension]";
var fileNameSetMovieSound       = "[compName]_" + aepFileVersion + ".[fileExtension]";
inputPromptSetRenderOutput();

0 件のコメント:

コメントを投稿