javascriptでBadApple!!

BadApple!!とは?

音楽同人サークル「Alstroemeria Records」による東方アレンジ曲"Bad Apple!! feat. nomico"のPV字コンテをPVにした作品の一つである。

【東方】Bad Apple!! PV【影絵】 (sm8628149) - ニコニコ大百科

東方の曲のPVを考えて手書きで書いた動画
www.nicovideo.jp
を実際に白黒pvにしてしまった。というお話
www.nicovideo.jp

その動画のパロディ-がたくさん生まれています。
www.nicovideo.jp

実装について

1. 動画をffmpegを使い、1秒10フレームで切り出して2190枚の画像を生成します。
f:id:matatsuna:20161019131646p:plain
2. processingで画像を読み込んで白黒を判定し、jsで読み込めるように配列形式でテキストに吐き出します。
https://gist.github.com/eb68c1d404ae33f9a47c5c4fa852bf34:tile
3. tableを準備して、その中に配列から読みだしたデータをどんどん追加する処理をsetintervalでfps10で回します。
4. 完成!!

感想

作ってて超楽しかった。重いかな?とか粗すぎて見えないかな?っておもってたのですがしっかりそこそこ見えて感動しました。
ただ、画像をURIスキームを使って入れたとしても、厳しいのは残念でした。(環境にもよるかもしれないが)

togetterをpython3系でスクレーピングしてtsvファイルを作る

togetter とは

Twitterで公開されているツイートをドラッグアンドドロップで選び、1画面にまとめて表示できる。文字の色を替えたり、時系列に並んでいるつぶやきの順序を入れ替えたりもできる。自分で投稿したツイートや他人のツイートから面白いものを抜き出す、イベントなどの実況報告を抜き出す、論争が起きた場合に各論者の立場をわかりやすくするなどの使い方がある。(wikiより)

togetter.com
簡単に言うと、Twitterまとめサイト的なものです。

Twitterを分析するためにtsvファイルに

大学の授業では発表会が多く、そのたびに実況ツイートをtogetterにまとめて頂いてます。
今回、そのデータを使って、Twitterの分析をすることになり、python3.5でスクレーピングしてtsvファイルを生成することにしました。

ソース

github.com

欠点

ただ、上記のコードだと、26番目から50番目のツイートを取得する処理をしてないので、完全なデータではありません。プルリクエストいただけたら嬉しいです。

工夫点

最後のページに来たことを調べるために、各ページの最後のツイートの時間を取得して、比較してます。headerみてリダイレクト処理かかったらででも良かったかもしれません。

久しぶりのpythonで書くのが大変でした。やっぱり慣れないな....

WolframAlpha APIを叩いてみる

以前書いた、記事をさらに掘り下げます。
matatsuna.hatenablog.com

WolframAlphaって知ってますか?

https://upload.wikimedia.org/wikipedia/en/thumb/2/2b/WolframAlpha-logo.svg/1280px-WolframAlpha-logo.svg.png
www.wolframalpha.com
wikiには以下のように書いてあります。

Wolfram Alpha(WolframAlphaともWolfram|Alphaとも表記される)はウルフラム・リサーチが開発した質問応答システム。事実についての質問に対して、構造化されたデータを使って計算し、直接答えを返すオンラインサービスである。(wiki)

わからない....

簡単に言うと、どんな計算でも計算してくれる最強のサービスです。
mathematicaを知ってる方も多いと思いますが、それを使って成り立ってます(開発者が一緒)。
よく微分積分や行列などの計算の確認に使ってます。

そんな最強の電卓をslackのbotに返答させたら超最強だ!と思って実装しました。

APIキーを取得する

Wolfram|Alpha: For Developers--API, Customizable Widgetsへ行って、Get startedをクリックし、Sign upから必要な情報を入れてアカウントを作る。
My Appsのタブに行き、右側のGet an AppIDをクリック
f:id:matatsuna:20160928174946p:plain
名前と目的を入れて Get AppID
f:id:matatsuna:20160928175140p:plain
そうすると[6桁の英数字-10桁の英数字]のAPPIDが作られます。

アクセスしてみる

サンプルクエリ通りに、アクセス!
http://products.wolframalpha.com/api/documentation.html#4

http://api.wolframalpha.com/v2/query?input=pi&appid=XXXX

ところが、APIキーを取得してすぐだと、badリクエストになる恐れがあります。その場合は、時間をおいてください。5時間ぐらい開ければ動きました。

クエリの細かいのはドキュメントみてください。

slack botpythonで書いていて、正規表現で全角はドコモのAPIに投げて、半角を今回投げる対象としました。

([ -~。-゚]+)

この正規表現を使いました。
[正規表現] 半角文字のみ取得 と 全角文字のみ取得 - 続くかな・・・

あとは、srcを上から順にとって、リンクをレスポンスとして返しました。
slackは自動で写真を展開してくれるのでいい具合になりました。
f:id:matatsuna:20160929001317p:plain
ただ、時間がたつとリンクが切れて表示されなくなってしまうのが少し、残念です。
f:id:matatsuna:20160929001322p:plain

最後に

getしてxmlを展開するだけで使えるので使い道はたくさんあるかなと思いました。
しかも、調べてみると、計算だけじゃなくて、物理や化学、統計、辞書などの超高機能なので使いたいです。
次はwidgetやってみたいな~