Adobe Premiere CS5編 使用されている画像などの項目のレポートを出力する(2)

今回もAdobe Premiere CS5でレポートを出力するネタです。前回のスクリプトではビン(フォルダ)内にある項目が出力できませんした。Premiereは無理に参照しようとすると、すぐにエラーで停止してしまうような感じなので、対象となる項目がフッテージ(素材)かフォルダかを調べてから実行しなければいけません。ここらへんはAdobe AfterEffectsと似ています。プロパティ名も、似ているので推測しつつ作ってみました。
以下のスクリプトを実行すると全てのフッテージ、ビンのパスをテキストファイルとして出力します。


// プロジェクト内の項目情報を出力する(再帰)
(function(){
var savefile = File.saveDialog("保存するレポートファイル名を入れて下さい!");
if (!savefile) return;
if (!savefile.open("w")){
alert("レポートファイルを保存できません");
return;
}
savefile.writeln(app.project.name); // プロジェクト名
savefile.writeln(app.project.path); // プロジェクトが保存されているパス
var itemList = app.project.rootItem.children;
getName(itemList);
// getName
function getName(root){
for(var i=0; i<root.numItems; i++){
savefile.writeln(root[i].treePath);
if(root[i].type == 2){ // ビン(フォルダ)の場合に再帰
getName(root[i].children);
}
}
}
})();

より見やすくインデントを付けて出力したい場合には以下のスクリプトを使ってください。

// プロジェクト内の項目情報を出力する(再帰)
(function(){
var savefile = File.saveDialog("保存するレポートファイル名を入れて下さい!");
if (!savefile) return;
if (!savefile.open("w")){
alert("レポートファイルを保存できません");
return;
}
savefile.writeln(app.project.name); // プロジェクト名
savefile.writeln(app.project.path); // プロジェクトが保存されているパス
var itemList = app.project.rootItem.children;
var nest = -1;
getName(itemList);
// getName
function getName(root){
nest++;
for(var j=0,indent = ""; j<nest; j++){ indent = indent + " "; }
for(var i=0; i<root.numItems; i++){
savefile.writeln(indent+root[i].name);
if(root[i].type == 2){ // ビン(フォルダ)の場合に再帰
getName(root[i].children);
}
}
}
})();

Premere CS5でスクリプトを作る人がいるかどうか謎ですが、参考情報としては以下のようになっています。

・プレミアのスタックの深さは227〜272あたりまで(状況により変化)
・シーケンスや映像などの素材(フッテージ)のタイプ番号は1
・ビン(フォルダ)のtype番号は2
・プロジェクトルートのtype番号は3

[サンプルをダウンロード]