/** * Created by WebStorm. * User: martin * Date: 30/04/2020 * Time: 12:24 */ const Twitter = require('twitter-lite'); require('dotenv').config(); const dbmanager = require('./server/db/dbmanager'); const client = new Twitter({ 'consumer_key' : process.env.TWITTER_CONSUMER_KEY, 'consumer_secret' : process.env.TWITTER_CONSUMER_SECRET, 'access_token_key' : process.env.TWITTER_ACCESS_TOKEN_KEY, 'access_token_secret' : process.env.TWITTER_ACCESS_TOKEN_SECRET }); const accounts = [ {'name':'nationalrailenq', 'id':33546465}, {'name':'networkrail', 'id':365344176}, {'name':'NetworkRailSCOT', 'id':402687948}, {'name':'AvantiWestCoast', 'id':1143560758476906497}, {'name':'CalSleeper', 'id':2870293725}, {'name':'CrossCountryUK', 'id':153368708}, {'name':'Eurostar', 'id':98412169}, {'name':'EurostarUK', 'id':59742254}, {'name':'GatwickExpress', 'id':163816182}, {'name':'GlasgowSubway', 'id':224607925}, {'name':'GWRHelp', 'id':15589815}, {'name':'HeathrowExpress', 'id':20240678}, {'name':'LNER', 'id':313306238}, {'name':'LNRailway', 'id':910487328627535872}, {'name':'northernassist', 'id':194512268}, {'name':'ScotRail', 'id':61569136}, {'name':'Stansted_Exp', 'id':257511611}, {'name':'TfL', 'id':47319664}, {'name':'WestMidRailway', 'id':915554470175657984}, {'name':'NetworkRailBHM', 'id':583910976}, {'name':'NetworkRailEDB', 'id':586614081}, {'name':'NetworkRailEUS', 'id':581807264}, {'name':'NetworkRailGLC', 'id':421061171}, {'name':'NetworkRailKGX', 'id':459192871}, {'name':'NetworkRailLST', 'id':581826097}, {'name':'NetworkRailMAN', 'id':583895871}, {'name':'NetworkRailVIC', 'id':587354752}, {'name':'BTP', 'id':266094415}, {'name':'BTPAvonSomerset', 'id':738664125132345344}, {'name':'BTPBhm', 'id':952003488}, {'name':'BTPBlackCountry', 'id':767698362866999297}, {'name':'BTPCambs', 'id':2574726074}, {'name':'BTPCardiff_NWP', 'id':951714852}, {'name':'BTPEAnglia', 'id':4479942923}, {'name':'BTPEssex', 'id':2949032015}, {'name':'BTPGtrMcr', 'id':1670204977}, {'name':'BTPLeics', 'id':761147194598711296}, {'name':'BTPLiverpoolSt', 'id':951912242}, {'name':'BTPLondon', 'id':957226980}, {'name':'BTPLondonBridge', 'id':3346645594}, {'name':'BTPMersey', 'id':951748434}, {'name':'BTPNorthScot', 'id':2238888007}, {'name':'BTPNorthWales', 'id':951487338}, {'name':'BTPOxon', 'id':741228701791178753}, {'name':'BTPPontypridd', 'id':1672678292}, {'name':'BTPScotland', 'id':957256160}, {'name':'BTPSouthYorks', 'id':3384315676}, {'name':'BTPTeesValley', 'id':802182849872936962}, {'name':'BTPUnderground', 'id':986236195049897985}, {'name':'BTPWales', 'id':1430734374}, {'name':'BTPWaterloo', 'id':951997044}, {'name':'BTPWestScot', 'id':951757261} ]; // {'name':'', 'id':}, (async function(){ /* const response = await user.getBearerToken(); const app = new Twitter({ bearer_token: response.access_token });*/ const cleanDB = async function(){ const aDay = 86400000; const now = new Date().getTime() ; const oldDate = now - (15 * aDay); console.log('Clean up to:', oldDate ); await dbmanager.deleteUpTo(oldDate).then((v) => { console.log(v); }).catch((err) => { console.error(err); }); await dbmanager.vacuum().then((v) => { console.log(v); }).catch((err) => { console.error(err); }); }; const validAccounts = accounts.map(item => { return item.id; }) const parameters = { follow: validAccounts.join(',') // Scotrail, networkrailScot, networkrail, nationalrail, tfl, avantiwestcoast } console.log('Starting:', parameters); await cleanDB(); const stream = client.stream("statuses/filter", parameters) .on("start", response => console.log('Started!')) .on("data", tweet => { console.log('>> data', tweet); dbmanager.insertOne(tweet).then((v) => { console.log(v); }).catch((err) => { console.error(err); }); }) .on("ping", () => console.log('>> ping')) .on("error", error => console.error(error)) .on("end", response => { console.error('Stopped!'); console.log(response); process.exit(1); }); })();