1

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

我试图通过使用Streaming APILinqToTwitter来实现这一点,但没有运气。

一个。StreamingType.Filter :如果我使用 StreamingType.Filter , Track == userName 和 Follow == userID,它不会返回所需的状态对象或返回 null

湾。StatusType.User :如果我使用 StatusType,它会返回对象。但我不应该使用 StatusType。

如果不使用 LinqToTwitter,我可以使用 Tweetinvi 实现这一点吗?请帮助我实现这一目标。

谢谢。珍惜你的时间。

4

2 回答 2

3

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

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

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

我有一篇关于使用 LINQ to Twitter 处理时间线的博客文章,可以帮助您通过 sinceID 和 MaxID 参数管理查询。它基于以前版本的 LINQ to Twitter,但概念保持不变。可下载的源代码中有用于与其他查询类型进行分页的演示。

其他注意事项:

  • 在 TwitterContext 实例上,如果您需要查询中的 JSON,则可以读取 RawResult 属性。JSON.NET 在这里也非常有用。
  • 在 Azure 上,查看 DocumentDB,它有一组很好的 API,包括 LINQ。
于 2015-01-21T21:52:23.880 回答
0

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

var fs = Stream.CreateFilteredStream();
fs.AddFollow(userId);
fs.MatchingTweetReceived += (sender, args) => { Console.WriteLine(args.Tweet); };
fs.StartStreamMatchingAllConditions();
于 2015-02-12T12:21:52.390 回答