2014-05-23 68 views
1

我有一個C#應用程序流成功由我的任何朋友創建的所有推文(使用Tweetinvi庫和以下代碼)。流推文,其中提到@friendname

var userStream = Tweetinvi.Stream.CreateUserStream(); 

userStream.TweetCreatedByFriend += (sender, args) => 
{ 
    ConsoleLog(args.Tweet.Text); 
} 

如何(如果可能)我可以聽取提及任何朋友的屏幕名稱的推文嗎? 例如我是@alice的朋友。現在@bob,誰是我的朋友,微博是這樣的:

Hi @alice, how are you ? 

我如何通過@bob,誰是我的朋友聽上面的鳴叫,和MAY可能不是朋友追隨者@alice

回答

0

你不能那樣做。或者,如果你有太多朋友,至少我不認爲你可以。 您目前唯一可以看到的解決方案是使用FilteredStream,因爲它是一個公共流,您可以訪問您未跟蹤的用戶的推文。

如果你有追隨者清單足夠低,你可以做以下

var fs = Stream.CreateFilteredStream(); 
fs.AddTrack("@userScreenName"); 

正如你就可以遵循從Twitter的任何用戶包含@userScreenName所有鳴叫的結果。

+0

是的,這似乎是迄今爲止唯一的方法。但是因爲我必須在已經運行的流中添加曲目,所以停止/添加曲目/恢復流不可能是一種可靠的解決方案,因爲我正在嘗試使用Tweetinivi。所以,請讓我知道你是否有更好的建議? – theGeekster

+0

我會試着看看它。但在任何情況下,使用Tweetinvi或任何其他API,您需要使用您的參數請求端點。因此,在流正在運行時無法修改它。您將始終必須停止StreamReader,然後使用正確的端點重新啓動StreamReader。 – user2465083

+0

所以我沒有得到你的錯誤,Tweetinvi.Stream.TrackedStream.StartStream(endpoint_url_with_parameters)就是我的情況。每當我要添加新曲目時,必須提供更新的端點網址? Okey,請給我一個用戶@username後的endpoint_url的正確示例? – theGeekster

0

我知道這是一個非常古老的問題,但嘗試使用UserStream並篩選出UserMentions。我現在正試圖找到一個更好的方法來做到這一點。每次用戶提到你時,它們都會添加到你的UserStream中。

var stream = Tweetinvi.Stream.CreateTweetStream(); 
stream.TweetReceived += (sender, args) => 
{ 
     if(args.Tweet.IsRetweet || !args.Tweet.UserMentions.Any((x)=> x.Id == user.Id)) 
      { 
       return; 
      } 
     //Code to respond to mention here 
}