2017-01-24 6 views
1

特定の場所でTwitterを検索しようとしています。私は自分の半径の外にジオタグされているつぶやきを除外するようにしましたが、nullに設定されたジオデータを使用して大部分のツイートを取得しています。つぶやきを特定の場所に限定する方法

var Twitter = new LinqToTwitter.TwitterContext(auth); 

var GeoCode = new LinqToTwitter.Geo() 
{ 
    Latitude = 37.68, 
    Longitude = -97.33, 
    Accuracy = "20mi" 
}; 

var geostring = $"{GeoCode.Latitude},{GeoCode.Longitude},{GeoCode.Accuracy}"; 

var searchResponse = 
    Twitter.Search 
     .Where(x => x.Type == SearchType.Search) 
     .Where(x => x.Query == "Trump") //I know people are tweeting this right now... 
     .Where(x => x.GeoCode == geostring) 
     .FirstOrDefault(); 

は、言ったように、これは特に私の場所&半径外とタグ付けされたつぶやきを除外し、私はまた、位置データが設定されていないツイートを除外したいと思います。私はここで何か間違っているのですか?それとも、私は不要なデータを取り出して、実際にフィルタリングしなければなりませんか?

答えて

1

多くの人が回しので、あなたがゼロである座標をたくさん見ている理由は、それらのプロフィールの場所をオフにします。 Twitter Search APIには、空の場所を除外するオプションはありません。

 var searchResponse = 
      await 
      Twitter.Search 
       .Where(x => x.Type == SearchType.Search) 
       .Where(x => x.Query == "Trump") //I know people are tweeting this right now... 
       .Where(x => x.GeoCode == geostring) 
       .FirstOrDefaultAsync(); 

     var withGeoCode = 
      (from resp in searchResponse.Statuses 
      where resp.Coordinates.Latitude != 0 && resp.Coordinates.Longitude != 0 
      select resp) 
      .ToList(); 

ところで、ツイッターへのLINQは私がasyncキーワードを追加した理由である、asyncであることに気づく:何あなたがが行うことができますことはあなたのクエリを実行し、このように、結果をフィルタリングするクエリオブジェクトにLINQを行うことですFirstOrDefaultAsync演算子を使用します。それ以外の場合は、競合状態のためにエラーが発生するか、結果を受け取らない可能性があります。時には、非同期でない演算子がまだ動作していることに驚いています。 ツイートに地理タグが付いていない場合、CoordinatesLatitude/Longitudeのプロパティは0になります。これは上記のコードで確認できます。

1

私は、あなたがそのようにのwheresを組み合わせることになっていると考えてみません:

var searchResponse = 
    Twitter.Search 
      .Where(x => x.Type == SearchType.Search && 
         x.Query == "Trump" && 
         x.GeoCode == geostring) 
      .FirstOrDefault(); 
1

特定の場所IDを検索すると、その場所または狭い場所からのジオタグを含むつぶやきだけが表示されます。例えばSan Francisco(5a110d312052166f)、CaliforniaまたはUnited Statesを検索すると、サンフランシスコのつぶやきが返されます。サンフランシスコ周辺のつぶやきも得られます。

n.b.ほとんどのつぶやきにはジオタグが付いていないので、これは少数のつぶやきになります。

検索:ID場所:402e618bff0d9dc1

https://api.twitter.com/1.1/search/tweets.json?q=place%3A5a110d312052166f

あなたがウェブサイト

https://twitter.com/search?q=place%3A5a110d312052166f&src=typd

に、この自分自身をテストすることができます
関連する問題