集合写真を作るスクリプトを書いた※ただしロジは除く

f:id:omochin4eve:20170422222314j:plain

 

PvPerの皆さんzKillboardはチェックしてますか?当たり前だろ?分かる。というわけで皆が戦った証を残すため、集合写真を作るスクリプトを書いてみました。歴史とまではいきませんが、色々と思い出を残して逝きましょう!

 

まずは基本的なことから。zKillboardの個々のキルボードのページの右上には「そのシステムの前後1時間にあったキルとデスを列挙するページ(Related)のリンクがあります。

 

zkillboard.com

f:id:omochin4eve:20170422223632j:plain

 

例えば、このキルメールのRelatedのリンクをクリックすると

 

f:id:omochin4eve:20170422223808j:plain

 

こんな感じに適当にTeamAとTeamBに分けてくれます。これはこのページの全て or 特定の勢力やプレイヤーを抽出して並べて集合写真の画像を生成するスクリプトです。

 

This script makes a group photo of players listed in "related" · GitHub

処理系はPython 3.5.3です。適当に上記のリンクのソースコードをコピペするか右上にある"Download ZIP"からソースコードを落として解凍して適当な場所に置きます。コマンドプロンプトを開いて

 

pip install requests

pip install pillow

python zkillboard_related_image_generator.py

 

これで使い方の説明文が出ます。まずはzKillboardのAPIからRelatedのデータを引っ張ってきます。APIのURLは"ttps://zkillboard.com/api/related/~"という感じでURLにapiという文字列を足すだけです。上記のRelatedならば

 

https://zkillboard.com/api/related/30002540/201704220000/

 

上記のリンクでRelatedのJSONが返ってきます。このJSONを説明すると、まずはsummaryの中にteamAとteamBに分かれた配列が入っています。それぞれ summay->teamA->list, summay->teamB->list と辿っていきます。

 

  • characterID
  • characterName
  • corporationID
  • corporationName
  • cticker
  • allianceID
  • allianceName
  • aticker
  • shipTypeID
  • shipName

 

使いそうな項目だとここら辺が取れます。IDとNameが両方取れるので便利です。さらに便利なのはctickerとatickerでOverviewに表示される5文字の奴も取れるので大体はここだけで完結します。
 
次はスクリプトのオプションの説明です。
 
オプション名 説明(複数指定したい場合は":"で区切る)
--portrait_size 取得するポートレートのサイズ。今は32/64/128/256/512が対応している。単位はピクセル。デフォルトは512px
--aspect_ratio 生成する画像のアスペクト比。デフォルトだと16:9
--select_alliances atickerを指定したアライアンスだけ抽出する。列挙した順にソートされる
--priority_characters FCとか特定のプレイヤーだけ先頭に表示する。
--ignore_characters 表示したくないプレイヤーを並べる
--reload_json

APIJSONを毎回読み込みかのON/OFF。デフォルトはON

 

試しに全てのオプションを使ってみると

python zkillboard_related_image_generator.py https://zkillboard.com/api/related/30002540/201704220000/ --portrait_size=128 --aspect_ratio=4:3 --select_alliances=SHDWC:JMP-N "--priority_characters=Omochin:Omochin Jp:Omochin Tv" "--ignore_characters=Omochin Com:Omochin Sale:Omochin Help" --reload_json=True

 

https://zkillboard.com/api/related/30002540/201704220000/ から情報を取得し、ポートレートサイズは128。アスペクト比は4対3。SDHWC(Shadow Cartel)とJMP-N(Did he say Jump)だけを抽出して並べる。Omochin, Omochin Jp, Omochin Tvというプレイヤーを先頭に表示する。Omochin Com, Omochin Sale, Omochin Helpというプレイヤーを無視する。実行をする度にJSONを読み込む」

 

この例だとこのような内容の処理になります。とりあえず敵味方関係なくrelatedに載ってるプレイヤーを全部並べた画像を生成したい場合は

 

python zkillboard_related_image_generator.py <RELATED API URL>

 

 これで動きます。

 

さぁフレンズとの思い出を残そう!