C#でTwitterアプリを作る 第4回 その他のAPIの使い方
第3回ではStreamingAPIの使い方について紹介しました。
今回はその他のよく使うAPIの使い方をまとめて紹介します。
なおソースコード中に登場するtokens
とstatus
は前回までに紹介したTokens
とStatus
です。
Statuses系
- ツイートの取得
- お気に入りへの追加
- お気に入りからの削除
- リツイートする
- ツイートを削除する
/* * Status */ //Show Status showedStatus = tokens.Statuses.Show(id => status.ID); //Favorite Status favoritedStatus = tokens.Favorites.Create(id => status.ID); //Unfavorite Status unfavoritedStatus = tokens.Favorites.Destroy(id => status.ID); //Retweet Status retweetedStatus = tokens.Statuses.Retweet(id => status.ID); //Destroy Status destroyedStatus = tokens.Statuses.Destroy(id => status.ID);
Users系
- ユーザーの取得
- ユーザーの取得(複数)
- ユーザーの検索
User user = status.User; /* * User */ //Show User showedUser = tokens.Users.Show(id => user.ID); //Lookup by screen_name IEnumerable<User> lookedupUsers = tokens.Users.Lookup(screen_name => string.Join(",", new[] { "laco0416", "la0c" })); //Search IEnumerable<User> matchedUsers = tokens.Users.Search(q => "らこ");
Friendship系
- フォローする ( user_idで / screen_nameで )
- フォロー解除する
- ブロックする
- ブロック解除する
- スパム報告する
/* * Friendship */ //Follow User followedUser1 = tokens.Friendships.Create(user_id => user.ID); User followedUser2 = tokens.Friendships.Create(screen_name => user.ScreenName); //Unfollow User unfollowedUser = tokens.Friendships.Destroy(user_id => user.ID); //Block User blockedUser = tokens.Blocks.Create(user_id => user.ID); //Unblock User unblockedUser = tokens.Blocks.Destroy(user_id => user.ID); //R4S User reportedUser = tokens.Users.ReportSpam(user_id => user.ID);
Friend/Follower系
- フォローしているユーザーのID一覧 (
Cursored<long>
を使う方法 ) - フォローしているユーザーのID一覧 (
IEnumerable<long>
を使う方法 - フォローされているユーザーのID一覧
/* * Friends and Followers */ //Friend IDs (use Cursor<T>) Cursored<long> friendIDs = tokens.Friends.IDs(user_id => tokens.UserID); friendIDs = tokens.Friends.IDs(user_id => tokens.UserID, cursor => friendIDs.NextCursor); //next page //Friend IDs (use IE<T>) IEnumerable<long> eFriendIDs = tokens.Friends.EnumerateIDs(EnumerateMode.Next, user_id => tokens.UserID); //Follower IDs IEnumerable<long> eFollowerIDs = tokens.Followers.EnumerateIDs(EnumerateMode.Next, user_id => tokens.UserID);
CoreTweetにはCursoredという型があります。フォロー一覧やフォロワー一覧などの一回のリクエストですべてを返しきれないAPIについては、TwitterのAPI側から次のリクエストを送る際に載せるパラメータnext_cursor
を受け取ることができます。
Cursored<T>
は次のリクエスト時にCursored<T>#NextCorsor
をcursor
パラメータとして与えることで連続したデータを取得することが可能です。
しかし、CoreTweetではそのような面倒な方法を取らずとも、IEnumerable<T>
で連続したデータをすべて取得することができます。それがEnumerate***系のメソッドです。
このメソッドは、第1引数でCursorのたどり方(次へ/前へ)を与えます。第2引数はパラメータを与えます。
1回目のリクエストで帰ってきたデータが全て列挙され、IE<T>
の終端に到達すると、内部のEnumeratorが内部で次のCursored<T>
を取得し、あたかもすべてのデータが一度で帰ってきているかのように振る舞うようになっています。
これがCoreTweetの強力なLINQ連携機能です。ぜひ使いましょう。
Search系
- ツイートの検索
/* * Search */ IEnumerable<Status> searchedStatus = tokens.Search.Tweets(q => "\"らこらこ\"");
以上の他にもほとんどすべてのAPIがCoreTweetには実装されています。(一部未実装のAPIがありますが現在開発中です)
基本的にTwitter公式のAPIドキュメントのパラメータに沿って引数を渡せばすべて動作しますので、CoreTweet独特の規則などに縛られることはありません。
ネタが尽きたので、CoreTweet紹介シリーズは今回は一旦終わりとします。みなさんもCoreTweet使ってみてください。
きっと今よりもっとC#とLINQが好きになります。