将棋オンライン・i将棋サロン 棋譜変換ブックマークレット

shogi_online
将棋オンライン棋譜をkif形式に変換するブックマークレットです。Kif for Windowsや激指等のソフトで開いて、棋譜の再生、解析、他形式への変換等ができるようになります。

ブックマークレットの作成方法、使用方法を後述します。
 

関連リンク

Yahoo!モバゲー将棋 棋譜変換ブックマークレット
【将棋】 棋譜変換ブックマークレットまとめ #shogi #将棋 – NAVER まとめ
 

リリース履歴

2013/03/21 v1.0 初版リリース Firefox 19にて動作確認
2013/03/23 v2.0 IE 9、Firefox 19、Chorome 25にて動作確認
手番判定追加
2013/03/24 v2.1 駒を成る手が不成となっていたのを修正。
2013/05/04 v2.2 ブックマークレットをドラッグアンドドロップで登録できるようにした。

 

ブックマークレット


以下リンクをブラウザのブックマークツールバーにドラッグ&ドロップしてお使い下さい。
(方法を後述します)

 
 

ブックマークレットの登録方法


ブラウザのブックマークツールバーにドラッグ&ドロップしてお使い下さい。
 

ブックマークレットの使用方法


shogi_online_bookmarklet_12
将棋オンラインにアクセスします。
変換したい棋譜を表示します。

そして作成したブックマークレットを押すと・・・

shogi_online_bookmarklet_13
このようにkif形式に変換して表示されます。

shogi_online_bookmarklet_14
右クリック → 全て選択 し、 右クリック → コピー を選択してクリップボードにコピーします。
(ショートカットが使える方は Ctrl + a → Ctrl + c の方が簡単ですね。)

shogi_online_bookmarklet_15
Kifu for Windows を起動します。

shogi_online_bookmarklet_16
編集 → 棋譜・局面の貼付け を選択します。
(ショートカットが使える方は Ctrl + v の方が簡単ですね。)

shogi_online_bookmarklet_17
棋譜が表示されました。
ブックマークレットの使用方法は以上となります。

ぜひ研究にお役立て下さい。。。

コメント付きソースコード(v2.2)


参考のため、ソースコードをコメント付きで掲載します。

javascript:
//開始日時
var%20day="開始日時:"+"xxxx"+"年"+"xx"+"月"+"xx"+"日<br>";
//持ち時間
var%20timelimit="持ち時間:"+document.getElementById("divInfo_Game_TimeSetting").innerHTML+"<br>";
//場所
var%20place="場所:将棋オンライン<br>";
//手合割
var%20handicap=document.getElementById("divInfo_Game_Handicap").innerHTML;
if(handicap.charAt(0)=="平"){
	handicap="平手";
}else if(handicap.charAt(0)=="香"){
	handicap="香落ち";
}else if(handicap.charAt(0)=="角"){
	handicap="角落ち";
}else if(handicap.charAt(0)=="飛"){
	handicap="飛車落ち";
}else if(handicap.charAt(0)=="2"){
	handicap="二枚落ち";
}else if(handicap.charAt(0)=="4"){
	handicap="四枚落ち";
}else if(handicap.charAt(0)=="6"){
	handicap="六枚落ち";
}else{
	handicap="不明";
}
handicap="手合割:"+handicap+"<br>";
var%20result=day+timelimit+place+handicap;

//手番判定
var%20imgTurnBoards=document.getElementsByClassName("imgTurn_Board");
var%20re=/sente/g;
var%20sente=0,gote=1;
if(imgTurnBoards[0].src.match(re)){
	sente=0;
	gote=1;
}else{
	sente=1;
	gote=0;
}

//ニックネーム
var%20nicks=document.getElementsByClassName("divNamePlate_Board_Nick");
var%20infos=document.getElementsByClassName("divNamePlate_Board_Info");
result+="先手:"+nicks[sente].innerHTML+"<br>";
result+="後手:"+nicks[gote].innerHTML+"<br>";
result+="手数----指手---------消費時間--<br>";

//棋譜
var%20moves=document.getElementsByClassName("divKifu_One");
var%20move="";
var%20i=0;
for(i%20=0;%20i%20<%20moves.length;%20i++){
	move=moves[i].innerHTML;
	move=move.replace(/\./g," ");//ピリオドを半角スペースに
	move=move.replace(/△/g,"");//△を除去
	move=move.replace(/▲/g,"");//▲を除去
	move=move.replace(/\s1/g," 1");//半角を全角に
	move=move.replace(/\s2/g," 2");
	move=move.replace(/\s3/g," 3");
	move=move.replace(/\s4/g," 4");
	move=move.replace(/\s5/g," 5");
	move=move.replace(/\s6/g," 6");
	move=move.replace(/\s7/g," 7");
	move=move.replace(/\s8/g," 8");
	move=move.replace(/\s9/g," 9");
	//駒を成る手の場合
	//将棋オンラインの棋譜は"(xxx)成"になっており、kif形式にするには"成(xxx)"とする必要がある。
	var matchResult = move.match(/\(..\)成/);
	if(matchResult){
		var locate = matchResult[0].substring(1, 3);
		move=move.substring(0, matchResult.index) + "成(" + locate + ")";
	}
	//末尾に時間を付加
	move=move.replace(/$/g,"   ( 0:00/00:00:00)<br>");
	result+=move;
}
document.body.innerHTML=result;

2件のコメント

  1. いつもお世話になってますm(_ _)m
    訪問者数とか増やしてるのはJavascriptかPHPなんでしょうか?
    例えばニコニコ静止画とかです。知っていたら教えて欲しいです!
    お願いしますm(_ _)m

  2. ロフトくん

    >あんぱんさん
    こんにちは。
    おおむね以下のような流れかと思います。

    [利用者のPC]
    ・ブラウザでニコニコ静画にアクセスするとFlashが表示される
    ・Flashがニコニコ静画のサーバに静画データや訪問者数データを要求する
     このような機能はFlashやJavaScriptで作れます
     ジャンルとしてはクライアントアプリケーションと呼ばれています。

    [ニコニコのサーバ]
    ・ニコニコ静画のサーバで動いているアプリがFlashからの要求を受け付ける
     このような機能はPHPとかJavaServletとかRuby on RailsとかASP.NET等で作られていると思います。
     ジャンルとしてはWebアプリケーション、サーバアプリケーションと呼ばれています。
    ・ニコニコ静画のサーバで動いているアプリが要求された静画データや、訪問者数をデータベースから取得
     サーバアプリケーションはデータベースと組み合わせて使うことが多いです。
    ・ニコニコ静画のサーバで動いているアプリがFlashに応答を返す
     要求を受け取ったり応答を返したりするには、HTTP通信やSocket通信が使われます。

    [利用者のPC]
    ・Flashが受け取った応答データ(静画データや訪問者数データ)を表示する

    ( なお、本ブログ記事は将棋のブックマークレトの記事なので、ちょっと話題が違いますね。。
    コメント受付ページを用意していますので、ちょうどいいブログ記事が見当たらない場合は、こちらにコメント頂けると幸いです。
    http://c-loft.com/blog/?p=1345 )

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です