function check() { var creds = accounts[idx].creds; if (!creds) { console.log('ACCOUNT '.red, accounts[idx].username.yellow.bold, ' HAS NO CREDS'.red); idx++; return check(); } var client = new Twitter(creds); client.get('account/verify_credentials', {skip_status: true}, function(err, resp) { if (err) { console.log('ACCOUNT '.red, accounts[idx].username.yellow.bold, ' IS F****D'.red); } else { console.log('CONFIRMED ACCOUNT '.green, accounts[idx].username.yellow.bold, ' IS GOOD'); } idx++; if (idx > accounts.length - 1) { console.log('') console.log('DONE CHECKING ACCOUNTS!'.green.bold); return process.exit(); } setTimeout(function(){ check(); }, 5000 + Math.floor(Math.random() * 5000)); }) }
function getTwitterData(inObj) { console.log("inObj", inObj); // console.log("config", config); var T = new Twitter(config); // Set up your search parameters var params = { q: '#bitcoin', count: maxCount, lang: 'en', } if (inObj) { if (inObj.until) { params.until = inObj.until; } if (inObj.max_id) { params.max_id = inObj.max_id; } } console.log("params", params); // Initiate your search using the above paramaters T.get('search/tweets', params, ((err, data, response) => { // If there is no error, proceed if (!err) { processTwitResponse(data); } else { console.log("Error occurred", err); } })) }
Posts.find({"publish_date": {$lt: _endDate }}, null, {limit: 10, sort: {publish_date: -1}},function (error, posts) { if (error) { console.log(error); } var params = {screen_name: 'liaodrake', count: 10}; client.get('statuses/user_timeline', params, function(error, tweets, t_response){ if (error) { console.log(error); } var RAW_activityfeed = {}; for (var i=0,x=posts.length; i<x; i++) { RAW_activityfeed[ +new Date(posts[i].publish_date) ] = { type: "post", data: posts[i] }; } for (var i=0,x=tweets.length; i<x; i++) { RAW_activityfeed[ +new Date(tweets[i].created_at) ] = { type: "tweet", data: tweets[i] }; } var RAW_activityfeed_timestamps = Object.keys(RAW_activityfeed); RAW_activityfeed_timestamps.sort().reverse(); var activityfeed = []; for (var i=0,x=10; i<x; i++) { activityfeed.push(RAW_activityfeed[RAW_activityfeed_timestamps[i]]); } cashedActivity = activityfeed; }); });
return new Promise((resolve, reject) => { // creates a new event that is an instance of EventInfo const newEvent = EventInfo(); newEvent.twitterHandle = event; // search parameters for the Twitter request include the user's twitter handle const searchParams = { screen_name: newEvent.twitterHandle, exclude_replies: true, include_rts: true, }; // now we search Twitter for this user (same as the getTruckTwitterInfo function) twitterClient.get('statuses/user_timeline', searchParams, (error, tweets) => { if (error) { console.log('Error retrieving tweets', error); reject(error); } // set the property of fullTweets to the data returned from the server newEvent.fullTweets = tweets; // allTweetMessages should only contain message strings (newEvent.fullTweets).forEach((tweet) => { newEvent.allMessages.push(tweet.text); }); resolve(newEvent); }); });
// ====== TWITTER function getTwitter() { var twitLogin = new twitter ({ consumer_key: keys.twitterKeys.consumer_key, consumer_secret: keys.twitterKeys.consumer_secret, access_token_key: keys.twitterKeys.access_token_key, access_token_secret: keys.twitterKeys.access_token_secret }); var params = { screen_name: "TGreen304", trim_user: true, count: 20 }; //console.log(params); twitLogin.get("statuses/user_timeline", params, function(error, tweets, response) { if (!error) { for (i = 0; i < 20; i++) { console.log(tweets[i].text); console.log(tweets[i].created_at); console.log("\n================\n"); } } /*else { console.log(error); };*/ }); }
function tweets(){ var y = 0; var client = new Twitter(keys.twitterKeys) var params = {screen_name: 'RpatrkH'}; client.get('statuses/user_timeline', params, function(error, tweets, response){ if (!error) { console.log('========== Twitter Info: =========='); console.log(' ') //console.log(tweets); for (i = 0; i < 20; i++){ y++; var tweetText = tweets[i].text; var tweetDate = tweets[i].created_at; console.log('----------- Tweet ' + y + ' -----------'); console.log(tweetText); console.log(tweetDate); if (i < 9){ console.log('-------------------------------'); } else { console.log('--------------------------------'); } console.log(' '); logResult = " " + "Tweet " + y + ": " + tweets[i].text + " Time:" + tweets[i].user.created_at + " "; logData(logResult); } console.log('==================================='); } else { console.log('Error'); } }); }
client.get('moments/capsule/' + id, params, function(error, capsule, response) { var pageTweetIds = _.map(capsule['pages'], function(p) { return p['tweet_id']}); var hydratedTweetIds = Object.keys(capsule['tweets']) console.log('hydratedTweetIds ' + hydratedTweetIds) console.log('pageTweetIds ' + pageTweetIds) var needHydrationIds = _.difference(pageTweetIds, hydratedTweetIds) console.log('needHydrationIds ' + needHydrationIds) if (needHydrationIds.length > 0) { var lookupParams = { id: needHydrationIds.join(','), include_cards: 1, cards_platform: 'iPhone-12', } console.log(lookupParams) client.get('statuses/lookup', lookupParams, function(error, tweets, response) { _.each(tweets, function(tweet) { capsule['tweets'][tweet['id_str']] = tweet; }); res.json(capsule) }) } else { res.json(capsule) } });
setInterval(function(){ console.log("Refreshing Twitter...") twitterclient.get('statuses/user_timeline', { screen_name: "ThursdayKnights", exclude_replies: true, trim_user: true, include_rts: false, since_id: last_tweet_id, }, function(error, params, response){ if(error) { console.log("Twitter API error"); console.log(error); console.log(params); } else { console.log("Found " + params.length + " new tweets"); if (params.length > 0) { if (last_tweet_id != 1 && last_tweet_id != params[0].id) { // Found a new tweet. Announce it! announce_tweet(params[0].text, params[0].entities) //console.log(params[0]); //console.log(params[0].entities.media); //console.log(params[0].extended_entities.media); } last_tweet_id = params[0].id; console.log("New most recent tweet id: " + last_tweet_id); } } }); }, twitter_interval);
function myTweets() { var client = new twitter(keys.twitterKeys); // Twitter parameters var isInputNull = userInput === "" ? userInput = "ahmetburhan" : userInput = userInput; var params = { "screen_name": userInput, "count": 20 } client.get("statuses/user_timeline", params, function (err, tweet, response) { if (err) { return console.log(err); } else { for (var i = 0; i < tweet.length; i++) { console.log(tweet[i].created_at); console.log(tweet[i].text); fs.appendFile("log.txt", "\n" + tweet[i].created_at + "\n" + tweet[i].text, function (err) { if (err) { console.log(err); } }) } } }) }
router.get('/', function(req, res, next) { var tweets = ''; var params = { q: '#dtla filter:media', geocode: '34.052234,-118.243685,2mi', include_entities: 'true' }; twitterClient.get('search/tweets', params, function(error, tweets, response){ if (!error) { res.render('index', { title: 'Twitter Map', params: params, tweets: listTweets(tweets), tweetsRaw: tweets, mapbox_token: process.env.MAPBOX_ACCESS_TOKEN, mapbox_map_id: process.env.MAPBOX_MAP_ID, mapbox_style_id: process.env.MAPBOX_STYLE_ID }); } else { res.render('index', { title: 'Twitter Map', tweets: error }); } }); });
function(error, oauth_access_token, oauth_access_token_secret, results) { if(error) { next(new Error('Something broke: ' + util.inspect(error))); } else { req.session.oauth.access_token = oauth_access_token; req.session.oauth.access_token_secret = oauth_access_token_secret; let twit = new twitter({ consumer_key: config.CONSUMER_KEY, consumer_secret: config.CONSUMER_SECRET, access_token_key: req.session.oauth.access_token, access_token_secret: req.session.oauth.access_token_secret }); twit.get('account/verify_credentials', { skip_status: true }, function(error, data) { if(typeof(data) == 'undefined' || data == null) { next(new Error('Error verifying credentials.')); } else { req.session.screen_name = data.screen_name; res.redirect('/'); } }); } })
funicularData.twitterUsersToListenTo.forEach(function (screen_name) { //console.log(" - log: " + funicularData.twitterUsersData[screen_name].lastTweetID + " " + funicularData.twitterUsersData[screen_name].lastTweetIDstr); console.log(" └ for " + screen_name); // https://dev.twitter.com/rest/reference/get/statuses/user_timeline client.get('statuses/user_timeline', { screen_name: screen_name, since_id: funicularData.twitterUsersData[screen_name].lastTweetIDstr }, function (error, tweets, response) { if (!error) { if (tweets.length) { // great! fishing has been good ☺ // TODO (!!!) Update last tweet information in funicularData tweets.map(function (tweet) { //console.dir(tweet.text); funicularData.twitterUsersData[screen_name] = {}; funicularData.twitterUsersData[screen_name].lastTweetID = tweet.id; funicularData.twitterUsersData[screen_name].lastTweetIDstr = tweet.id_str; funicularData.twitterUsersData[screen_name].lastTweetCreateAt = tweet.created_at; //writeToData(funicularData); // ?? Is cache enough for that ? sendNewTweetToTelegram(tweet); }); } else { // console.log(" └ no new status found for " + screen_name); } } }); });
function twitter(reqTwitterName){ var Twitter = require('twitter'); var client = new Twitter({ consumer_key: keyFile.twitterKeys.consumer_key, consumer_secret: keyFile.twitterKeys.consumer_secret, access_token_key: keyFile.twitterKeys.access_token_key, access_token_secret: keyFile.twitterKeys.access_token_secret }); var params = {screen_name: reqTwitterName , count:20}; client.get('statuses/user_timeline', params, function(error, tweets, response){ //uncomment below for error checking //console.log(tweets) if (!error) { console.log("\n---------------------------------------\n"); for(i = 0; i < params.count; i++){ console.log("@" + tweets[i].user.screen_name); console.log("Tweet " + "#" + (i + 1) + ": " + tweets[i].text); console.log("Created: " + tweets[i].created_at + "\n"); } console.log("\n---------------------------------------\n"); liriPrompter(); } }); }
return new Promise(function (resolve, reject) { client.get('statuses/user_timeline', { screen_name: userName, exclude_replies: true, include_rts: true, contributor_details: false, trim_user: true, count: 200, max_id: max_id, }, function (error, tweets) { if (error) { return reject(error); } const texts = (tweets || []).map(function (tweet) { return tweet.text; }); console.log("got", tweets.length, "tweets"); return resolve({ text: texts.join('\n'), max_id: tweets.reduce(function (acc, tweet) { if (!tweet.id) { return acc; } if (!acc || !acc.lessThan || acc.lessThan(tweet.id)) { return tweet.id; } }, undefined) }); }); });
app.post('/twitter', function(req,res){ var params = { q: req.body.hashtag, count:1 }; client.get('search/tweets', params, function(error, tweets, response){ if (!error) { var data = {}; for(var k in tweets.statuses){ console.log(tweets.statuses[k]); data[k] = { time: tweets.statuses[k].created_at, text: tweets.statuses[k].text, user: tweets.statuses[k].user.screen_name, name: tweets.statuses[k].user.name, followers: tweets.statuses[k].user.followers_count, friends: tweets.statuses[k].user.friends_count, image: tweets.statuses[k].user.profile_image_url }; } res.json(data); } }); });
function myTweets(){ var client = new Twitter({ consumer_key: keys.twitterKeys.consumer_key, consumer_secret: keys.twitterKeys.consumer_secret, access_token_key: keys.twitterKeys.access_token_key, access_token_secret: keys.twitterKeys.access_token_secret }); //twitter function parameters: var parameters = { twitterHandle: 'thecomparatist', count: 20 }; //get method to get statuses from twitter client.get("statuses/user_timeline", parameters, function(error, tweets, response){ if (!error && response.statusCode == 200) { for(var i = 0; i < tweets.length; i++){ console.log(tweets[i].text + "Created on:" + tweets[i].created_at + "\n"); } console.log("================" + "\n"); } else { console.log(error); } }); };
// Twitter function function showTweets(){ var twitterKeys = keysFile.twitterKeys; var client = new Twitter(twitterKeys); var params = { screen_name: 'anghelramona30', count: "20" }; client.get('statuses/user_timeline', params, function(error, tweets, response) { if(error) { throw error; } for(var i = 0; i < tweets.length; i++){ tweetText = tweets[i].text; tweetTime = tweets[i].created_at; console.log(tweetText + " Posted on: " + tweetTime); } }) }
app.get('/', function(req, res) { function do_render(tweets) { res.render('index', { copy: (new Date()).getFullYear(), lang: 'en', page: req.query.page || 'main', title: 'The Awesome Feed', tweets: tweets }); } // get the tweets if (__debug) { __twitter_client = require('./js/sample-twitter-feed'); do_render(__twitter_client.data); } else { __twitter_client = new twitter(__profile); __twitter_client.get( 'https://api.twitter.com/1.1/statuses/user_timeline.json' + '?screen_name=' + (__params.screen || 'hrobertking') + '&count=' + (__params.count || 10), function(error, tweets, response) { do_render(tweets); } ); } });
return new Promise((resolve, reject) => { // See: https://dev.twitter.com/rest/reference/get/search/tweets const payload = { q: query, count: MAX_TWEETS, lang: TWEET_LANG }; client.get('search/tweets', payload, (err, data) => { if (err) { return reject(err); } // Only extract the fields we want to use! const tweets = []; for (let i = 0; i < data.statuses.length; i++) { const tweet = data.statuses[i]; tweets.push({ createdAt: tweet.created_at, id: tweet.id_str, text: tweet.text, user: { createdAt: tweet.user.created_at, id: tweet.user.id_str, screenName: tweet.user.screen_name } }); } return resolve(tweets); }); });
module.exports = (text, num, callback) => { const twit = new Twitter(config); twit.get('search/tweets', {q: text, count: num}, (error, tweets, response) => { callback(tweets.statuses); }); }
.exec(function(err, tweets){ if (err) return next(err); var reqIds = _.map(tweets, function(tweet){return tweet.id_str}).toString(); twClient.get('statuses/lookup', {id: reqIds, include_entities: true}, function(err, tweets, response){ if (err) return next(err); if(response.statusCode == 429){ console.log('No requests left'); res.status(429).send('Слишком много запросов'); }else{ //Update db info tweets.forEach(function(element, i){ Tweet .update( {id_str: element.id_str}, { $set:{ favorite_count: element.favorite_count, retweet_count: element.retweet_count } }, function(err){ if(err) return next(err); } ); }); //Sort descending by retweets + likes tweets = _.sortBy(tweets, function(tweet){return(-(tweet.retweet_count + tweet.favorite_count))}); res.status(200).send(tweets); } }); });
return function(fn) { client.get('statuses/user_timeline', { user_id: user_id, exclude_replies: true, count: 200 }, function(err, data, res) { if (err) fn(err, null); if (res.headers['x-rate-limit-remaining'] < 1) fn([{ code: 88, message: 'About to exceed rate limit' }], null); fn(null, { data: data, res: res }); }); };
//twitter function function twitterCall() { var client = new twitter({ consumer_key: twitterKeys.twitterKeys.consumer_key, consumer_secret: twitterKeys.twitterKeys.consumer_secret, access_token_key: twitterKeys.twitterKeys.access_token_key, access_token_secret: twitterKeys.twitterKeys.access_token_secret }); var twitterUser = '******'; twitterUser = params[1]; params = { screen_name: twitterUser }; client.get('statuses/user_timeline', params, function(error, data, response) { if (error) { throw error; } for (var i = 0; i < data.length; i++) { var twitterResults = "@" + data[i].user.screen_name + ": " + data[i].text + "\r\n" + data[i].created_at + "\r\n" + "------- End Tweet -------" + "\r\n"; console.log(twitterResults); logData(twitterResults); } }) };
return function(fn) { client.get('friends/list', { screen_name: screen_name, cursor: cursor, count: 200, skip_status: true }, function(err, data, res) { if (err) fn(err, null); if (res.headers['x-rate-limit-remaining'] < 1) fn([{ code: 88, message: 'About to exceed rate limit' }], null); fn(null, { data: data, res: res }); }); };
router.get('/dictionary/:wordId', function (req, res, next) { console.log('second route (Twitter)'); var word = res.wordData.word; res.wordData.twitter = {}; var twitSearch = "https://api.twitter.com/1.1/search/tweets.json?"; twitSearch += "q="; twitSearch += "lang%3Aen%20" // 'lang:en ' twitSearch += "%23" + word; // '#word' twitSearch += "&result_type=recent"; console.log('second route About to call Twitter.get() with' + twitSearch ); twitClient.get(twitSearch, twitParams, function (error, tweets, response) { console.log('second route Inside twitter callback ...'); if (error) { console.error("Twitter FAIL!"); console.error(error); } else { console.log('second route Twitter SUCCESS! ...'); res.wordData.twitter = tweets; } console.log('second route Done with twitter, returning to client ...'); res.status(200).json(res.wordData); }); });
module.exports = function(callback) { tw.get('application/rate_limit_status', { resources: 'search' }, callback) }
function getTweet(id){ var options = { screen_name: 'RealDonaldTrump', count: 200 }; // If we've sent an ID to page from, use it if(id) options.max_id = id; client.get('statuses/user_timeline', options, function(err, tweets, response){ if(err) console.log(err); // If we're past the first request, we'll need to shift off the first element, // because it's duplicated from the final item of the previous request if(id) tweets.shift() // Add new tweets to ammassed array allTweets = allTweets.concat(tweets); console.log(allTweets.length); // If we've hit the limit, shut it down if(allTweets.length > 3200) return true; // Write to file fs.writeFileSync("culmulative.json", JSON.stringify(allTweets)); // Dive back in getTweet(tweets[tweets.length - 1].id_str); }); }
var job2 = new CronJob('0 */1 * * * *', function() { console.log('checking polls'); client.get('statuses/user_timeline', {screen_name: "ghostwhovotes", exclude_replies: true, count: 40}, function(error, tweets, response) { for (var i=0; i<tweets.length; i++) { if ((String(tweets[i].text)).match(regex)) { // Name of Poll var pollname = (String(tweets[i].text).match(regex3))[0]; // Each Party var parties = String(tweets[i].text).match(regex2); var partyResults = {}; var otherResult = 100.0; for(var j=0; j<parties.length; j++) { partyResults[parties[j].match(regex4)[0]] = parties[j].match(regex4)[1]; } for (var key in partyResults) { otherResult -= partyResults[key]; } partyResults['Other'] = otherResult; var result = {poll:pollname, info:partyResults}; jsonCreated.push(result); } } fs.writeFile('polls.json', JSON.stringify(jsonCreated), (err) => { if (err) throw err; console.log('Polls retrieved\t\t' + (new Date()).toTimeString()); }); jsonCreated = []; }); }, null, false, 'Australia/Melbourne');
vertifyCredentials: (callback) => { Client.get('account/verify_credentials', (error, event, response) => { if (error) { // retry vertifyCredentials if limit if (error.code == 'ENOTFOUND') { App.showMsgBox('인터넷 또는 서버가 불안정합니다. 자동으로 서버에 접속을 시도합니다', 'tomato', 3000); return setTimeout(() => App.vertifyCredentials(callback), 1000); } else if (error[0].code == 88) { App.showMsgBox('API 리밋으로 연결이 지연되고 있습니다. 잠시만 기다려 주세요', 'tomato', 12000); return setTimeout(() => App.vertifyCredentials(callback), 10000); } else { App.showMsgBox('알 수 없는 문제로 연결이 지연되고 있습니다. 잠시만 기다려 주세요', 'tomato', 12000); return setTimeout(() => App.vertifyCredentials(callback), 10000); } } else { App.clearMsgBox(); App.id_str = event.id_str; App.name = event.name; App.screen_name = event.screen_name; } if (callback) callback(error); }); },
function getMentions(handle, callback) { if (handle[0] != '@') { handle = '@' + handle; } params = {q: handle, count: 100}; twitterClient.get('search/tweets', params, function(errors, response){ if (errors) { // twitter likes to send back an array of objects that aren't actually Error instances.. and there's usually just one object if (!Array.isArray(errors)) { errors = [errors]; } var messages = errors.map(function(err){ return err.message }).join('\n'); var e = new Error(messages); e.code = errors[0].code; e.errors = errors; return callback(e) } var tweets = response['statuses'] .filter(englishAndNoRetweet) .map(toContentItem); if (tweets.length == 0) { var e2 = new Error('No suitable mentions found for @' + handle); e2.error = 'content-is-empty'; e2.code = 400; return callback(e2); } callback(null, toText(tweets)) }); }