[英]using Twitter API Stream for multiple twitter accounts?
I am working on a project where audio files on a raspberry pi are triggered by tweets from specific accounts.我正在做一个项目,其中树莓派上的音频文件由来自特定帐户的推文触发。
I am using node.js and the npm twit package.我正在使用 node.js 和 npm 推特 package。 I have been able to get it work when using two different twitter accounts.
当使用两个不同的 twitter 帐户时,我已经能够让它工作。 However, when I try to do it with multiple accounts (15+), it is not working.
但是,当我尝试使用多个帐户(15 岁以上)时,它不起作用。
My working code is this:我的工作代码是这样的:
var userID1 = 'XXXXXXX'; //userID of first account
var userID2 = 'XXXXXXX'; //UserdIp of Second account
//Following code set up stream just for USERID1
var stream = T.stream('statuses/filter', { follow: ( userID1 ) });
stream.on('tweet', function (tweet) {
// two variables to store tweet time and actual tweet
var tweetTime = new Date().toLocaleString();
var printTweet = tweet.text;
if (tweet.user.id == userID1 ) {
printTweet.toString()//converts printTweet to String
console.log(printTweet) //prints tweet as variable
console.log("Tweet has been received from UserID1 + tweetTime");
audio();
}
});
//Following code set up stream just for USERID2
var stream = T.stream('statuses/filter', { follow: ( userID2 ) });
stream.on('tweet', function (tweet) {
// two variables to store tweet time and actual tweet
var tweetTime2 = new Date().toLocaleString();
var printTweet2 = tweet.text;
if(tweet.user.id == userID2 ) {
printTweet2.toString()//converts printTweet to String
console.log(printTweet2) //prints tweet as variable
console.log("Tweet has been received from UserID2" + tweetTime2);
audio();
}
});
As I mentioend when I add multiple accounts it does not work.正如我在添加多个帐户时提到的那样,它不起作用。 It does not throw up an error message instead it just freezes (no reaction to tweets).
它不会抛出错误消息,而是冻结(对推文没有反应)。 I thought the problem might be that I only needed either one
var stream
or one instance of stream.on
so I tried this:我认为问题可能是我只需要一个
var stream
或一个stream.on
实例,所以我尝试了这个:
var userID1 = 'XXXXXXX'; //userID of first account
var userID2 = 'XXXXXXX'; //UserdID of Second account
var userID3 = 'xxxxxxx'; //user ID pf third account
//I then have userID of another 15 accounts.
//Following code set up stream just for all user IDs
var stream = T.stream('statuses/filter', { follow: ( userID1, userID2, ****15 more userID***** ) });
//just one stream.on for all followed twitter accounts
stream.on('tweet', function (tweet) {
//conditional for userID1
if (tweet.user.id == userID1 ) {
// two variables to store tweet time and actual tweet
var tweetTime = new Date().toLocaleString();
var printTweet = tweet.text;
printTweet.toString()//converts printTweet to String
console.log(printTweet) //prints tweet as variable
console.log("Tweet has been received from UserID1 + tweetTime");
audio();
}
//conditional for userID2
if(tweet.user.id == userID2 ) {
// two variables to store tweet time and actual tweet
var tweetTime = new Date().toLocaleString();
var printTweet = tweet.text;
printTweet2.toString()//converts printTweet to String
console.log(printTweet2) //prints tweet as variable
console.log("Tweet has been received from UserID2" + tweetTime2);
audio();
}
//same conditional above done 15 more times for other accounts
});
But again it just freezes.但它又一次冻结了。
Any suggestion would be great.任何建议都会很棒。
There's a problem with the way you declare follow
list.您声明
follow
列表的方式存在问题。 It should be a comma-separated list of user ids, while in your code you just use comma-operator .它应该是以逗号分隔的用户 ID 列表,而在您的代码中您只需使用comma-operator 。 Try changing it to something like this:
尝试将其更改为以下内容:
{ follow: [ userID1, userID2, ... , userID17 ].join(',') }
in your second example of code (which is better in my opinion), so the resulting code would look like this:在您的第二个代码示例中(我认为这更好),因此生成的代码如下所示:
var stream = T.stream('statuses/filter', { follow: [ userID1, userID2, ... , userID17 ].join(',') });
//just one stream.on for all followed twitter accounts
stream.on('tweet', function (tweet) {
//conditional for userID1
if (tweet.user.id == userID1 ) {
// two variables to store tweet time and actual tweet
var tweetTime = new Date().toLocaleString();
var printTweet = tweet.text;
printTweet.toString()//converts printTweet to String
console.log(printTweet) //prints tweet as variable
console.log("Tweet has been received from UserID1 + tweetTime");
audio();
}
//conditional for userID2
if(tweet.user.id == userID2 ) {
// two variables to store tweet time and actual tweet
var tweetTime = new Date().toLocaleString();
var printTweet = tweet.text;
printTweet2.toString()//converts printTweet to String
console.log(printTweet2) //prints tweet as variable
console.log("Tweet has been received from UserID2" + tweetTime2);
audio();
}
//same conditional above done 15 more times for other accounts
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.