ジジのマイナーカードを救うの会

アクセスカウンタ

zoom RSS カードリストを引っこ抜いてJSONライクにする

<<   作成日時 : 2017/04/30 20:25  

ブログ気持玉 0 / トラックバック 0 / コメント 0

こんにちは。
フェスタも何回か行われ、環境も固まってきたようですね。
そしてオープンに向けての最終調整も行われているのではないでしょうか。

そんな中ですが、今回は攻略と全く関係ない記事です。
何故このタイミングなのか…。


lyceeのHPの検索機能などは非常に使いやすく(少なくとも、旧に比べれば)なっているのですが、
いかんせん解析などをHPだけのデータで行うのは難しいように思えます。
気軽に対戦用アプリなどを開発しようとしても、一々テキストを打ち込むなんてことしていたらすぐに新弾が出てしまいます。
そういうわけで、今後の誰の助けになればと思い、JSONでカード情報を引き抜けるようにします。
抽出する内容は
・カードID
・カードの種類
・レアリティ
・キャラのスペック
・特殊能力・効果
です。
カード名も入れたほうがいいかなぁ…。


大仰なプログラムなんて必要ないので、みんなのWindowsに標準搭載、Powershellで実装します。
こんなことのために開発環境なんて導入していられないですしね。

流れとしては
@lyceeHPにアクセスし、1ページ内で全カード情報を展開する。(画像データの転送はしないので、実際は軽いはず)
AHTMLの内容を見て、カード単位にHTMLの内容を配列にする。
B力技でJSON化
C出力する。

といった感じ。
特にBのコードはHPが少しでも変わると終わりなので、
次弾でエンゲージとか出たらまた作り直さないといけないかもしれませんね。

凄まじく汚いので、分かる人はきれいに整えていただければと。

----以下、ソースコード----



$card_split_str="\t<table border`=`"1`" cellpadding`=`"3`" cellspacing`=`"0`" style=`"font`-size`:13px`;margin`:10px`;`"`>\t"
$hp_str = (Invoke-RestMethod -Uri "https://lycee-tcg.com/card/?limit=100000" -Method Get) -replace "\n",''
$card_raw_data = $hp_str -split $card_split_str

foreach($card_str in $card_raw_data){

$str="{`n"
$str+="`"id`":"
$card_str.foreach{if($_ -match "cardno=LO-\d+"){}}
$str+= ($matches[0] -replace "cardno=LO-","")
$str+=",`n`"card_type`":"
$card_str.foreach{if($_ -match "<td style=`"text-align:center`" width=`"100`">\D+?</td>"){}}
$str+=($matches[0] -replace "<td style=`"text-align:center`" width=`"100`">","" -replace "</td>","")
$str+=",`n`"rarity`":"
$other = $card_str -split "<td style=`"text-align:center`">"
$str+=$other[1] -replace "</td>.*",""
$str+=",`n`"attribute`":"
$str+=$other[2] -replace "</td>.*",""
$str+=",`n`"ex`":"
$str+=$other[3] -replace "</td>.*",""
$str+=",`n`"cost`":"
$str+=$other[4] -replace "</td>.*",""
$str+=",`n`"AP`":"
$str+=$other[5] -replace "</td>.*",""
$str+=",`n`"DP`":"
$str+=$other[6] -replace "</td>.*",""
$str+=",`n`"SP`":"
$str+=$other[7] -replace "</td>.*",""
$str+=",`n`"DMG`":"
$str+=$other[8] -replace "</td>.*",""
$str+=",`n`"type`":"
$card_str.foreach{if($_ -match "<td colspan=`"2`" style=`"text-align:center`"\D+?</td>"){}}
$str+=($matches[0] -replace "<td colspan=`"2`" style=`"text-align:center`">","" -replace "</td>","")
$str+=",`n`"ability`":{`n"
$str+="`t`"base`":"
$matches[0]=""
$card_str.foreach{if($_ -match "<td colspan=`"9`" height=`"80px`" valign=`"center`">.+?</td>"){}}
$ability=($matches[0] -replace "<td colspan=`"9`" height=`"80px`" valign=`"center`">","" -replace "</td>","")
if($ability -match "<br />"){
$abilities = $ability -split "<br />"
$str+=$abilities[0]
$str+=",`n`t`"special`":"
$str+=$abilities[1]
$str+="`n`t}`n"
}
else{
$str+=",`n`t`"special`":"
$str+=$ability
$str+="`n`t}`n"
}
$str+="`n}`n"
$card_json+=$str
}
$card_json


-----ここまで------

実行結果はこんな感じ
画像


このJSON形式のデータを使えば、検索もしやすくなるかなーっと。
何より、手札情報などの表現がしやすくなるので、対戦ソフトなどの開発もできるはず。
問題は、特殊能力の日本語解析なんですけれどね。
その辺は別の機会で気力があればやるかも。
言葉の単位の分だけメソッドが必要になるので、きちんとした開発言語のほうがおそらくいいです。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
カードリストを引っこ抜いてJSONライクにする ジジのマイナーカードを救うの会/BIGLOBEウェブリブログ
文字サイズ:       閉じる