使用tweetinvi获取Twitter热门趋势时TweetVolume为null的原因
关于Tweetinvi获取Twitter趋势时TweetVolume为null的疑问
我用Tweetinvi获取Twitter热门趋势时,发现部分趋势的tweet_volume值为null,想知道是不是我的操作有误?这个值为null的原因是什么?
我的代码如下:
List<Tweet> topTrends = new List<Tweet>(); ITwitterCredentials creds = new TwitterCredentials("CONSUMER_KEY", "CONSUMER_SECRET", "ACCESS_TOKEN", "ACCESS_TOKEN_SECRET"); Auth.SetCredentials(creds); var trends = Trends.GetTrendsAt(23424977); for (int i = 0; i < trends.Trends.Count(); i++) { Tweet tweet = new Tweet { Name = trends.Trends[i].Name, Volume = trends.Trends[i].TweetVolume, Url = trends.Trends[i].URL, Count = trends.Trends[i].PromotedContent }; trendList.Add(tweet); }
解答
首先可以确定:你的操作完全没有问题,代码逻辑完全符合Tweetinvi的使用规范,调用Trends.GetTrendsAt()获取指定WOEID(这里是美国地区)的趋势数据、提取字段的流程都是正确的。
至于tweet_volume为null的原因,主要和Twitter API的返回规则有关:
- 统计阈值限制:Twitter不会为所有趋势返回推文数量,只有当某个趋势的推文量达到了Twitter内部设定的阈值(该数值不对外公开),且系统完成准确统计后,才会返回具体的
tweet_volume值;未达标的趋势就会返回null。 - 趋势新鲜度:刚登上趋势榜单的话题,可能还没积累足够的推文,或者Twitter的统计系统还未完成数据计算,这时候也会返回null。
- 趋势受众范围:一些地域性极强、或受众极小的小众趋势,推文总量太少,不会触发Twitter的数量统计返回,最终显示为null。
另外给个小建议:处理TweetVolume时可以用空合并运算符避免后续空值问题,比如:
Volume = trends.Trends[i].TweetVolume ?? 0
这样当值为null时会自动替换为0,方便后续的数值处理。
内容的提问来源于stack exchange,提问作者Agent Smith
相关产品推荐
相关产品推荐

