Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Tweetinvi从关键字检索所有推文?_C#_Webforms_Tweetinvi - Fatal编程技术网

C# 如何使用Tweetinvi从关键字检索所有推文?

C# 如何使用Tweetinvi从关键字检索所有推文?,c#,webforms,tweetinvi,C#,Webforms,Tweetinvi,我是一名新的C#开发人员,我正在尝试开发一个ASP.NETWebForms应用程序,使用Tweetinvi库搜索Twitter。我可以按用户和短语搜索Twitter。然而,我现在很难用短语搜索推文,因为它只返回少量低于150条的推文,我不知道为什么 我能够通过用户检索到1700多条推文,但当我将相同的代码概念应用于短语搜索时,我只能得到150条推文,我不知道为什么 请注意,按短语搜索推文的短语可以是任何关键字、标签或推特帐户名 下面是按短语搜索推文的C代码: private List<IT

我是一名新的C#开发人员,我正在尝试开发一个ASP.NETWebForms应用程序,使用Tweetinvi库搜索Twitter。我可以按用户和短语搜索Twitter。然而,我现在很难用短语搜索推文,因为它只返回少量低于150条的推文,我不知道为什么

我能够通过用户检索到1700多条推文,但当我将相同的代码概念应用于短语搜索时,我只能得到150条推文,我不知道为什么

请注意,按短语搜索推文的短语可以是任何关键字、标签或推特帐户名

下面是按短语搜索推文的C代码:

private List<ITweet> GetFilteredTweets(string keyword)
        {
            try
            {
                RateLimit.RateLimitTrackerMode = RateLimitTrackerMode.TrackAndAwait;

                RateLimit.QueryAwaitingForRateLimit += (se, ar) =>
                {
                    Console.WriteLine($"Query : {ar.Query} is awaiting for rate limits!");
                };

                // Create a parameter for queries with specific parameters
                var searchParameters = new SearchTweetsParameters(keyword)
                {
                    Lang = LanguageFilter.English,
                    SearchType = SearchResultType.Mixed,
                    //MaximumNumberOfResults = 100,
                    MaximumNumberOfResults = 200,
                    TweetSearchType = TweetSearchType.OriginalTweetsOnly
                };

                var lastTweets = Tweetinvi.Search.SearchTweets(searchParameters).ToArray();

                var allTweets = new List<ITweet>(lastTweets);
                var beforeLast = allTweets;

                while (lastTweets.Length > 0 && allTweets.Count <= 3200)
                {
                    var idOfOldestTweet = lastTweets.Select(x => x.Id).Min();
                    Console.WriteLine($"Oldest Tweet Id = {idOfOldestTweet}");

                    var numberOfTweetsToRetrieve = allTweets.Count > 3000 ? 3200 - allTweets.Count : 200;
                    var searchRequestParameters = new SearchTweetsParameters(keyword)
                    {
                        Lang = LanguageFilter.English,
                        SearchType = SearchResultType.Mixed,
                        // MaxId ensures that we only get tweets that have been posted 
                        // BEFORE the oldest tweet we received
                        MaxId = idOfOldestTweet - 1,
                        MaximumNumberOfResults = numberOfTweetsToRetrieve,
                        TweetSearchType = TweetSearchType.OriginalTweetsOnly
                    };

                    lastTweets = Tweetinvi.Search.SearchTweets(searchRequestParameters).ToArray();
                    allTweets.AddRange(lastTweets);
                }
                // `allTweets` now contains all the tweets that Twitter can return
                tweetList = allTweets;
                return allTweets;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
private List GetFilteredTweets(字符串关键字)
{
尝试
{
RateLimit.RateLimitTrackerMode=RateLimitTrackerMode.TrackAndAwait;
RateLimit.QueryWaitingForRateLimit+=(se,ar)=>
{
WriteLine($“Query:{ar.Query}正在等待速率限制!”);
};
//为具有特定参数的查询创建参数
var searchParameters=新的SearchTweetsParameters(关键字)
{
Lang=语言过滤器。英语,
SearchType=SearchResultType.Mixed,
//最大NumberOfResults=100,
最大NumberOfResults=200,
TweetSearchType=TweetSearchType.OriginalTweetsOnly
};
var lastweets=Tweetinvi.Search.SearchTweets(searchParameters.ToArray();
var allTweets=新列表(lastTweets);
var beforeLast=所有tweets;
while(lastweets.Length>0&&allTweets.Count x.Id).Min();
WriteLine($“最早的Tweet Id={idOfOldestTweet}”);
var numberOfTweetsToRetrieve=allTweets.Count>3000?3200-allTweets.Count:200;
var searchRequestParameters=new SearchTweetsParameters(关键字)
{
Lang=语言过滤器。英语,
SearchType=SearchResultType.Mixed,
//MaxId确保我们只收到已发布的推文
//在我们收到的最早的推特之前
MaxId=idOfOldestTweet-1,
MaximumNumberOfResults=NumberOfTweetStoreTrive,
TweetSearchType=TweetSearchType.OriginalTweetsOnly
};
lastTweets=Tweetinvi.Search.SearchTweets(searchRequestParameters.ToArray();
allTweets.AddRange(lastTweets);
}
//'allTweets'现在包含Twitter可以返回的所有推文
tweetList=所有tweets;
返回所有推文;
}
捕获(例外情况除外)
{
掷骰子;
}
}

获取过去7天内的所有推文

    static public List<ITweet> GetTweets(string keyword)
    {
        RateLimit.RateLimitTrackerMode = RateLimitTrackerMode.TrackAndAwait;
        var searchParam = new Tweetinvi.Parameters.SearchTweetsParameters(keyword)
        {
            MaximumNumberOfResults = 1000
        };

        var tweets = Tweetinvi.Search.SearchTweets(searchParam).ToList();
        var tweetList = new List<ITweet>(tweets);

        while (tweets.Count > 0)
        {
            searchParam.MaxId = tweets.Select(x => x.Id).Min() - 1;
            searchParam.MaximumNumberOfResults = 5000;
            tweets = Tweetinvi.Search.SearchTweets(searchParam).ToList();
            tweetList.AddRange(tweets);

            Console.WriteLine($"Find : {tweets.Count}");
            Console.WriteLine($"All : {tweetList.Count}");
        }
        return tweetList;
    }
静态公共列表GetTweets(字符串关键字)
{
RateLimit.RateLimitTrackerMode=RateLimitTrackerMode.TrackAndAwait;
var searchParam=new Tweetinvi.Parameters.SearchTweetsParameters(关键字)
{
最大NumberOfResults=1000
};
var tweets=Tweetinvi.Search.SearchTweets(searchParam.ToList();
var tweetList=新列表(tweets);
而(tweets.Count>0)
{
searchParam.MaxId=tweets.Select(x=>x.Id).Min()-1;
searchParam.MaximumNumberOfResults=5000;
tweets=Tweetinvi.Search.SearchTweets(searchParam.ToList();
tweetList.AddRange(tweets);
WriteLine($“Find:{tweets.Count}”);
WriteLine($“All:{tweetList.Count}”);
}
返回tweetList;
}

Twitter搜索API仅返回过去7天的推文。您是否查看了您收到的最后一条推文的发布日期?