2014-05-23 5 views
1

J'ai une application C# qui diffuse tous les tweets créés par mes amis avec succès (en utilisant la bibliothèque Tweetinvi et le code suivant).Tweets de flux qui mentionnent @friendname

var userStream = Tweetinvi.Stream.CreateUserStream(); 

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

Comment (si possible) puis-je écouter les tweets qui mentionnent un nom d'écran de mes amis? par exemple. Je suis ami avec @alice. Maintenant @bob, qui est pas mon ami, tweets comme ceci:

Hi @alice, how are you ? 

Comment puis-je écouter tweet ci-dessus par @bob, qui est pas mon ami, et MAI ou NE PEUT PAS être ami ou suiveur de @alice?

Répondre

0

Vous ne pouvez pas faire cela. Ou du moins, je ne pense pas que tu le puisses si tu as trop d'amis. La seule solution que vous pouvez actuellement voir est d'utiliser FilteredStream car il s'agit d'un flux public et vous pouvez accéder aux tweets d'utilisateurs que vous ne suivez pas.

Si la liste des disciples que vous avez est assez faible, vous pouvez effectuer les opérations suivantes

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

En conséquence, vous serez en mesure de suivre tous les tweets contenant @userScreenName de tout utilisateur de Twitter.

+0

Oui, c'est apparemment le seul moyen pour le moment. Mais parce que je dois ajouter des pistes dans un flux déjà en cours d'exécution, l'arrêt/ajout de piste/reprise de flux n'est probablement pas une solution fiable car j'essaie avec Tweetinivi. Alors s'il vous plaît laissez-moi savoir si vous avez une meilleure suggestion pour cela? – theGeekster

+0

Je vais essayer d'y jeter un coup d'œil. Mais en tout cas avec Tweetinvi ou toute autre API, vous devez demander le point de terminaison avec vos paramètres. Il n'y a donc aucun moyen de modifier un flux pendant qu'il est déjà en cours d'exécution. Vous devrez toujours arrêter StreamReader, puis redémarrer StreamReader avec le bon point de terminaison. – user2465083

+0

Donc je ne me trompe pas, Tweetinvi.Stream.TrackedStream.StartStream (endpoint_url_with_parameters) est mon cas. Où dois-je fournir l'url du point de terminaison à chaque fois que de nouvelles pistes sont ajoutées? Okey, pouvez-vous s'il vous plaît me donner un exemple correct de ce endpoint_url suite à un utilisateur @ nom d'utilisateur? – theGeekster

0

Je sais que c'est une très vieille question mais essayez d'utiliser un UserStream et de filtrer les UserMentions. Je suis en train d'essayer de trouver une meilleure façon de le faire moi-même. Chaque fois qu'un utilisateur vous mentionne, ils sont ajoutés à votre 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 
}