スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【X-Finder】ツールフォルダファイルとファイルリストファイルの変換

ツールフォルダがどういうもんかわかってきてその中でファイルパスを編集して
プレイリストに出力する、っていうのをやりたいわけです。
カスタマイズの小ネタ・・ファイルリストの書き出し - X-Finder備忘録
カスタマイズの小ネタ・・ファイルリストの読み込み - X-Finder備忘録
X-Finderでのファイルリスト⇔ツールフォルダファイルの読み書きは一応確立はしてるのだ。
でも個人的にはすっきりしない。
せっかくカスタマイズ性の高いファイラーなのに外部ツールの制限で自由度が激減してる。

たとえば、ツールフォルダに投げこんだフォルダ以下のファイルも探索してプレイリストに出力するとか
ファイルが実在するかを確認しておくとか、外部ツールになるべく頼らないとか
読み書きは対になるプログラムでやりたいとかそういうのがあるんです。
ツギハギだらけだとやれることも少なくなってしまう。
本当はX-Finder本体でファイルリストの読み書きあれば一番いいんですけどねえ。

で、まあすぐに全部解決はできないのでphpでそれっぽいの組んでおいおいどうにかしようと思いました。
内部のスクリプト機能つかえるかなーと思ったら対応してないくさいのでコマンドプロンプトから呼び出してまあなんとか動かしました。

//--------------------------------------
//txt2xf.php
// X-Finderのツールフォルダファイルを
// ファイルパスのみのリストで出力。

if( !isset($argv[1]) or !isset($argv[2]) ){
echo<<Usage:
php txt2xf.php infile outfile
EOM;
exit;
}

$str = file_get_contents($argv[1]);
if( strpos($str,"\0") !== FALSE ){ //binary
echo "binary file.\n";
exit;
}
if( preg_match('/[\\\:\*\?\<\>]/u',$str) > 0 ){ //bad character
echo "in bad character code.\n";
exit;
}
if( preg_match_all('/^"*([^\r\n\t"]+)/mi', $str,$matches) > 0 ){
$list = "[X-Finder]\nCount=".count($matches[1])."\n";
$i = 0;
foreach ($matches[1] as $path){
$basename = basename($path);
$list .=<<Name${i}=${basename}
Path${i}="${path}"
Type=5
Icon${i}=
Ext${i}=
EOM
$i++;
}
file_put_contents($argv[2],$list);
}else{
echo "list is empty.\n";
}
?>



//--------------------------------------
//xf2txt.php
// X-Finderのツールフォルダファイルを
// ファイルパスのみのリストで出力。
if( !isset($argv[1]) or !isset($argv[2]) ){
echo<<Usage:
php xf2txt.php infile outfile
EOM;
exit;
}


$str = file_get_contents($argv[1]);
if( strpos($str,"\0") !== FALSE ){ //binary
echo "binary file.\n";
exit;
}
if( preg_match_all('/^Path[0-9]+="*([^\r\n\t"]+)/mi', $str,$matches) > 0 ){
file_put_contents($argv[2],implode("\n", $matches[1])."\n");
}else{
echo "list is empty.\n";
}
?>





内部エンコードの関係でちゃんと動かないことがあるかも。
スポンサーサイト

テーマ : プログラム - ジャンル : コンピュータ

Tag : X-Finder php

コメント

コメントの投稿

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。