首页 > 解决方案 > 如何从用户 twitter api + javascript 检索所有推文

问题描述

我正在尝试将来自用户的每条推文存储在一个数组中。首先,我试图从用户那里获得前 3200 条推文。

var Twitter = require('twitter');
require('dotenv/config');

const apikey = process.env.apikey
const apiSecretKey = process.env.apikeysecret
const accessToken = process.env.accesstoken
const accessTokenSecret = process.env.accesstokensecret

var client = new Twitter({
    consumer_key: apikey,
    consumer_secret: apiSecretKey,
    access_token_key: accessToken,
    access_token_secret: accessTokenSecret
});

var mastertweetsarray = [];


var the_latest_id = null

function getlastid (){
  var params = {screen_name: 'example', count: 200};
  client.get('statuses/user_timeline', params, function(error, tweets, response) {
    if (!error) {
      the_latest_id = tweets[tweets.length - 1].id
      for (i = 0; i < tweets.length; i++) {
        mastertweetsarray.push(tweets[i].text)
      }
    }
  });
}

function getothertweets() {
  var paramssecond = {screen_name: 'example', count: 200, max_id: the_latest_id};
  for (j = 0; j < 15; j++) {
    console.log("this is trial" + j)
    client.get('statuses/user_timeline', paramssecond, function(error, tweets, response) {
      if (!error) {
        for (i = 0; i < tweets.length; i++) {
          mastertweetsarray.push(tweets[i].text)
        }
        if (tweets.length - 1 == -1) {
          return;
        } else {
          the_latest_id = tweets[tweets.length - 1].id
        }
        //use for loop to go through every tweet and and use includes() to get specific keywords
      }
    });
  }
}

async function runeverything() {
  await getlastid();
  await getothertweets();
  return mastertweetsarray;
}

console.log(runeverything())

这就是我到目前为止所获得的用户时间线并在我从前 200 个中获得最后一个 id 后重复存储部分 15 次。然后,将最后一个 id 保存为其他 15 次的 max_id。有什么方法可以使这项工作和改进它?另外,有没有办法从用户那里获取所有推文?

标签: javascriptnode.jstwitter

解决方案


推荐阅读