Hur man bygger en Photo Tweeting Twitter Bot med Raspberry Pi och Node.js

Hur man bygger en Photo Tweeting Twitter Bot med Raspberry Pi och Node.js / Programmering

Letar du efter ett sätt att göra Twitter mer användbart, om bara för andra människor? Ett sätt är att skapa en automatiserad Twitter-bot som tweetar bilder med användbara beskrivningar. Du kan göra det manuellt ... eller du kan bygga den med Node.js och värd det på en Raspberry Pi. Läs vidare för att få reda på hur.

Varför Bygg en Twitter Bot?

Om du någonsin varit på Twitter och sett konton som skickar foton, fakta eller teckningar etc., är det överväldigande sannolikt att dessa är automatiserade. Det är ett bra sätt att bygga en publik av personer som är intresserade av samma ämne.

Men det finns en annan anledning, bortom retweets och följer. Att bygga en Twitter bot kommer att lära dig några användbara programmeringsfärdigheter. Vi har tidigare tittat på hur man bygger en grundläggande Twitter-bot med Python Hur man bygger en hallon Pi Twitter Bot Hur man bygger en hallon Pi Twitter Bot Twitter är världens största förråd av korta meddelanden från personer som inte har något att säga - och nu också kan bidra till det episka projektet med en automatiserad Twitter bot, driven av din hallon ... Läs mer (även om en Raspberry Pi), men den här gången tar vi ett annat tillvägagångssätt.

I det här projektet ska vi använda Node.js för att bygga en foto-tweeting bot på en Raspberry Pi. Fotona kommer att vara bilder från första världskriget, åtföljd av en kort mening och tillskrivning). Denna information lagras i en array, en grundläggande databas Så vad är en databas, hur som helst? [MakeUseOf Explains] Så vad är en databas, hur som helst? [MakeUseOf Förklarar] För en programmerare eller en teknikentusiast är begreppet en databas något som verkligen kan tas för givet. Men för många människor är begreppet en databas i sig lite utländsk ... Läs mer .

Kom igång: Bygg din databas

Om du vill bygga en bild tweeting bot, måste du börja med att samla de bilder du vill dela. Dessa ska antingen vara dina egna bilder eller de som du har förvärvat under en Creative Commons eller någon annan öppen källkodslicens.

Du bör också hålla anteckningar om tillskrivning och annan information som du vill gå med bilderna. Vi kommer tillbaka till den här informationen senare, när boten är igång.

Installera Node.js på Raspbian

Börja med att installera Node.js. Du bör redan ha en Raspberry Pi igång, med Raspbian installerad Så här installerar du ett operativsystem till din hallon Pi Så här installerar du ett operativsystem till din Raspberry Pi Så här får du ett nytt OS installerat och kört på din Pi - och hur att klona din perfekta inställning för snabb katastrofåterställning. Läs mer . För detta projekt rekommenderar vi en Raspberry Pi 2 eller senare; Projektet testades på Raspberry Pi 3 B + Hur man bestämmer om du behöver den nya Raspberry Pi 3 B + Modell Hur man bestämmer om du behöver den nya Raspberry Pi 3 B + Modell Den nya Raspberry Pi 3 B + har släppts. Hur mycket kostar det, vilken hård specifikation har den och kommer den att förbättra dina befintliga projekt? Vi har svar. Läs mer .

I terminalen (eller via SSH VNC, SSH och HDMI: Tre alternativ för att visa din Raspberry Pi VNC, SSH och HDMI: Tre alternativ för att se din Raspberry Pi Raspberry Pi är en anmärkningsvärd liten dator, men det kan vara tidskrävande att ställa in upp och anslut den till din bildskärm. Läs mer), uppdatera systempaketlistan och uppgradera till den senaste versionen:

sudo apt-get uppdatering sudo apt-get dist-uppgradering

Följ anvisningarna på skärmen och vänta medan Pi uppdateras. När du är klar, starta om med

sudo omstart

När du är klar, använd curl för att ladda ner Node.js:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Installera sedan med

sudo apt-get install -y nodejs

När allt är klart, kör en check för att säkerställa att programvaran installerats korrekt. Det enklaste är att leta efter versionsnummer:

