4

過去2か月のユーザーのツイートを取得しようとしています。ただし、LINQ to Twitterでは、取得できるツイートの数が200に制限されています。さらに取得する方法はありますか?

Twitter APIでは、次のようなページングが可能です。

http://api.twitter.com/1/statuses/user_timeline.json?id=username8&count=200&page=2

LINQtoTwitterライブラリに類似したものは見つかりませんでした。

次のことを試しましたが、機能しません

var statusTweets = (from tweet in twitterCtx.Status
                    where tweet.Type == StatusType.User &&
                    tweet.Count == 200 &&
                    tweet.ScreenName == "username"
                    select tweet).Skip(200);
4

2 に答える 2

5

さて、私は今少し愚かだと感じています。ページングパラメータがあることがわかりました。

解決

for (int i = 0; i < 5; i++)
{ 
    var statusTweets = (from tweet in twitterCtx.Status
                        where tweet.Type == StatusType.User &&
                        tweet.Count == 200 &&
                        tweet.ScreenName == "username" &&
                        tweet.Page == i
                        select tweet)
}
于 2012-12-20T10:34:06.783 に答える
2

これは、ユーザーからすべてのツイートを取得するための完全な関数です

public static List<Status> searchUserTweet(string screenName, int maxPagination)
{
    var twitterCtx = new TwitterContext(authorizer);
    List<Status> searchResults = new List<Status>();
    int maxNumberToFind = 200;
    int pagination = 0;
    ulong lastId = 0;
    int count = 0;

    var tweets = (from tweet in twitterCtx.Status
                    where tweet.Type == StatusType.User &&
                        tweet.ScreenName == screenName &&
                        tweet.Count == maxNumberToFind
                    select tweet).ToList();

    if (tweets.Count > 0)
    {
        lastId = ulong.Parse(tweets.Last().StatusID.ToString());
        searchResults.AddRange(tweets);
    }

    do
    {
        var id = lastId - 1;
        tweets = (from tweet in twitterCtx.Status
                        where tweet.Type == StatusType.User &&
                            tweet.ScreenName == screenName &&
                            tweet.Count == maxNumberToFind &&
                            tweet.MaxID == id
                        select tweet).ToList();

        searchResults.AddRange(tweets);
        lastId = tweets.Min(x => x.StatusID);
        pagination++;
        count = (pagination > maxPagination) ? 0 : tweets.Count;
    } while (count == maxNumberToFind);

    return searchResults;
}
于 2015-10-14T09:54:04.350 に答える