マジック・ザ・GIFニング - 面白動画を載せたMtGのカードを生成するプログラム
カードゲーム「マジック・ザ・ギャザリング(MtG)」のデータを使ったネタプログラミングが Hacker News で話題となっていました。
Pythonで書かれ、GitHubで公開されているこのツールは、MtGのカードのタイトルに合った内容のアニメーションGIFを埋め込んで、MtGのパロディカードを生成するというプログラム。
生成したカードを定期的にツイッターにつぶやく bot 機能も持っていて、作者自身によるデモアカウント@MTGIFening では、6時間おきに一枚、新作カードが自動投稿されています。
ハウル・フロム・ビヨンド(彼方からの雄叫び)というカード名から生成されたのが、こちらのカード
https://twitter.com/MTGIFening/status/913993793052880897
なるほど、雄たけんでるように見えなくもない。
仕組み
Readme/ソースによれば、このツールの仕組みはこんな感じ。
カードデータの入手
MTG JSONで提供されている、全カードのJSONデータを取得する。そんなデータが有志によって管理されているんですね。これもGitHub上で管理更新されているようです。日本語データファイルもありました
ここからJSONファイルをダウンロードし、それを前処理のスクリプトで必要なレコードのみのcsvを作り、それを使って動いています。
ネタになるアニメーションGIFの入手
アニメーションGIF版 YouTube、みたいなサイトGIPHYにAPIが提供されていて、その中にキーワード検索APIもあるので、ランダムに選んだMtGのカードのタイトルを食わせています。タイトルによってはGIFが見つからない場合もあるみたいですが、その時は見つかるまで繰り返しています。
"MtG"で検索して最初にでてきたのがこれ。
オリジナルのカード画像に、GIFをはめ込む
MtG公式からカード画像を取得し、MoviePyライブラリで、動画の各フレームを書き換えているようです。カードの世代によって画像の位置やサイズが違うので、世代にあわせて埋め込み座標を変えたりもしています。
ツイートする
PythonでTwitterを読み書きするTwythonを使い、生成されたGIFをツイッターに投稿させています。
これらをパッケージする Docker ファイルも置いてあり、自分の環境で簡単に再現できます。ツイッターに投稿するところは動かしませんでしたが、ローカルで動かしてみてできた画像がこちら。
[video width="222" height="310" mp4="https://labs-staging.31tools.com/blog/akky/wp-content/uploads/2017/10/mtg_gif.mp4"][/video]
コードも完結で短く、データやAPIを組み合わせてうまく作ってるなと思いました。
via Hacker News