我正在尝试让TweetSharp在某个区域内对推文进行搜索。不幸的是,这总是会返回0结果。
public IEnumerable<TwitterSearchStatus> Search(string terms)
{
TwitterSearchResult result = ServiceManager.Instance.service.Search(terms,100);
IEnumerable<TwitterSearchStatus> returnValue = result.Statuses;
return returnValue;
}
public IEnumerable<TwitterSearchStatus> SearchGeolocation(string terms)
{
return Search(terms + "&geocode=51.50788772102843,-0.102996826171875,50mi");
}
这似乎生成了一个带有&amp;的查询。和%字符转义,服务然后没有转换意味着我得到你必须输入查询的错误:
http://search.twitter.com/search.json?test%26geocode%3D51.50788772102843%2C-0.102996826171875%2C50mi
如果我使用这些字符运行此查询,它似乎工作正常:
http://search.twitter.com/search.json?test&geocode=51.50788772102843,-0.102996826171875,50mi
有人有任何建议吗?
答案 0 :(得分:3)
我能够通过以下步骤获得TweetSharp搜索以支持地理编码参数:
TwitterSearchResult, "search", Search, string q, string geocode
位于 tsSource \ bin \ lib \ 4.0 目录中的TweetSharp.dll程序集将包含新方法。您可以这样调用新方法:
service.Search("test", "51.50788772102843,-0.102996826171875,50mi");
或者,您可以使用Twitterizer来支持您的搜索查询。它的搜索功能不会超越查询字符串参数,它应该能够与TweetSharp并行运行。如果你走这条路线,搜索查询代码将如下所示:
//reference Twitterizer2.dll
var tokens = new Twitterizer.OAuthTokens {
ConsumerKey = @"consumerKey",
ConsumerSecret = @"consumerSecret",
AccessToken = @"accessToken",
AccessTokenSecret = @"accessTokenSecret"
};
var response = Twitterizer.TwitterSearch.Search(tokens, "test",
new Twitterizer.SearchOptions {
GeoCode = "51.50788772102843,-0.102996826171875,50mi"
});
if (response.Result != Twitterizer.RequestResult.Success)
return;
foreach (var status in response.ResponseObject)
{
Console.WriteLine(status.Text);
}