【问题标题】:Twitter API Javascript extended modeTwitter API Javascript 扩展模式
【发布时间】:2018-11-09 18:32:57
【问题描述】:

我正在使用带有 Javascript 的 twitter 流 API 来收集推文。问题是我没有使用扩展模式,当它超过 140 个字符时,我没有得到完整的推文。我搜索了信息,发现我需要在请求中传递 tweet_mode=extended,响应将包含一个完整的完整文本。问题是我不知道在哪里写 tweet_mode=extended。这是我的代码:

    twitter.stream('statuses/filter', {track: word, function (stream) {
            stream.on('data', function (tweet) {
                 console.log(tweet.text)
            });
            stream.on('error', function (error) {
                console.log("error:", error);
            })
        })

【问题讨论】:

标签: javascript json node.js twitter


【解决方案1】:

不幸的是,流 API 没有添加 tweet_mode 参数的选项

此处的文档:https://developer.twitter.com/en/docs/tweets/tweet-updates

这一段值得您关注:

Streaming API 不提供提供查询的相同功能 配置请求选项的参数。因此,流式 API 此时以兼容模式呈现所有推文。

...

流式 API 使用者应更新其代码以首先检查 extended_tweet 字典的存在,并在 对适用于其用例的截断数据的偏好。 当 extended_tweet 不存在时,他们必须回退到使用 现有字段。

【讨论】:

  • 我不认为你是对的,因为很多人以前都做过,如果不可能,他们为什么要在文档中添加不同的模式?
  • 如果我正确阅读文档,我认为这些模式选项适用于 REST API,而不是其流式 API
  • 你可以检查truncated字段返回的JSON,它至少应该告诉你这条推文是否很大
【解决方案2】:

正如 Van 所说,流 API 中的推文是混合的。所以你可以试试这个:

twitter.stream('statuses/filter', {track: word, function (stream) {
        stream.on('data', function (tweet) {
             let text = tweet.extended_tweet?tweet.extended_tweet.full_text:tweet.full_text?tweet.full_text:tweet.text;
             console.log(text)
        });
        stream.on('error', function (error) {
            console.log("error:", error);
        })
    })

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 2016-05-11
    • 2012-03-23
    • 2010-09-05
    相关资源
    最近更新 更多