Slik bygger du et bilde som tweeter Twitter Bot med Raspberry Pi og Node.js
Annonse
Ser du etter en måte å gjøre Twitter mer nyttig, om bare for andre mennesker? En måte er å lage en automatisert Twitter-bot som tweets bilder med nyttige beskrivelser. Du kan gjøre dette manuelt ... eller du kan bygge det med Node.js og være vert for det på en Raspberry Pi. Les videre for å finne ut hvordan.
Hvorfor bygge en Twitter-bot?
Hvis du noen gang har vært på Twitter og sett kontoer som legger ut bilder, fakta eller tegneserier osv., Er det overveldende sannsynlig at disse er automatiserte. Det er en flott måte å bygge et publikum på folk som er interessert i det samme emnet.
Men det er en annen grunn, utover retweets og følger. Å bygge en Twitter-bot vil lære deg noen nyttige programmeringsferdigheter. Vi har tidligere sett på hvordan du bygger en grunnleggende Twitter-bot med Python Slik bygger du en bringebær Pi Twitter Bot Hvordan bygger en bringebær Pi Twitter Bot Twitter er verdens største depot av korte meldinger fra folk med ingenting å si - og nå har du også kan bidra til det episke prosjektet med en automatisert Twitter-bot, drevet av Raspberry ... Les mer (også på en Raspberry Pi), men denne gangen tar vi en annen tilnærming.
I dette prosjektet skal vi bruke Node.js til å bygge en fototweeting-bot på en Raspberry Pi. Bildene vil være bilder fra første verdenskrig, akkompagnert av en kort setning og attribusjon). Denne informasjonen vil bli lagret i en matrise, en grunnleggende database. Hva er en database, likevel? [MakeUseOf Explains] Så hva er en database, uansett? [MakeUseOf Explains] For en programmerer eller en teknologientusiast er konseptet med en database noe som virkelig kan tas for gitt. For mange mennesker er imidlertid konseptet med en database i seg selv litt fremmed .... Les mer.
Kom i gang: Bygg databasen
Hvis du vil bygge en fototweeting-bot, må du starte med å samle bildene du vil dele. Dette bør enten være dine egne bilder, eller bilder du har anskaffet under en Creative Commons eller annen åpen kildekodelisens.
Du bør også følge med på attribusjonen og annen informasjon du vil ha med bildene. Vi kommer tilbake til denne informasjonen senere, når boten er i gang.
Installer Node.js på Raspbian
Begynn med å installere Node.js. Du bør allerede ha en Raspberry Pi i gang, med Raspbian installert. Slik installerer du et operativsystem på en Raspberry Pi. Slik installerer du et operativsystem på en Raspberry Pi. Slik installerer du et operativsystem på Raspberry Pi og hvordan du kloner din perfekte oppsett for rask gjenoppretting av katastrofer. Les mer . For dette prosjektet anbefaler vi en Raspberry Pi 2 eller nyere; prosjektet ble testet på Raspberry Pi 3 B + Hvordan bestemme om du trenger Raspberry Pi 3 B + -modellen Hvordan bestemme om du trenger Raspberry Pi 3 B + -modellen Hvor mye koster Raspberry Pi 3 B +, hvilken spesifikasjon har den, og vil det forbedre dine eksisterende prosjekter? Les mer .
I terminalen (eller via SSH VNC, SSH og HDMI: Tre alternativer for visning av bringebær Pi VNC, SSH og HDMI: Tre alternativer for visning av bringebærpi Raspberry Pi er en bemerkelsesverdig liten datamaskin, men det kan være tidkrevende å stille det opp og koble den til skjermen. Les mer), oppdater listen over systempakker og oppgrader til den siste versjonen:
sudo apt-get update sudo apt-get dist-upgrade
Følg ledeteksten på skjermen, og vent mens Pi-en din oppdateres. Når du er ferdig, start på nytt med
sudo reboot
Når du er ferdig, bruk krøll for å laste ned Node.js:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Deretter installerer du den med
sudo apt-get install -y nodejs
Når alt er gjort, må du kontrollere at programvaren er riktig installert. Det enkleste er å se etter versjonsnummer:
node -v
Responsen skal være noe som v8.11.3 (eller høyere). Hvis du ser noe slikt, kan du være trygg på at Node.js er klar til bruk.
Bygg din Twitter-bot
Neste trinn er å legge inn koden som vil lage bot. Begynn med å opprette en katalog:
mkdir twitterbot
Deretter endrer du den til den nye katalogen for boten din:
cd twitterbot
Her lager du en fil som heter server.js
sudo nano server.js
Skriv inn en enkelt linje i denne filen:
console.log('I am a Twitter bot!');
Trykk Ctrl + X for å lagre og avslutte, og kjør deretter skriptet:
node '/home/pi/twitterbot/server.js'
Dette skulle returnere setningen “Jeg er en Twitter-bot!”. Nå som du har bekreftet at dette fungerer, er det på tide å installere Twit-biblioteket med npm ( Node Package Manager ). Forsikre deg om at dette er installert ved å gå inn i:
npm -v
Igjen, bør du se et versjonsnummer vises.
Følg dette med:
npm init
Dette begynner med å be deg om informasjon om Node.js-appen du oppretter. Standardalternativer vises (som dette), slik at du bare kan trykke på Enter for å godta dem. Du kan velge å legge inn dine egne detaljer også. Når denne konfigurasjonen er over, blir du bedt om å bekrefte detaljene med "ja".
Neste trinn er å installere Twit-modulen fra kl.
npm install twit --save
Vent mens filene lastes ned til underkatalogen for node_modules. Når det er gjort, åpner du server.js-filen på nytt i nano.
sudo nano server.js
Slett her kommandoen du skrev inn tidligere, erstatt den med:
var fs = require('fs'), path = require('path'), Twit = require('twit'), config = require(path.join(__dirname, 'config.js'));
Lagre og avslutt som før.
Lag en Twitter-app
For å bygge en fungerende Twitter-bot, må du opprette en Twitter-app. Dette er en enkel prosess, som krever at du først registrerer deg for en ny Twitter-konto. Merk at dette også krever et telefonnummer for å bekrefte kontoen, og når dette er gjort, kan du gå til Developer.twitter.com for å opprette appen.
Hvis du ikke har en utviklerkonto, kan det ta litt tid, siden det er en viss mengde skjemautfylling som trengs. Dette er et skritt Twitter har tatt for å unngå spam, så ta deg god tid og svar på spørsmålene nøyaktig.
Klikk på Opprett en app, og legg til detaljene som ønsket. I skrivende stund gjennomgår utviklersystemet en overhaling, så du må kanskje vente noen dager (og svare på noen flere spørsmål).
Deretter bytter du til kategorien Taster og tokens, og under Tillatelser finner du tilgangstillatelsen og sørger for at den er satt til Les og skriv (bruk Rediger hvis ikke). Bytt deretter til Keys and Tokens og noter følgende:
- Forbrukernøkkel
- Forbrukerhemmelighet
Under Access token, klikk Create for å generere:
- Tilgangstoken
- Access Token Secret
Dette er API-nøklene du trenger for å gi bot tilgang til din Twitter-konto.
Tilbake på kommandolinjen, opprett config.js i nano:
sudo nano config.js
Legg til følgende
var config = { consumer_key: 'XXXXX', consumer_secret: 'XXXXX', access_token: 'XXXXX', access_token_secret: 'XXXXX' } module.exports = config;
Der det står "XXXXX", må du erstatte dine egne korresponderende API-nøkkeldetaljer.
Lagre og avslutt, og åpne deretter server.js.
sudo nano server.js
Legg til følgende linjer til slutten av filen:
var T = new Twit(config); T.post('statuses/update', { status: 'My first tweet!' }, function(err, data, response) { console.log(data) });
Det skal se slik ut:
Lagre og avslutt, og skriv deretter inn på kommandolinjen
node server.js
Åpne Twitter-kontoen din i nettleseren for å se resultatene:
Du har bekreftet at boten tweeter, så det er på tide å gi den noe å gjøre!
Lag din mappe med bilder
Hvis du vil tweet bilder, kopierer du bildene du har samlet i en mappe (vanligvis navngitte bilder ). Begynn med et dusin eller så.
Gå deretter tilbake til server.js-dokumentet:
sudo nano server.js
Fjern koden som sendte tweeten, linjen som begynner på T.post ('statuser / oppdatering').
Deretter erstatter du denne med en funksjon, kalt random_from_array . Dette vil velge et bilde tilfeldig fra bilder-mappen.
function random_from_array(images){ return images[Math.floor(Math.random() * images.length)]; }
Når du har gjort dette, må du legge til en andre funksjon, upload_random_image :
function upload_random_image(images){ console.log('Opening an image...'); var image_path = path.join(__dirname, '/images/' + random_from_array(images)), b64content = fs.readFileSync(image_path, { encoding: 'base64' }); console.log('Uploading an image...'); T.post('media/upload', { media_data: b64content }, function (err, data, response) { if (err){ console.log('ERROR:'); console.log(err); } else{ console.log('Image uploaded!'); console.log('Now tweeting it...'); T.post('statuses/update', { media_ids: new Array(data.media_id_string) }, function(err, data, response) { if (err){ console.log('ERROR:'); console.log(err); } else{ console.log('Posted an image!'); } } ); } }); }
Denne funksjonen plukker et bilde tilfeldig fra bilder-mappen, og når den først er valgt lastes opp til Twitter ved hjelp av media / upload API.
Deretter legger du til følgende kode. Dette vil finne bildekatalogen og ta et bilde fra den og legge ut en tilfeldig hvert 60. sekund. Du kan (og bør) redigere denne timingen, som er representert i koden med tallet 60000. Det anbefales lengre hull.
setInterval(function(){ upload_random_image(images); }, 60000); } });
Lagre dette med Ctrl + X, deretter Ja for å lagre. (Du finner den fulle koden for dette prosjektet på GitHub).
En enkelt bruk av kommandoen node server.js vil deretter be bildene om å begynne å tweete! (Hvis du trenger å avslutte innleggene, trykk Ctrl + Z for å avbryte server.js-skriptet.)
Legge til tekst på dine tweets for foto
Hvis du trenger å legge til tekst til bildene dine, kan dette gjøres ved hjelp av en matrise. Matrisen refererer til filnavnene til bildene og viser teksten som skal legges til. For eksempel kan du legge til attribusjon til bilder du ikke tok. Eller du kan legge til noen fakta eller et prisoverslag.
Begynn med å lage images.js
sudo nano images.js
Legg til følgende kode. Dette er en matrise, med to elementer, fil og kilde. Disse har filnavnet til bildet og attribusjonen (vanligvis en URL).
var images = [ { file: 'image0001.png', source: 'http://www.example.com/image0001.png' }, { file: 'image0002.png', source: 'http://www.example.com/image0002.png' }, ]
Gjenta som nødvendig for hvert bilde, og avslutt deretter images.js-filen med:
module.exports = images;
Lagre og lukk filen, åpne deretter server.js igjen, og legg denne til i listen over variabler:
images = require(path.join(__dirname, 'images.js'));
Lagre og avslutt, og start deretter Twitter- botten på nytt med kommandoen node server.js .
Du kan også bruke "kilde" -feltet til å inkludere tekst, som forklarer bakgrunnen for bildet. Dette kan inkluderes ved siden av nettadressen.
Din første Twitter-bot, klar til gjenbruk!
Nå bør du ha en automatisk posting av Twitter-bot, og dele bilder, fakta og attributter om det gitte emnet.
For å oppsummere er prosessen:
- Samle bildene dine
- Installer Node.js
- Bygg din Twitter-bot
- Søk om utviklerstatus på Twitter
- Lag en Twitter-app
- Legg til en attribusjonsgruppe
- Begynn å tweet!
Det beste med dette er kanskje at koden kan brukes til å twitre til bilder, fakta og attributter om bokstavelig talt ethvert emne.
Vil du vite hvilke andre roboter du kan kjøre med et lignende oppsett? Sjekk listen vår over de beste Twitter-botprosjektene for Raspberry Pi 10 Beste Twitter Bot-prosjekter for Raspberry Pi 10 Beste Twitter Bot-prosjekter for Raspberry Pi Les mer!
Utforsk mer om: DIY Project Tutorials, JavaScript, Raspberry Pi, Twitter.