使用 linq2twitter / tweetinvi 进行 Twitter 流式传输 api

Twitter streaming api with linq2twitter / tweetinvi

我想创建 C# Web API 项目来 i.) 获取用户 ID 的所有状态推文(需要 help/guidance,因为数据可能很大,所以我有什么选择) ii.) 将它们存储到 Azure DB(希望我能做到这一点) iii.) 获取 DB 值并显示 JSON 输出(希望我能实现)

我试图通过使用 Streaming API and LinqToTwitter 来实现这一点,但没有成功。

一个。 StreamingType.Filter :如果我使用 StreamingType.Filter ,Track == userName 和 Follow == userID

,它不会返回所需的状态对象或 returns null

b。 StatusType.User :如果我使用 StatusType,它是 returns 对象。但我不应该使用 StatusType。

如果不使用 LinqToTwitter,我可以使用 Tweetinvi 实现此目的吗?请帮我实现这个。

谢谢。珍惜你的时间。

Web API 本质上是无状态的,因此无论使用 LINQ to Twitter、任何其他工具还是您自己编写,流都无法正常工作。在每次请求时,流都会启动和停止。这没有意义,因为流旨在作为持久且长的 运行 连接。 Twitter has guidance on using their stream API 如果您重新连接太多次,似乎会发生不好的事情。

对于 Web API,您最好使用搜索查询:

        var searchResponse =
            await
            (from search in twitterCtx.Search
             where search.Type == SearchType.Search &&
                   search.Query == "\"LINQ to Twitter\""
             select search)
            .SingleOrDefaultAsync();

我在 Working with Timelines with LINQ to Twitter that can help you manage the query via SinceID and MaxID parameters. It's based on the previous version of LINQ to Twitter, but the concepts remain the same. There are demos in the Downloadable Source Code 上有一个博客 post,用于使用其他查询类型进行分页。

其他注意事项:

  • 在 TwitterContext 实例上,您可以读取 RawResult 属性 如果您需要查询中的 JSON。 JSON.NET 在这里也很有用。
  • 在 Azure 上,查看 DocumentDB,它有一组很好的 APIs, 包括 LINQ。

使用 tweetinvi,您只需使用以下代码即可轻松完成此操作

var fs = Stream.CreateFilteredStream();
fs.AddFollow(userId);
fs.MatchingTweetReceived += (sender, args) => { Console.WriteLine(args.Tweet); };
fs.StartStreamMatchingAllConditions();