koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

Twitterのタイムラインを動画にしたいと思ったのでしてみた

のだけれど、とりあえず動画なったところで「こんなもんどう考えても動画編集ツールにデータ入力してレンダリングしてもらった方がいいじゃん」と正気に返ったのでやったことを備忘して終わる。

出来た動画(の一部分)。

youtu.be

昨今の世情を反映して、IT系の勉強会はオンラインイベントが多くて、内容が後からアーカイブで公開されることも増えてきている。自分は発表へのSNSの反応を見るのが好きなので、イベントの動画に合わせてタイムラインを再生したら(イベント動画にタイムラインを合成したら)面白いのではないかなぁ。と思った次第。ゲームプレイの配信とかでSNSの発言が流れるようになっている画面構成が好きというのもある。

正気に戻ったタイミングで「それをしたければそういうソフトはじめから使った方がいいじゃん」と悟った形だ。まぁ、こういう雑なプログラム書くのは好きなので良し。

動画は.NET Frameworkのプログラムで以下のような形で作った。

  1. Twitterからハッシュタグでツイートを検索
  2. 取得したツイートから画像を作成
    • 簡易なHTMLにフォーマットしてレンダリングした
    • HTMLのレンダリングは多分ヘッドレスブラウザを使うが鉄板なのだろうけれど、他の.NETではどんな手段があるのか気になったので少し古いけれどHTML Rendererを使ってみた
    • あんまり綺麗にレンダリングされる気がしなかった(使い方が悪いだけかも?)ので、鉄板を使うのが鉄板だと思った
  3. ツイートのタイミングに合わせて画像を動画に出力
    • 昔少しWindows Media Foundationを使ったことがあったのでそれを使った(多分新しく動画編集のライブラリ覚えるの大変だし)
    • 当時はVC++で書いていたのだけれど、.NETのラッパーライブラリ(SharpDX.MediaFoundation)があったので試してみた。普通に使えて便利だった
  4. UI
    • あわよくばストアアプリに、と思ってUWPでプロジェクトを作った
    • が、そもそもWindows Media FoundationはCOMなのでUWPでは使えなかった(ユニバーサルではないので)
    • 気づいたころには半端にXAMLを書いていたのでWPFにした

綺麗にレンダリングされる気がしなかった

f:id:koudenpa:20200810200703p:plain
HtmlRenderで画像にしたもの。あまりきれいにはレンダリングされていない。

半端にXAMLを書いていたのでWPFにした

f:id:koudenpa:20200810200839p:plain
GUIが好きなのでよいのだけれど、CUIの方が物事は早いと思う。

一応リポジトリにPushはしてある。気が向いたらちょっと試してみたいことを弄るかもは知れない。

特に画像を作るのにヘッドレスブラウザは興味がある。


HTMLから画像生成を試した分を追記。