node3

 

Una herramienta práctica e interesante para el Social media es el uso de bots para administrar redes sociales, ya sea posteando, siguiendo, visualizando  y etiquetando contenidos.

Hoy en día tenemos excelentes herramientas para automatizar diferentes tareas, ahorrándonos tiempo  y por supuesto... dinero, entre estas tenemos a node js y su ejército de librerias que nos facilitan la vida. 

Para poder seguir este post debes tener instalado correctamente node en tu computadora ademas de un editor de texto, te recomendamos el notepad ++, si no has instalado node en tu computadora puedes seguir este tutorial http://emb-ideas.com/index.php/blogs/blog-de-tito/41-creando-un-mini-chat-con-node-js

 

Una vez instalado nodejs lo primero que debemos hacer es instalar las librerias 'Twitter' https://www.npmjs.com/package/twitter, 'Socket.io' https://www.npmjs.com/package/socket.io y 'express' https://www.npmjs.com/package/express  y luego en su consola ubicarse en la carpeta donde tienen nodejs escribir las líneas:

npm install twitter
npm install express
npm install socket.io

Esperar a que la máquina haga lo suyo... y listo ya tenemos las librerías en nuestro servidor.

Ahora vamos con el servidor, nosotros lo llamaremos twitter.js, el nombre ya depende de ustedes. 

var Twitter = require('twitter');
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var PORT = process.env.PORT || 8080;
app.get('/',function(req,res){
    res.sendFile(__dirname + '/indext.html');
});
var client = new Twitter({
    consumer_key: '',
    consumer_secret: '',
    access_token_key: '',
    access_token_secret: ''
});
io.on('connection', function(socket) {
    socket.on('bot', function(confirm) {
        setInterval(function(){
            if(confirm=='start'){
                io.sockets.emit('bot','bot activado');
                client.get('search/tweets', {q: '#programacion ', result_type: "recent", language:'es'}, function(error,data,response) {
                     //stream.on('data', function(tweet) {
 
                    if (!error) {
                        console.log(data.statuses[0].text);
                             var retweetId = data.statuses[0].id_str;
                        client.post('statuses/retweet/' + retweetId, { }, function(error, response){
                             //console.log(tweet);
                        });
                         }
  
                     });
  
            }
            else{
                io.sockets.emit('bot','bot desactivado');
                console.log('esperando orden de activación');
            }
        },60000);
    });
});
  
http.listen(PORT,function(){
    console.log('el servidor esta escuchando el puerto %s',PORT);
});

 

El cliente indext.html

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
        <title>tweets</title>
  
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  
        <script src="/socket.io/socket.io.js"></script>
        <style>
            #container{
                overflow:scroll;
                width:200px;
                height:100px;
                border: 4px solid #1947A3;
            }
        </style>
        <script>
            var socket = io();
            $(function(){
                $("#start").on('click', function() { 
                    socket.emit('bot','start');
                    $("#container").text('Activando bot, puede tardar unos minutos...');
 
                });
                $("#stop").on('click', function() {
                    socket.emit('bot','stop');
                });
  
                socket.on('bot', function(msg) {
                    $("#container").text(msg);
  
                });
            });
        </script>
    </head>
    <body>
        <div id="container">
        </div>
        <button id="start">Activar Bot</button>
        <button id="stop">Desactivar Bot</button>
    </body>
</html>

 

Como pueden ver este bot lo que hace es buscar un tweet con el hashtag #programacion y retwittearlo, esta operación la hace cada 60 segundos

 

Cuando terminen lo unico que queda por hacer es poner en consola

node twitter.js

 Despues lo que deben hacer es abrir un navegador y en dirección poner http://Localhost:8080 y hacer click en Activar Bot

bot1

Deben esperar un minuto para que se active y en la consola pueden ver lo que se está retwitteando

bot2

consola

 

Tal vez les puede interesar este tutorial relacionado con la obtención de las claves para una aplicación de twitter

http://emb-ideas.com/index.php/blogs/blog-de-tito/39-enviando-tweets-desde-processing?highlight=WyJ0d2l0dGVyIiwiJ3R3aXR0ZXInIl0=