如何使用twitter-lite获取Twitter主页流?

问题描述 投票:0回答:1

我正在使用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个回答
0
投票

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();
© www.soinside.com 2019 - 2024. All rights reserved.