2013/04/29

[C#]Twitterizerを使う

,
 Twitterizer(Twitterに関するライブラリ)を使ってみたお話です。と言うよりは、.NETのバージョンによるdllがホニャララな問題に苦戦した跡地です。

 動機は、某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 とかが参考になりました。

1 コメント:

  1. Easily Boost Your ClickBank Banner Commissions And Traffic

    Bannerizer makes it easy for you to promote ClickBank products using banners, simply visit Bannerizer, and grab the banner codes for your selected ClickBank products or use the Universal ClickBank Banner Rotator Tool to promote all of the available ClickBank products.

    返信削除