carabistouille-twitter
Version:
Tweet some fancy french insults
125 lines (124 loc) • 4.18 kB
JavaScript
;
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();