【问题标题】:How to get Twitter homepage stream with twitter-lite?如何使用 twitter-lite 获取 Twitter 主页流?
【发布时间】:2020-03-03 20:02:09
【问题描述】:

我正在使用twitter-lite

我正在尝试获取我的主页流(获取所有推文作为人们的推文,一个流),但我做不到。

我不想过滤掉任何东西,我只想看到流。

我的代码

const Twitter = require('twitter-lite')

// removed auth info
const client = new Twitter({
  consumer_key: '',
  consumer_secret: '',
  access_token_key: '',
  access_token_secret: ''
})

let stream = client.stream('statuses/home_timeline', {})
  .on('start', response => console.log('start'))
  .on('data', tweet => console.log('data', tweet.text))
  .on('ping', () => console.log('ping'))
  .on('error', error => console.log('error', error))
  .on('end', response => console.log('end'))

错误

error Response {
  size: 0,
  timeout: 0,
  _headers:
   [Object: null prototype] {
     connection: [ 'close' ],
     'content-length': [ '0' ],
     date: [ 'Sun, 01 Mar 2020 15:10:14 GMT' ],
     server: [ 'tsa_b' ],
     'set-cookie':
      [ 'personalization_id="REMOVEDTHIS=="; Max-Age=63072000; Expires=Tue, 1 Mar 2022 15:10:14 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None',
        'guest_id=REMOVEDTHIS; Max-Age=63072000; Expires=Tue, 1 Mar 2022 15:10:14 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None' ],
     'strict-transport-security': [ 'max-age=631138519' ],
     'x-connection-hash': [ 'REMOVEDTHIS' ],
     'x-response-time': [ '6' ],
     'x-tsa-request-body-time': [ '1' ] },
  [Symbol(Body internals)]:
   { body:
      PassThrough {
        _readableState: [ReadableState],
        readable: true,
        domain: null,
        _events: [Object],
        _eventsCount: 2,
        _maxListeners: undefined,
        _writableState: [WritableState],
        writable: false,
        allowHalfOpen: true,
        _transformState: [Object] },
     disturbed: false,
     error: null },
  [Symbol(Response internals)]:
   { url: 'https://stream.twitter.com/1.1/statuses/home_timeline.json',
     status: 404,
     statusText: 'Not Found',
     headers: Headers { [Symbol(map)]: [Object] },
     counter: 0 } }
end

我曾经使用过另一个名为 Twit 的包,如下所示。如何使用此软件包实现等效(将我的主页流作为用户推文流式传输)?我不想过滤掉任何东西,我只想看到流。

var Twit = require('twit')

var T = new Twit({
  consumer_key: '',
  consumer_secret: '',
  access_token: '',
  access_token_secret: '',
  timeout_ms: 60 * 1000 // optional HTTP request timeout to apply to all requests.
})

var stream = T.stream('user')
stream.on('tweet', tweet => {
 console.log(tweet.text) // new tweet
})

【问题讨论】:

    标签: node.js twitter


    【解决方案1】:

    home_timeline 不是流,它是您需要轮询的 REST 端点,您尝试从中流式传输的操作将不起作用。

    使用 twit,您之前获取的是“用户流” - 此 API 已在前一段时间被删除,并且不再可能实时获取主页时间线。

    你可以做这样的事情,但你需要循环或每隔几分钟做一次(记住速率限制,假设你仍在使用twitter-lite,我认为这是一个非常好的库)

    async function getHomeTimeline() {
      const result = await client.get("statuses/home_timeline");
      console.log(JSON.stringify(result, null, 2));
    }
    
    getHomeTimeline();
    

    【讨论】:

      猜你喜欢
      • 2017-09-13
      • 2018-08-20
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多