スポンサーサイト

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

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

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

//----------------------------------------------------------
// 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 : 秀丸 秀丸マクロ プログラム

エーコさんbotだよ

エーコさん(@e_ko_san) on Twitter
エーコbotプレビュー
Twitterではじめてのあくの非公式エーコさんbot @e_ko_san 作りましたよと。
ご意見・要望・間違いの指摘・ネタ提供など何かあればこの記事にコメントか、
Twitter内の @uten00 に連絡もらえると助かります。



■更新履歴
□2010/11/10
  TwitterAPIの仕様変更でリプライ先ステータスが指定できてなかった問題を修正。
□2010/09/22
  TL反応しなくなってたのを修正。
□2010/09/12
  フォロワーへのTL反応追加。リプライを飛ばさなくてもたまに絡んできます。
  週刊少年サンデー公式アカウント @shonen_sunday の
  はじあく関連つぶやきを ReTweet(公式RT)します、するはずです。
□2010/08/31
  OAuth認証に対応。



■機能
□30分~1時間毎にランダムでしゃべります。
□はじあく作品内の台詞や自分が勝手に追加した言いそうなワードや
  微妙な流行や定型文など作品とあまり関係ないこと言うこともあります。
□藤木先生のブログ藤木屋とWEBサンデー内の
  藤木先生のまんが家BACKSTAGEの更新を知らせます。
□リプライ反応付けました。詳しくは下記
□タイムライン反応付けました。詳しくは下記
□非公式botです。サンデーや藤木俊先生とは関係ありません。

●リプライ反応・TL反応について
先頭に「@e_ko_san 」と付けたリプライに反応して返事をします。
先頭に.のついた多段リプライやRTには反応しません。
また、特にエーコさんにリプライで話しかけなくても
エーコさんがフォローしている人には話しかけてくることもあります。
以下は反応ワードの一部。

はじめまして、おはよう、こんにちは、こんばんは、おやすみ、
キョーコ、ジロー、ポチ、アキちゃん、秋穂、ユキちゃん、雪路、乙型、
エーコ姉、エーコさん、シャドウレディ、アヤ姉、アヤさん、
ただいま、たでーま、帰宅し、戻った、戻りまし、眠い、寝る、
ありがとう、サンキュー、大丈夫?、
結婚し、嫁に、妻に、労働、働け、就職、勤労、仕事、ガリガリ君、
キルゼム、悪の組織、はじあく、はじめてのあく、単行本、コミックス


おやすみ、お休みのようにある程度似た言葉も反応します。
現在語彙があまり多くはありませんがリプライもらえれば
その言葉に気の利いた返しができるように調整もしていきますので
気が向いたら呼んでやってください。
ただし反応回数に制限があるので短時間に連続で呼んでも反応しきれません。



■関連
はじあくサイトまとめ
Togetter - Twitter はじあく発言まとめ

テーマ : はじめてのあく - ジャンル : アニメ・コミック

Tag : はじめてのあく Twitter 藤木俊

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