Я работаю над проектом, в котором аудиофайлы на raspberry pi запускаются твитами с определенных учетных записей.
Я использую node.js и пакет twit npm. Я смог заставить его работать при использовании двух разных учетных записей Twitter. Однако, когда я пытаюсь сделать это с несколькими учетными записями (15+), это не работает.
Мой рабочий код:
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();
}
});
Как я отмечаю, когда я добавляю несколько учетных записей, он не работает. Он не выдает сообщение об ошибке, а просто зависает (никакой реакции на твиты). Я подумал, что проблема может заключаться в том, что мне нужен только один 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
});
Но опять-таки он просто зависает.
Любое предложение было бы замечательно.