linq-to-twitter Twitter Flood get

问题描述 投票:0回答:1

首先感谢您的框架。

1-我想做Twitter洪水数据。目前我要拍摄的照片只能带来1张唱片。但是,有1-20条记录。我该怎么做你的框架。

2-另外,api不仅将以前的记录显示为特定的字符和日期。

我该如何解决这两个问题。

       var auth = new MvcAuthorizer
        {
            CredentialStore = new SessionStateCredentialStore(HttpContext.Session)
        };

        var ctx = new TwitterContext(auth);

        var tweets = await
            (from tweet in ctx.Search
             where tweet.Type == SearchType.Search &&
                   tweet.TweetMode == TweetMode.Extended &&                       
                   tweet.Query == "Flood Name"

             select tweet).SingleOrDefaultAsync();          


        ViewBag.Twet = tweets.Statuses.ToList();

谢谢。

asp.net-mvc twitter linq-to-twitter
1个回答
0
投票

我拥有LINQ to Twitter。分页搜索可以返回更多值。这是一个例子:

const int MaxSearchEntriesToReturn = 100;
const int SearchRateLimit = 180;

string searchTerm = "twitter";

// oldest id you already have for this search term
ulong sinceID = 1;

// used after the first query to track current session
ulong maxID; 

var combinedSearchResults = new List<Status>();

List<Status> searchResponse =
    await
    (from search in twitterCtx.Search
     where search.Type == SearchType.Search &&
           search.Query == searchTerm &&
           search.Count == MaxSearchEntriesToReturn &&
           search.SinceID == sinceID &&
           search.TweetMode == TweetMode.Extended
     select search.Statuses)
    .SingleOrDefaultAsync();

if (searchResponse != null)
{
    combinedSearchResults.AddRange(searchResponse);
    ulong previousMaxID = ulong.MaxValue;
    do
    {
        // one less than the newest id you've just queried
        maxID = searchResponse.Min(status => status.StatusID) - 1;

        Debug.Assert(maxID < previousMaxID);
        previousMaxID = maxID;

        searchResponse =
            await
            (from search in twitterCtx.Search
             where search.Type == SearchType.Search &&
                   search.Query == searchTerm &&
                   search.Count == MaxSearchEntriesToReturn &&
                   search.MaxID == maxID &&
                   search.SinceID == sinceID &&
                   search.TweetMode == TweetMode.Extended
             select search.Statuses)
            .SingleOrDefaultAsync();

        combinedSearchResults.AddRange(searchResponse);
    } while (searchResponse.Any() && combinedSearchResults.Count < SearchRateLimit);

    combinedSearchResults.ForEach(tweet =>
        Console.WriteLine(
            "\n  User: {0} ({1})\n  Tweet: {2}",
            tweet.User.ScreenNameResponse,
            tweet.User.UserIDResponse,
            tweet.Text ?? tweet.FullText)); 
}
else
{
    Console.WriteLine("No entries found.");
}

有几件事要注意:

  • Count设置为MaxSearchEntriesToReturn,因为它的默认值为15,并且您希望最小化查询数。
  • while循环检查SearchRateLimit,因为存在速率限制,这将导致您获取HTTP429。仅应用程序的速率限制高于我在此处添加的180。
  • 注意我如何使用SinceID和MaxID浏览结果。请参阅Twitter API文档中的Working with Timelines以了解它们是什么。
  • 另外,请阅读Search API文档,并注意standard search API is focused on relevance and not completeness
© www.soinside.com 2019 - 2024. All rights reserved.