【问题标题】:How to get tweets from a multiple of friends?如何从多个朋友那里获取推文?
【发布时间】:2012-06-27 12:31:10
【问题描述】:

这是我在我经常使用的 SO 女巫中的第一个问题 :)。这就是问题/挑战:

我正在构建一个服务,用户可以在其中选择一些他的 facebook 和 twitter 朋友,然后他将获得推文和这些状态的组合列表。 Facebook 使用批处理请求没有问题,非常有用且易于实现。我试图从 twitter 获得相同的结果,但这似乎比看起来更难。

我有一个我所有朋友的列表(姓名和用户 ID),我想选择其中一些朋友并检索他们的推文。我使用的是 linqToTwitter,也欢迎直接 HTTP 请求:)。

这就是我正在尝试的:

var tweetsResult =
                (from search in twitterCtx.Search
                  where search.Type == SearchType.Search &&
                    search.Query == "from:cinek24 OR from:blaba"
                  select search).Single();

这适用于像 cnn 这样的公共用户,但不适用于私人朋友,是的,我有有效的令牌。

【问题讨论】:

    标签: twitter linq-to-twitter


    【解决方案1】:

    以下是用户在 LINQ to Twitter 中查找的方法:

            var users =
                (from user in twitterCtx.User
                 where user.Type == UserType.Lookup &&
                       user.ScreenName == "cinek24,blaba"
                 select user)
                .ToList();
    
            users.ForEach(user => Console.WriteLine("Name: " + user.Name));
    

    更多信息在这里:

    http://linqtotwitter.codeplex.com/wikipage?title=Querying%20User%20Details&referringTitle=Getting%20User%20Information

    一旦有了用户,就必须查询他们每个人的推文,因为用户查找只会返回他们的最后一条推文,如下所示:

            var statusTweets =
                from tweet in twitterCtx.Status
                where tweet.Type == StatusType.User
                      && tweet.ScreenName == "cinek24"
                      && tweet.Count == 40
                select tweet;
    
            tweets.ToList().ForEach(
                tweet => Console.WriteLine(
                    "Name: {0}, Tweet: {1}\n",
                    tweet.User.Name, tweet.Text));
    

    有关该查询的更多信息在这里:

    http://linqtotwitter.codeplex.com/wikipage?title=Querying%20the%20User%20Timeline&referringTitle=Making%20Status%20Queries%20and%20Calls

    【讨论】:

    • 感谢您的回答,我想这不可能在像 facebook 这样的一个请求中完成。让我们跳一下 Twitter 将来会提供这个。
    • 我已经实现了一个方法来检索用户的 N 条推文,现在我使用不同的 userId 循环遍历该方法。每个请求大约需要 800 毫秒,这是很多时间。我将您的答案设置为已接受,因为我认为无法在一个请求中做到这一点。
    • MQoder,这听起来像一个状态用户查询: var statusTweets = from tweet in twitterCtx.Status where tweet.Type == StatusType.User && tweet.ScreenName == "JoeMayo" && tweet.Count = = 200 选择推文;
    【解决方案2】:

    这是您需要的 API 调用 - users/lookup

    https://api.twitter.com/1/users/lookup.json?screen_name=twitterapi,twitter,edent,MQoder&include_entities=true
    

    这将返回来自所有这些屏幕名称的最新推文。如果您愿意,也可以使用 user_ids。

    【讨论】:

    • 感谢您的快速反应,如果您对最后一条推文感兴趣,这是一个好方法,我需要获得 20 到 40 条推文。
    • 我知道的唯一方法是将它们放在一个列表中。
    猜你喜欢
    • 2014-02-03
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多