[英]Twitter API with node.js, get a list of followers
您好,我目前正在使用 Twitter 機器人和 Twitter API 和 Node.JS。 我希望機器人在 javascript object 中返回我的所有關注者和他們的一些功能。類似於:
{['id', 'screen_name', 'name', 'screen_name', 'followers_count', 'friends_count']}
RN 我的代碼是:
var Twitter = new TwitterPackage(config);
var options =
{
screen_name: 'mowsolicious',
};
Twitter.get('followers/ids', options, function (err, data) { // returns a list of ids
var nbFollowers = data.ids.length
var id = []
console.log(nbFollowers) // how many followers I have
for (i=0 ; i <= nbFollowers ; i++) {
ids = data.ids
var id = ids[i]
Twitter.get('users/show/' + id, function(err, data) {
console.log(id + " - " + data.name + " - " + data.screen_name + " - " + data.followers_count + " - " + data.friends_count)
})
}
})
我很確定我的方法出了什么問題(更准確地說,當我將Twitter.get放入循環中時)並且它在控制台中返回了一堆未定義。
我嘗試使用 API 文檔,但在理解它時遇到了一些麻煩。 如果有人可以提供幫助,那就太好了。
謝謝
最有可能的是,您undefined
是因為未找到用戶:
[ { code: 50, message: 'User not found.' } ]
檢查err
變量會解決這個問題。 但是查看GET followers/id
文檔,您應該使用GET users/lookup
來有效地請求多個用戶對象(每個請求最多 100 個用戶,用戶 ID 以逗號分隔)
此外,我假設您希望在所有請求完成時調用一個唯一的回調,使用Promises
將解決這個問題:
var res_array = [];
function getUserInfo(id_list) {
return Twitter.get('users/lookup', {
"user_id": id_list
}).then(function(data) {
res_array.push(data);
})
.catch(function(error) {
throw error;
})
}
Twitter.get('followers/ids', function(err, data) {
if (err) {
console.log(err);
return;
}
console.log("total followers : " + data.ids.length);
var requestNum = Math.floor(data.ids.length / 100);
var remainder = data.ids.length % 100;
var promises_arr = [];
for (var i = 0; i < requestNum; i++) {
promises_arr.push(getUserInfo(data.ids.slice(i * 100, i * 100 + 100).join(",")));
}
if (remainder != 0) {
promises_arr.push(getUserInfo(data.ids.slice(requestNum * 100, requestNum * 100 + 100).join(",")));
}
Promise.all(promises_arr)
.then(function() {
for (var i in res_array) {
for (var j in res_array[i]) {
var user = res_array[i][j];
console.log(user.id + " - " +
user.name + " - " +
user.screen_name + " - " +
user.followers_count + " - " +
user.friends_count)
}
}
})
.catch(console.error);
})
關注者列表可以通過superface sdk獲取,可以參考下面的例子試試
npm install @superfaceai/one-sdk
npx @superfaceai/cli install social-media/followers
const { SuperfaceClient } = require('@superfaceai/one-sdk'); const sdk = new SuperfaceClient(); async function run() { // Load the installed profile const profile = await sdk.getProfile('social-media/followers'); // Use the profile const result = await profile.getUseCase('GetFollowers').perform({ profileId: '429238130' }); return result.unwrap(); } run();
這很好用
import fetch from 'node-fetch'
async function getFollowers(username) {
const response = await fetch(`https://api.twitter.com/1.1/followers/list.json?screen_name=${username}`, {
headers: {
Authorization: `Bearer ${<yourbearertoken>}`
}
});
// Parse the response as JSON
const data = await response.json();
return data.users;
}
const followers = await getFollowers("<username>");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.