Twitter BOT の作成 第2回 — ツイート コンソールアプリの作成
今回でプログラムからツイートできます。
先日から運用している WordPress の RSS から記事を取得してツイートする BOT を作ります。
- Visual Basic コンソールアプリ(LinqToTwitter 利用)
- Microsoft Azure スケジューラによるジョブの実行
というニッチな内容です。無償の Visual Studio Express 2013 for Desktop で作れます。Azure は……。
WordPress のプラグインや Web サービスなどで良いものが見つからなかったので、手短に作ってみました。
目次
- BOT 用 Twitter アプリの作成
- ツイート コンソールアプリの作成(今回)
- WordPress RSS から投稿のツイート
- Azure スケジューラによるジョブの実行
ツイート コンソールアプリの作成
とりあえずツイートするだけのアプリを作ります。
Visual Studio でコンソールアプリのプロジェクトを新規作成します。C# の人は読み替えてください。
LinqToTwitter の参照
オープンソースのライブラリ LinqToTwitter を利用します。
NuGet から LinqToTwitter をインストールします(メニュー[プロジェクト]から[NuGet パッケージの管理]からインストール)。
インストールすると、依存関係の下記ライブラリの参照も追加されます。
- Microsoft.Bcl
- Microsoft.Bcl.Compression
- Microsoft.Net.Http
App.config の編集
自分専用なので API key などをコードに直接書いてもいいんですが、複数の BOT 運用なども考えて、App.config に設定を書くことにします。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<configuration> | |
.. 省略 .. | |
<appSettings> | |
<add key="ConsumerKey" value="** API key **"/> | |
<add key="ConsumerSecret" value="** API secret **"/> | |
<add key="AccessToken" value="** Access token **"/> | |
<add key="AccessTokenSecret" value="** Access token secret **"/> | |
</appSettings> | |
</configuration> |
ここに Twitter アプリ設定の値を入れます。この情報は配布や公開してはダメです。
Twitter 認証
モジュールファイルを編集します。手動で下記の参照もプロジェクトに追加してください。
- System.Runtime
- System.Configuration
API key などを使い LinwToTwitter の SingleUserAuthorizer オブジェクト返す関数を Module 内に作ります。Twitter の認証に使うオブジェクトです。App.config の設定を読み取って作ります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
' Imports LinqToTwitter を追加しておく | |
' Twitter 認証に使うオブジェクトを返す | |
Private Function CreateSingleUserAuthorizer() As SingleUserAuthorizer | |
Dim s = System.Configuration.ConfigurationManager.AppSettings | |
Dim auth = New SingleUserAuthorizer With { | |
.CredentialStore = New SingleUserInMemoryCredentialStore With | |
{ | |
.ConsumerKey = s("ConsumerKey"), | |
.ConsumerSecret = s("ConsumerSecret"), | |
.AccessToken = s("AccessToken"), | |
.AccessTokenSecret = s("AccessTokenSecret") | |
} | |
} | |
Return auth | |
End Function |
ツイートする
とりあえずツイートしてみます。ミニマムな感じだとこんな感じです。非同期メソッドのため Sub Main 内で記述するとこうなります。
SingleUserAuthorizer オブジェクトの認証メソッドを呼んで認証を行い、ツイート用のオブジェクトを生成してツイートします。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sub Main() | |
Dim t = Task.Factory.StartNew( | |
Async Function() | |
Dim auth = CreateSingleUserAuthorizer() | |
Await auth.AuthorizeAsync | |
Using ctx = New TwitterContext(auth) | |
Await ctx.TweetAsync("こんにちは") | |
End Using | |
End Function).Unwrap | |
t.Wait() | |
End Sub |
できました。
こんにちは
— JZ5 (@jz5) July 2, 2014
第3回 へ。