スポンサーサイト

上記の広告は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

よさげなレシピ集サイト

ぐるなびみたいな不特定多数によるレシピ投稿サイトも悪くはないのだけど
こういうプロがしっかり正しい手順と分量で解説してくれてるサイトも貴重ね。
正しい分量と手順を知った上でのアレンジと知らずのアレンジは別格だし。

白ごはん.com : おもてなしから基本まで いちばん丁寧な和食レシピサイト

[料理レシピ] All About|料理の専門家が秘伝のレシピをご紹介

レシピ大百科 【AJINOMOTO Park】 味の素の料理・レシピサイト

レシピ ホームクッキング | キッコーマン ホームページ

検索すると大抵、トップにぐるなびなどのレシピがずらっと並ぶけどその後のページにあるレシピもいいものあるよって話。

テーマ : レシピ - ジャンル : グルメ

Tag : レシピ 料理 ブックマーク

秀丸マクロで表計算風の行ソートとか作ってた。

コードいじってると「こういうの欲しいなー」と思ってスクリプトとかマクロ組むのは常なわけですが
手順を楽にするために組んだはずのマクロに時間とられてしまう逆転現象ってありますよね。ありました。

//----------------------------------------------------------
// LineSortSSlike.mac
// 表計算風の行ソート ver.0.01 (2015/10/06)
// by uten_dev
//
// タブ区切りの同じ列の文字列同士を比較する行ソート。
// $delimiter の値で区切りの変更可能。
//----------------------------------------------------------
$macro_name = "表計算風の行ソート";

// 区切り文字列
$delimiter = "\t";
$delimiter_name = "タブ文字";


//--------------------------------------
//参照するセルを指定
#num = val( input($delimiter_name + "で区切られた文字列の何列目を比較するか指定してください。先頭は 1 です。", "1" ) );
if( #num == 0 ){
message "入力は数値で指定してください。";
exit;
}
//--------------------------------------


//--------------------------------------
// 範囲選択から行を配列 $lines に格納と
// 行数を #linemax に格納まで。
if(selecting == no){ // 範囲選択中ではない場合、範囲選択開始
inputpos "<" + $macro_name + ">開始位置を指定してください。";
beginsel;
inputpos "<" + $macro_name + ">終了位置を指定してください。";
}
cut; // 選択範囲切り取り
beginclipboardread; // クリップボード参照開始
#i = 0;
$buffer = getclipboard;
while($buffer != ""){
if( rightstr($buffer,1) == "\n" ){ //改行の除去
$buffer = midstr($buffer,0,strlen($buffer)-1);
}
$lines[#i] = $buffer;
$buffer = getclipboard;
#i = #i + 1;
}
#linemax = #i;
//--------------------------------------


//--------------------------------------
// 行ソート
#i = 1;
while(#i < #linemax){
#j = #linemax - 1;
while(#j > 0){
call SubCell $lines[#j-1], #num;
$left = $$return;
call SubCell $lines[#j], #num;
$right = $$return;

if($left > $right){
$temp = $lines[#j-1];
$lines[#j-1] = $lines[#j];
$lines[#j] = $temp;
}
#j = #j - 1;
}
#i = #i + 1;
}
//--------------------------------------
// 出力
#i = 0;
while(#i < #linemax){
insert $lines[#i] + "\n";
#i = #i + 1;
}
//--------------------------------------
// メイン終了
endmacro;
//--------------------------------------




//--------------------------------------
// サブルーチン
//--------------------------------------
// 文字列 $$1 をタブで区切った分割文字列の ##2 番目を返す。
SubCell:
$$str = "";
##len = strlen($$1);
##pos = 0;
##cell = 1; //分割された文字列の順
while( ##pos < ##len ){
##pos2 = strstr($$1,$delimiter,##pos); //次の区切り探索
if( ##cell == ##2 ){ //cell found
if( ##pos2 == -1 ){ //末尾まで
$$str = midstr($$1,##pos);
}else{
$$str = midstr($$1,##pos,##pos2 - ##pos);
}
break;
}
if( ##pos2 == -1 ){ //cell not found
$$str = "";
break;
}
##pos = ##pos2 + 1;
##cell = ##cell + 1;
}
return $$str;

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

Tag : 秀丸 秀丸マクロ プログラム

艦これの浴衣雷ちゃんが天使。

艦これの期間限定アップデートの浴衣で大うちわを元気にあおいでる雷ちゃんが
本当に本当に本当に本当に本当に本当に本当にかわいくて天使過ぎて生きる意欲が沸きまくる。
やどかり先生本当にありがとう。
20150929雷電天使
20150929雷天使1
20150929雷天使2
20150929雷天使3
20151005雷天使

テーマ : 艦隊これくしょん~艦これ~ - ジャンル : オンラインゲーム

Tag : 艦これ

久々に1h4d参加。

201510031h4d_284
博士はこのあと寿命で死んだと思う。

テーマ : 4コマ漫画 - ジャンル : アニメ・コミック

Tag : 1h4d Twitter ワンドロ

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