要望:メディアファイルの再生時間の合計をNo.08544
Hirotaroh さん 20/04/09 18:14
 
先日、VECTORシェアレジにて送金登録させていただきました

さて、改めて要望なのですが
動画や音楽などのメディアファイルを選択した場合
ステータスバーに再生時間が表示されますが
複数選択した場合、その合計を表示するようにしていただけたらと思います

よろしくお願いいたします

[ ]
RE:08544 要望:メディアファイルの再生時No.08548
秀丸担当 さん 20/04/10 11:53
 

ステータスバーに表示される再生時間などの情報は、Windowsで共通のツールチップ
用の情報で、それをステータスバーに表示しています。
秀丸ファイラーClassic自身は何が表示されるかわからないです。
ファイルの内容を読み込んで表示しているはずなので、複数ファイルで計算するとし
たら時間がかかる可能性もあると思います。

ステータスバーではないですが、詳細表示で「長さ」の列を追加して表示する方法が
あります。
詳細表示のファイル一覧上部の右クリックから「その他(C)...」で表示する列を変更
できます。
(または[表示(V)]→[カスタマイズ(C)...])
「利用できるすべてのプロパティを表示(S)>>」を出して、「メディア」の分類にあ
る「長さ」を追加します。
これは詳細表示で1つずつのファイルについて表示するだけです。

この詳細表示の列の情報を元に、ちょっと無理矢理ですが、スクリプトを使って合計
を計算する方法も考えられます。
例えば、メモ帳か秀丸エディタなどのテキストエディタで、C:\Folder\Test.jsの内
容を後述のように作成します。
ブックマークに追加して、「パス」の内容を「script:C:\Folder\Test.js」というよ
うにスクリプトを指定します。

これでブックマークを選ぶと、選択しているファイルの合計時間をメッセージボック
スで表示します。
リンクバーやツール項目バーにするとボタンにできます。

(ちなみにDateオブジェクトやら、Shell.ApplicationのExtendedPropertyやらでや
るのが正攻法なのだと思いますが、だいぶん取り扱いが面倒なので簡便にしました)


以下がスクリプト内容
-------

//秀丸ファイラーClassic用スクリプト
//機能:
// 詳細表示の「長さ」列の「00:00:00」の内容を加算してメッセージを表示します

strWScriptType = typeof( WScript );
if( strWScriptType.toLowerCase() == "object" ) {
  strMsg =
    "このスクリプトは秀丸ファイラーClassic専用です。\n" +
    "\n" +
    "「ブックマークの整理」または「ツールの整理」で「追加」して、" +
    "パスの右側の「>>」ボタンの「スクリプトの参照」より、このファ" +
    "イルを指定します。\n" +
    "(パスの先頭に「script:」と書かれたパスとして登録)"
  WScript.Echo( strMsg );
  WScript.Quit();
}

d="00:00:00";
cDuraion=0;
cNoDuraion=0;
cItem=GetItemCount();
cCol=GetColumnCount();
for(iCol=0;iCol<cCol;iCol++){
    if(GetColumnText(iCol)=="長さ")break;
}
if(iCol>=cCol){
    Message("「長さ」列がありません");
    EndMacro();
}
iItem=GetNextItem(-1,2);
if(iItem<0){
    Message("選択がありません");
    EndMacro();
}
while( iItem >= 0 ) {
    d2=GetItemText(iItem,iCol)
    if(d2!=""){
        d=AddDuration(d,d2);
        cDuraion++;
    } else {
        cNoDuraion++;
    }
    iItem=GetNextItem(iItem,2);
}
Message("長さあり項目"+cDuraion+"個/時間合計 "+d+"\n"+
        "長さなし項目"+cNoDuraion+"個");

function AddDuration(s1,s2) {
    if(s2=="")return s1;
    s=Number(s1.split(":",3)[2]);
    s+=Number(s2.split(":",3)[2]);
    m=Math.floor(s/60);
    m+=Number(s1.split(":",3)[1]);
    m+=Number(s2.split(":",3)[1]);
    h=Math.floor(m/60);
    h+=Number(s1.split(":",3)[0]);
    h+=Number(s2.split(":",3)[0]);
    return h+":"
        +("0"+(m%60)).slice(-2)+":"
        +("0"+(s%60)).slice(-2);
}

[ ]
RE:08548 要望:メディアファイルの再生時No.08550
Hirotaroh さん 20/04/10 18:29
 
>
>ステータスバーに表示される再生時間などの情報は、Windowsで共通のツールチップ
>用の情報で、それをステータスバーに表示しています。
>秀丸ファイラーClassic自身は何が表示されるかわからないです。

そうだったのですね、てっきり独自処理かと思っていました

>この詳細表示の列の情報を元に、ちょっと無理矢理ですが、スクリプトを使って合
>計を計算する方法も考えられます。

素晴らしいスクリプトをありがとうございました
当面これで行こうと思います
また、これを機にスクリプトの事も少し勉強してみようと思います

ご尽力いただきました事、感謝いたします
本当にありがとうございました

[ ]