Cómo construir un bot de Twitter de fotos con Raspberry Pi y Node.js
¿Está buscando una manera de hacer que Twitter sea más útil, aunque solo sea para otras personas? Una forma es crear un robot automatizado de Twitter que twittea imágenes con descripciones útiles. Puedes hacer esto manualmente ... o puedes construirlo con Node.js y alojarlo en una Raspberry Pi. Sigue leyendo para descubrir cómo.
¿Por qué construir un bot de Twitter??
Si alguna vez has estado en Twitter y has visto cuentas que publican fotos, hechos, dibujos animados, etc., es muy probable que estos estén automatizados. Es una excelente manera de crear una audiencia de personas interesadas en el mismo tema..
Pero hay otra razón, más allá de retweets y sigue. Construir un bot de Twitter te enseñará algunas habilidades útiles de programación. Anteriormente, vimos cómo construir un bot de Twitter básico con Python. Cómo construir un bot de Twitter de Raspberry Pi. Cómo construir un bot de Twitter de Raspberry Pi. Twitter es el depósito más grande del mundo de mensajes cortos de personas sin nada que decir, y ahora usted también puede contribuir a ese proyecto épico con un robot de Twitter automatizado, impulsado por tu Raspberry ... Leer más (también en una Raspberry Pi), pero esta vez estamos adoptando un enfoque diferente.
En este proyecto, vamos a utilizar Node.js para construir un bot de tweeting de fotos en una Raspberry Pi. Las fotos serán fotos de la Primera Guerra Mundial, acompañadas de una breve oración y una atribución). Esta información se almacenará en una matriz, una base de datos básica. Entonces, ¿qué es una base de datos? [MakeUseOf explica] Entonces, ¿qué es una base de datos, de todos modos? [MakeUseOf Explica] Para un programador o un entusiasta de la tecnología, el concepto de una base de datos es algo que realmente se puede dar por sentado. Sin embargo, para muchas personas, el concepto de una base de datos en sí es un poco extraño ... Leer más .
Comience: construya su base de datos
Si desea crear un bot de tweeting de fotos, deberá comenzar por recopilar las imágenes que desea compartir. Estas deben ser sus propias imágenes o las que haya adquirido bajo una licencia Creative Commons o alguna otra licencia de código abierto..
También debe tener en cuenta la atribución y otra información que desee que acompañe a las imágenes. Volveremos a esta información más adelante, una vez que el bot esté en funcionamiento.
Instala Node.js en Raspbian
Comience por instalar Node.js. Ya debe tener una Raspberry Pi en funcionamiento, con Raspbian instalado. Cómo instalar un sistema operativo en su Raspberry Pi. Cómo instalar un sistema operativo en su Raspberry Pi. Aquí le indicamos cómo instalar y ejecutar un nuevo sistema operativo en su Pi: cómo para clonar su configuración perfecta para una rápida recuperación de desastres. Lee mas . Para este proyecto, recomendamos una Raspberry Pi 2 o posterior; el proyecto se probó en el Raspberry Pi 3 B + Cómo decidir si necesita el nuevo modelo de Raspberry Pi 3 B + Cómo decidir si necesita el nuevo Modelo de Raspberry Pi 3 B + Se lanzó el nuevo Raspberry Pi 3 B +. ¿Cuánto cuesta, qué especificación dura tiene, y mejorará sus proyectos existentes? Tenemos respuestas. Lee mas .
En la terminal (oa través de SSH VNC, SSH y HDMI: tres opciones para ver tu Raspberry Pi VNC, SSH y HDMI: tres opciones para ver tu Raspberry Pi La Raspberry Pi es una computadora pequeña y notable, pero puede llevar mucho tiempo configurarlo actualícelo y conéctelo a su monitor. Lea más), actualice la lista de paquetes del sistema y actualice a la última versión:
sudo apt-get update sudo apt-get dist-upgrade
Siga las instrucciones en pantalla y espere mientras se actualiza su Pi. Una vez que hayas terminado, reinicia con
reinicio de sudo
Cuando hayas terminado, usa curl para descargar Node.js:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
A continuación, instálalo con
sudo apt-get install -y nodejs
Cuando haya terminado, ejecute una comprobación para asegurarse de que el software se haya instalado correctamente. Lo más fácil es verificar el número de versión:
nodo -v
La respuesta debe ser algo como v8.11.3 (o superior). Si ve algo así, puede estar seguro de que Node.js está listo para usar.
Construye tu bot de Twitter
La siguiente etapa es ingresar el código que creará el bot. Comience creando un directorio:
mkdir twitterbot
Luego, cámbielo al nuevo directorio para su bot:
cd twitterbot
Aquí, crea un archivo llamado server.js
sudo nano server.js
En este archivo, ingrese una sola línea:
console.log ('¡Soy un bot de Twitter!');
prensa Ctrl + X para guardar y salir, luego ejecute el script:
nodo '/home/pi/twitterbot/server.js'
Esto debería devolver la frase. “Soy un bot de Twitter!”. Ahora que ha confirmado que esto está funcionando, es hora de instalar la biblioteca Twit con npm (la Gestor de paquetes del nodo). Asegúrate de que esto esté instalado ingresando:
npm -v
De nuevo, debería ver un número de versión mostrado.
Sigue esto con:
npm init
Esto comienza solicitándole información sobre la aplicación Node.js que está creando. Las opciones predeterminadas se muestran (como esto), por lo que solo puede tocar Enter para aceptarlas. Usted puede optar por introducir sus propios detalles también. Una vez finalizada esta configuración, se le pedirá que confirme los detalles con “sí”.
La siguiente etapa es instalar el módulo Twit desde el npm.
npm instalar twit --save
Espere mientras los archivos se descargan en el subdirectorio node_modules. Una vez hecho esto, abra el archivo server.js de nuevo en nano.
sudo nano server.js
Aquí, elimine el comando que ingresó anteriormente, reemplazándolo con:
var fs = require ('fs'), path = require ('path'), Twit = require ('twit'), config = require (path.join (__ dirname, 'config.js'));
Guardar y salir como antes.
Crear una aplicación de Twitter
Para crear un bot de Twitter que funcione, deberás crear una aplicación de Twitter. Este es un proceso simple, que requiere que primero se registre para obtener una nueva cuenta de Twitter. Tenga en cuenta que esto también requiere un número de teléfono para verificar la cuenta, y una vez hecho esto, diríjase a developer.twitter.com para crear la aplicación.
Si no tiene una cuenta de desarrollador, esto puede llevar algo de tiempo, ya que es necesario completar cierta cantidad de formularios. Este es un paso que Twitter ha tomado para evitar el spam, así que tómate tu tiempo y responde las preguntas con precisión..
Hacer clic Crear una aplicación, y agregue los detalles según lo solicitado. Al momento de escribir, el sistema de desarrolladores se está revisando, por lo que es posible que tenga que esperar unos días (y responder algunas preguntas adicionales).
A continuación, cambie a la Llaves y fichas pestaña, y debajo Permisos encuentra el Permiso de acceso y asegúrese de que está configurado para Lee y escribe (utilizar Editar si no). Luego cambie a Llaves y fichas y tome nota de lo siguiente:
- Clave del consumidor
- Secreto del consumidor
En Access token, haga clic en Crear para generar:
- Token de acceso
- Secreto de acceso
Estas son las claves de API que necesitará para que el bot acceda a su cuenta de Twitter.
De vuelta en la línea de comandos, cree config.js en nano:
sudo nano config.js
Agrega lo siguiente
var config = consumer_key: 'XXXXX', consumer_secret: 'XXXXX', access_token: 'XXXXX', access_token_secret: 'XXXXX' module.exports = config;
Donde lea 'XXXXX', sustituya sus propios detalles de clave de API correspondientes.
Guarde y salga, luego abra server.js.
sudo nano server.js
Aquí, agregue las siguientes líneas al final del archivo:
var T = nuevo Twit (config); T.post ('status / update', status: 'My first tweet!', Función (err, data, response) console.log (data));
Debe tener un aspecto como este:
Nuevamente, guarde y salga, luego en la línea de comando, ingrese
nodo server.js
Abra su cuenta de Twitter en el navegador para ver los resultados:
Has confirmado que el bot está tuiteando, así que es hora de darle algo que hacer!
Crea tu carpeta de imágenes
Para twittear fotos, copie las imágenes que recopiló en una carpeta (normalmente llamada imagenes). Comenzar con una docena más o menos.
A continuación, vuelva al documento server.js:
sudo nano server.js
Aquí, elimine el código que envió el tweet, la línea que comienza con T.post ('status / update').
A continuación, sustituye esto por una función, llamada random_from_array. Esto seleccionará una imagen al azar de la carpeta de imágenes.
function random_from_array (images) return images [Math.floor (Math.random () * images.length)];
Una vez que hayas hecho esto, necesitarás agregar una segunda función, upload_random_image:
función upload_random_image (images) console.log ('Abriendo una imagen ...'); var image_path = path.join (__ dirname, '/ images /' + random_from_array (images)), b64content = fs.readFileSync (image_path, encoding: 'base64'); console.log ('Cargando una imagen ...'); T.post ('media / upload', media_data: b64content, función (err, datos, respuesta) if (err) console.log ('ERROR:'); console.log (err); else console.log ('Image uploaded!'); console.log ('Now tweeting it ...'); T.post ('status / update', media_ids: new Array (data.media_id_string), función (err, data , respuesta) if (err) console.log ('ERROR:'); console.log (err); else console.log ('Publiqué una imagen!');););
Esta función selecciona una imagen al azar de la carpeta de imágenes y, una vez seleccionada, se carga en Twitter mediante la API de medios / carga..
A continuación, agregue el siguiente código. Esto encontrará el directorio de imágenes, y tomará una imagen de él, publicando una al azar cada 60 segundos. Puede (y debe) editar este tiempo, que se representa en el código con la figura 60000. Se recomiendan espacios más largos..
setInterval (function () upload_random_image (images);, 60000); );
Guarda esto con Ctrl + X, entonces sí para guardar. (Puede encontrar el código completo para este proyecto en GitHub).
Un solo uso de la nodo server.js ¡El comando le pedirá a las fotos que comiencen a tuitear! (Si necesita terminar las publicaciones, presione Ctrl + Z para cancelar el script server.js)
Agregando texto a tus tweets de fotos
Si necesita agregar texto a sus imágenes, esto se puede hacer usando una matriz. La matriz se referirá a los nombres de archivo de las imágenes y enumerará el texto que se debe agregar. Por ejemplo, podría agregar atribución a las imágenes que no tomó. O puede agregar algunos datos o una cita.
Comience creando images.js
sudo nano images.js
Aquí, agregue el siguiente código. Esta es una matriz, con dos elementos, archivo y fuente. Estos contienen el nombre de archivo de la imagen y la atribución (normalmente una URL).
var images = [file: 'image0001.png', source: 'http://www.example.com/image0001.png', file: 'image0002.png', source: 'http: // www. example.com/image0002.png ',]
Repita según sea necesario para cada imagen, luego finalice el archivo images.js con:
module.exports = imagenes;
Guarde y cierre el archivo, luego abra server.js nuevamente y agregue esto a la lista de variables:
images = require (path.join (__ dirname, 'images.js'));
Guarde y salga, luego reinicie el bot de Twitter con el nodo server.js comando una vez más.
También puede utilizar el “fuente” campo para incluir algún texto, explicando el fondo de la imagen. Esto se puede incluir junto con la URL.
Tu primer bot de Twitter, listo para reutilizar!
En este momento, debe tener un robot de publicación automática en Twitter en funcionamiento, compartiendo fotos, hechos y atributos sobre su tema dado.
Para resumir, el proceso es:
- Recoge tus fotos
- Instala Node.js
- Construye tu bot de Twitter
- Solicite el estado de desarrollador en Twitter
- Crear una aplicación de Twitter
- Añadir una matriz de atribución
- Empezar a twittear!
Quizás lo mejor de esto es que el código se puede usar para tuitear fotos, hechos y atributos, literalmente, sobre cualquier tema..
¿Quieres saber qué otros bots podrías ejecutar con una configuración similar? Consulte nuestra lista de los mejores proyectos de bot de Twitter para la Raspberry Pi 10. !
Obtenga más información sobre: Tutoriales de proyectos de bricolaje, JavaScript, Raspberry Pi, Twitter.