nod -v

Svaret ska vara något som v8.11.3 (eller högre). Om du ser något så, kan du vara säker på att Node.js är redo att användas.

Bygg din Twitter Bot

Nästa steg är att mata in koden som skapar boten. Börja med att skapa en katalog:

mkdir twitterbot

Ändra sedan till den nya katalogen för din bot:

cd twitterbot

Skapa en fil som heter server.js här

sudo nano server.js

I den här filen anger du en enda rad:

console.log ('Jag är en Twitter bot!');

Tryck Ctrl + X att spara och avsluta, kör sedan skriptet:

nod "/home/pi/twitterbot/server.js"

Detta bör returnera frasen “Jag är en Twitter-bot!”. Nu när du har bekräftat att detta fungerar, är det dags att installera Twit-biblioteket med npm (de Node Package Manager). Se till att det här är installerat genom att ange:

npm -v

Återigen bör du se ett versionsnummer som visas.

Följ detta med:

npm init

Detta börjar genom att ge dig information om den Node.js-app du skapar. Standardalternativ visas (så här) så du kan bara trycka på Enter för att acceptera dem. Du kan också välja att ange dina egna detaljer också. När denna konfiguration är över kommer du att bli ombedd att bekräfta detaljerna med “ja”.

Nästa steg är att installera Twit-modulen från npm.

npm installera twit -save

Vänta medan filerna hämtas i underkatalogen node_modules. När det är klart, öppna server.js-filen igen i nano.

sudo nano server.js

Ta bort kommandot du skrev in tidigare, ersätt det med:

var fs = kräver ('fs'), sökväg = kräver ('path'), Twit = kräver ('twit'), config = kräver (path.join (__ dirname, 'config.js'));

Spara och avsluta som tidigare.

Skapa en Twitter-app

För att skapa en fungerande Twitter-bot måste du skapa en Twitter-app. Det här är en enkel process som kräver att du först registrerar dig för ett nytt Twitter-konto. Observera att detta också kräver ett telefonnummer för att verifiera kontot, och när det är klart, gå till developer.twitter.com för att skapa appen.

Om du inte har ett utvecklarkonto kan det ta lite tid, eftersom det finns en viss mängd fyllning som behövs. Detta är ett steg Twitter har tagit för att undvika spam, så ta din tid och svara på frågorna noggrant.

Klick Skapa en app, och lägg till detaljerna efterfrågad. I skrivande stund genomgår utvecklarens system en översyn, så du kan behöva vänta några dagar (och svara på några ytterligare frågor).

Nästa byt till Nycklar och nycklar fliken och under Behörigheter hitta Tillgångstillstånd och se till att den är inställd på Läsa och skriva (använda sig av Redigera om inte). Växla sedan till nycklar och nycklar och notera följande:

  • Konsumentnyckel
  • Konsumenthemlighet

Under Access token klickar du på Skapa att generera:

  • Åtkomsttoken
  • Access Token Secret

Dessa är de API-nycklar som du behöver för att ge bot åtkomst till ditt Twitter-konto.

Tillbaka i kommandoraden, skapa config.js i nano:

sudo nano config.js

Lägg till följande

var config = consumer_key: 'XXXXX', consumer_secret: 'XXXXX', access_token: 'XXXXX', access_token_secret: 'XXXXX' module.exports = config;

Där det står "XXXXX", ersätt dina egna motsvarande API-nyckeltal.

Spara och avsluta, öppna sedan server.js.

sudo nano server.js

Lägg till följande rader i slutet av filen:

var T = ny Twit (config); T.post ('statuses / update', status: 'Min första tweet!', Funktion (fel, data, svar) console.log (data));

Det ska se ut så här:

Återigen, spara och avsluta, sedan på kommandoraden, skriv in

nod server.js

Öppna ditt Twitter-konto i webbläsaren för att se resultaten:

Du har bekräftat att boten är tweeting, så det är dags att ge det något att göra!

Skapa din mapp av bilder

För att tweeta foton kopierar du de bilder du samlat in i en mapp (vanligtvis namngiven bilder). Börja med ett dussin eller så.

