特定のユーザーのツイートを取得する

標準

こんにちは。今回はTwitterのRest APIにも慣れていくために、特定のユーザーのツイートを取得するプログラムを作成していきます。もちろん、このような機能もTwitterクライアントを作成するにあたって、必須の機能となるのでマスターしていきたい所です。

前提ライブラリ

今回は以下のライブラリをNuGetを使ってインポートしました。

    • System.Reactive
    • CoreTweet

上記の名前でNuGetで検索して、インポートしてください。

使う技術

今回はawait演算子という、待機中のタスクが完了するまでメソッドの実行を中止する機能を使っていきます。それに伴って、普通にプログラムすることが出来ない部分があるので、注意していきます。
await演算子の公式リファレンスはこちら

また、Dictionaryクラスでデータを扱っていきます。公式リファレンスはこちら

コード

using System;
using System.Reactive.Linq;
using CoreTweet;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace TwitterClient
{
    class Program
    {
        static void Main(string[] args)
        {
            var tokens = Tokens.Create("{API KEY}", "{API SECRET}", "{ACCESS TOKEN}", "{ACCESS TOKEN SECRET}");  //接続用トークン発行

            var parm = new Dictionary<string, object>();  //条件指定用Dictionary
            parm["count"] = 50;  //取得数
            parm["screen_name"] = "yoshi_pc_";  //取得したいユーザーID

            Task task = Task.Factory.StartNew(async () =>
            {
                var tweets = await tokens.Statuses.UserTimelineAsync(parm);

                foreach (var tweet in tweets)
                {
                    Console.WriteLine(tweet.User.Name + "(@" + tweet.User.ScreenName + ")\r\n" + tweet.Text + "\r\n(at " + tweet.CreatedAt + ")\r\n");
                    Console.WriteLine("--------------");
                }
            }).Unwrap();

            task.Wait();
        }
    }
}

今回は前述した通り、21行目にawait演算子が使われています。このような非同期メソッドを実行するためにTask.Factory.StartNew()を使って、スレッドとしてその部分を処理しています。

結果

コンパイルした後、ビルドなしで実行すると以下のようなコンソールが出てきます。
ユーザーのツイート取得
これでツイートを取得するプログラムは完成です。