動機は、某botが凍結され新垢が作られ、ふと、そういう一斉ブロックツールとか無いかなあ、と思ったことです。
Twitterizerの使い方は簡単で、GitHubからZipをDLし、解答してできたフォルダのうち/Twitteizer2/Twitterizer2.csprojをビルド?すればobj/Debug/Twitterizer2.dllが作成されるので、それを参照に追加でとりあえずは使えました。(/Debug/Twitterizer2/Full/Twitterizer2.dllを使うべき?)
VS2012で/Twitterizer.slnを開くと、一部(Twitterizer2.Async.SilverlightとTwitterizer2.Streaming.Silverlight)が使用不可と出るので、それを使った奴は知りません…
StreamingAPIを使うためには、Twitterizer2.Streaming.dllを使う必要があります。また、Newtonsoft.Json.dllも必要です(GettingStarted.txtに書いてある)。
※2013/07/31追記 API 1.0は使えなくなりました。1.1に移行する必要があります。Twitterizerは開発が止まっているのか(GitHubよく読んでないからわからん)、有志の方による1.1に対応したdllを使う必要があります。随分古く何もない記事なんですけど、Twitterizerでググったら意外と上位に出てきてしまったので…書いておきます
Twitterizerを使うにあたって、以下のサイトが参考になりました。
[C#] TwitterizerでスクリーンネームからTwitterのIDを取得する http://bit.ly/ZKGZ6P
Twitter タイムラインの取得、投稿 (C#) | 夏研ブログ http://bit.ly/ZKH76i
Twitterizerで特定ユーザーのフォロワーを取得する|Paco's style http://amba.to/ZKHaPw
Twitterizerメモ – 非同期処理 | サツキふぁくとりー http://bit.ly/ZKHfTc
Twitterizer で UserStream を取得する。 | みむらの手記手帳 http://bit.ly/ZKHhuo
C#でtwitterizerをつかってみた2 Twitterizerを使ったMyTwitterToolsクラス[.NET][C#][twitterizer][twitterAPI] - merusaiaのゲーム開発(奮闘)日記 http://bit.ly/ZKHkX6
別にあとに残しておくほどのコードを書いてませんが、こんな感じで自分のIDなども取得出来ます。
/// <summary> /// ユーザーのScreenNameやアイコンを、ラベル1,2に表示する /// <summary> /// <param name="token" />アクセストークン private async void showUserProfile(OAuthTokens token) { var r = TwitterAccount.VerifyCredentials(token); if (r.Result == RequestResult.Success) { label1.Text = r.ResponseObject.ScreenName; label2.Text = r.ResponseObject.Name; await Task.Run(() => pictureBox1.Load(r.ResponseObject.ProfileImageLocation)); pictureBox1.Show(); } }
で、最初既に存在していたdllを使ったところ、dllのバージョンの違い?によるエラーに悩まされました。エラーが出たのはTwitterUser.Show()を呼び出した時に発生した例外で、その内容は
ファイルまたはアセンブリ 'System.Windows, Version=2.0.5.0,Culture=neutral, PublicKeyToken=7cec85d7bea7798e'、またはその依存関係の 1つが読み込めませんでした。
といったもの。ググって出てきた解決策(UACに再登録すること。参考)してもエラーは直りませんでした。
こんなエラーが出ます… |
以下は私の考えですが、Versionが2.0なのは.NET Framework2.0用?で、試しに追加参照にSystem.Windows.dllで2.0のものを追加しても、ビルド時に下のようなエラーが出てしまう。競合してる模様。
"System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" と "System.Runtime.Serialization, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e" の間の競合を解決する方法がありません。一時的に、"System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" を選択します。
で、結局Twitterizer2を自分でビルドしたらエラーは直りました。
苦戦した跡 |
こんな感じになってた |
一時期Twitterizer2ではなくTweetSharpにしようとしましたが、どうにもAPIリファレンスも見つからず、あまりにも資料を見つけられなかったので投げました。まず、OAuth認証するときにPINコード入力するようにするのが不明(TwitterDevelopmentでアプリケーションがWebなのかClientなのか指定できなくなっている?)なので…
パッケージの復元は既定で無効になっています。確認のため、Visual Studio の [オプション] ダイアログ ボックスを開き、Package Manager ノードをクリックして、[NuGet がビルド中に存在しないパッケージをダウンロードするのを許可する] チェック ボ…
というエラーが出た場合は、VS2012だと何故か[Package Manager]が無いので、手動でNuGetフォルダをコピーした記憶があります。
呟くまで、は c# - How to get the Twitter Usertimeline with Tweetsharp - Stack Overflow http://bit.ly/11rnIEe とかが参考になりました。