Därefter återgår du till server.js-dokumentet:

sudo nano server.js

Ta bort koden som skickade tweet här, linjen som börjar T.post ('statuser / update').

Därefter ersätt detta med en funktion som heter random_from_array. Detta kommer att välja en bild slumpmässigt från bildmappen.

funktion random_from_array (bilder) returnera bilder [Math.floor (Math.random () * images.length)]; 

När du har gjort det måste du lägga till en andra funktion, upload_random_image:

funktion upload_random_image (bilder) console.log ('Öppna en bild ...'); var image_path = path.join (__ dirname, '/ images /' + random_from_array (bilder)), b64content = fs.readFileSync (image_path, encoding: 'base64'); console.log ("Ladda upp en bild ..."); T.post ('media / upload', media_data: b64content, funktion (fel, data, svar) om (err) console.log ('ERROR:'); console.log console.log ('Bild uppladdad!'); console.log ('Now tweeting it ...'); T.post ('statuser / uppdatering', media_ids: new Array (data.media_id_string), funktion , svar) om (err) console.log ('ERROR:'); console.log (err); else console.log ('Postat en bild!'););); 

Den här funktionen hämtar en bild slumpmässigt från bildmappen, och en gång valdes laddas upp till Twitter med hjälp av Media / Upload API.

Lägg sedan till följande kod. Detta kommer att hitta bilder katalogen, och ta en bild från den, posta en slumpmässig var 60: e sekund. Du kan (och borde) redigera denna tidpunkt, som är representerad i koden med siffran 60000. Längre luckor är tillrådliga.

 setInterval (funktion () upload_random_image (bilder);, 60000); );

Spara detta med Ctrl + X, sedan ja för att spara. (Du kan hitta hela koden för detta projekt på GitHub).

En enda användning av nod server.js Kommando kommer sedan att be om bilderna för att börja tweeting! (Om du behöver avsluta inläggen trycker du på Ctrl + Z för att avbryta server.js-skriptet.)

Lägga till text i dina foto tweets

Om du behöver lägga till text i dina bilder kan detta göras med hjälp av en array. Arrayen kommer att referera till filnamnen på bilderna och lista texten som ska läggas till. Till exempel kan du lägga till attribut till bilder som du inte tog. Eller du kan lägga till några fakta eller ett citat.

Börja med att skapa images.js

sudo nano images.js

Här lägger du till följande kod. Det här är en array med två element, fil och källa. Dessa innehåller filnamnet på bilden och attributet (typiskt en URL).

var images = [fil: 'image0001.png', källa: 'http://www.example.com/image0001.png', fil: 'image0002.png', källa: 'http: // www. example.com/image0002.png ',]

Upprepa vid behov för varje bild, och avsluta filen images.js med:

module.exports = bilder;

Spara och stäng filen, öppna sedan server.js igen och lägg till den i listan över variabler:

images = kräver (path.join (__ dirname, 'images.js'));

Spara och avsluta, starta om kvitteringen med Twitter nod server.js kommandot igen.

Du kan också använda “källa” fält för att inkludera lite text, förklarar bakgrunden på bilden. Detta kan inkluderas vid sidan av webbadressen.

Din första Twitter Bot, redo att återanvända!

Vid det här laget borde du ha en auto-posting Twitter-bot igång, dela bilder, fakta och attribut på ditt givna ämne.

För att sammanfatta är processen:

  • Samla dina foton
  • Installera Node.js
  • Bygg din Twitter-bot
  • Ansök om utvecklarstatus på Twitter
  • Skapa en Twitter-app
  • Lägg till en attribution array
  • Börja tweeting!

Kanske är det bästa med detta att koden kan användas för att tweeta foton, fakta och attribut på bokstavligen något ämne.

Vill du veta vilka andra robotar du kan köra med en liknande inställning? Kolla vår lista över de bästa Twitter botprojekten för Raspberry Pi 10 Best Twitter Bot Projekt för Raspberry Pi 10 Bästa Twitter Bot Projekt för Raspberry Pi Läs mer !

Utforska mer om: DIY Project Tutorials, JavaScript, Raspberry Pi, Twitter.