UNPKG

carabistouille-twitter

Version:

Tweet some fancy french insults

125 lines (124 loc) 4.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Twitter = require('twitter'); var gis = require('g-i-s'); var download = require('download-file'); var fs = require('fs'); var carabistouille_lib_1 = require("carabistouille-lib"); var SECOND = 1000; var MINUTE = SECOND * 60; var client = null; 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 }); function connect() { client.stream('statuses/filter', { track: 'robienTeDeteste' }, function (stream) { stream.on('error', function (error) { console.log('error : ' + error); }); stream.on('data', function (tweet) { if (tweet.user.screen_name != "robienTeDeteste") { var statement = "@" + tweet.user.screen_name + " " + carabistouille_lib_1.generateInsult(); var tweetToReplyId = "" + tweet.id_str; client.post('statuses/update', { status: statement, in_reply_to_status_id: tweetToReplyId }, function (err, reply) { }); } }); }); } function uploadImageWithGoogleSearch(textShort, cb) { var mediaId = ""; if (textShort) { gis(textShort, function (error, results) { if (error) { console.log(error); cb(""); } else { var uploadMedia_1 = function (url) { download(url, { filename: 'tmp' }, function (err) { if (err) { cb(""); } else { var data = require('fs').readFileSync('tmp'); client.post('media/upload', { media: data }, function (error, media, response) { fs.unlink('tmp'); if (error) { cb(""); } else { cb(media.media_id_string); } }); } }); }; var i_1 = 0; var uploadMediaCB_1 = function (id) { if (id == "") { i_1++; if (i_1 < 10 && results.length > i_1 && results[i_1].url) { uploadMedia_1(results[i_1].url, uploadMediaCB_1); } else { cb(""); } } else { cb(id); } }; uploadMedia_1(results[i_1].url, uploadMediaCB_1); } }); } } function tweetWithMedia(text, cb, mediaId) { var status = {}; if (mediaId && mediaId.length > 0) { status = { status: text, media_ids: mediaId }; } else { status = { status: text }; } client.post('statuses/update', status, function (error, tweet, response) { if (error) { cb(JSON.stringify(error)); } else { cb(""); } }); } function tweet(text, cb, textShort) { if (textShort) { uploadImageWithGoogleSearch(textShort, function (id) { tweetWithMedia(text, cb, id); }); } else { tweetWithMedia(text, cb); } } function insultRegularyEverybody(delay) { setTimeout(function () { insultRegularyEverybody(delay); }, delay); var insult = carabistouille_lib_1.generateInsultFull(); tweet(insult.long, function (err) { if (err === "") { console.log("tweeted : " + insult.long); } else { console.log("error : " + err); } }, insult.short); } function run() { connect(); insultRegularyEverybody(20 * MINUTE); } exports.run = run; run();