Hvordan bygge en Foto Tweeting Twitter Bot Med Raspberry Pi og Node.js

Hvordan bygge en Foto Tweeting Twitter Bot Med Raspberry Pi og Node.js / programmering

Leter du etter en måte å gjøre Twitter mer nyttig, hvis bare for andre? 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 den med Node.js og vert 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 inn bilder, fakta eller tegneserier, etc., så er det overveldende sannsynlig at disse er automatiserte. Det er en fin måte å bygge et publikum på av 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 programmeringsevner. Vi har tidligere sett på hvordan å bygge en grunnleggende Twitter bot med Python Hvordan bygge en Raspberry Pi Twitter Bot Hvordan bygge en Raspberry Pi Twitter Bot Twitter er verdens største lager av korte meldinger fra folk som ikke har noe å si - og nå er 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 foto-tweeting bot på en Raspberry Pi. Bildene vil være bilder fra første verdenskrig, ledsaget av en kort setning og tildeling). Denne informasjonen vil bli lagret i en matrise, en grunnleggende database Så hva er en database, uansett? [MakeUseOf Forklarer] Så Hva er en database, uansett? [MakeUseOf Forklarer] For en programmerer eller en teknologientusiast er begrepet en database noe som virkelig kan tas for gitt. Men for mange mennesker er begrepet en database selv litt utenlandsk ... Les mer .

Kom i gang: Bygg databasen din

Hvis du vil bygge en bilde tweeting bot, må du begynne med å samle bildene du vil dele. Disse bør enten være dine egne bilder, eller de du har kjøpt under en Creative Commons eller en annen åpen kildekode lisens.

Du bør også være oppmerksom på attribusjon og annen informasjon du vil bruke med bildene. Vi kommer tilbake til denne informasjonen senere, når boten er oppe og går.

Installer Node.js på Raspbian

Begynn med å installere Node.js. Du bør allerede ha en Raspberry Pi oppe, med Raspbian installert. Slik installerer du et operativsystem til din Raspberry Pi. Slik installerer du et operativsystem til din Raspberry Pi. Slik får du et nytt OS installert og kjører på Pi - og hvordan å klone ditt perfekte oppsett for rask katastrofeoppretting. Les mer . For dette prosjektet anbefaler vi en Raspberry Pi 2 eller senere; Prosjektet ble testet på Raspberry Pi 3 B + Hvordan bestemme om du trenger den nye Raspberry Pi 3 B + Modell Hvordan bestemme om du trenger den nye Raspberry Pi 3 B + Modell Den nye Raspberry Pi 3 B + har blitt utgitt. Hvor mye koster det, hvilken hard spesifikasjon har den, og vil den forbedre dine eksisterende prosjekter? Vi har svar. Les mer .

I terminalen (eller via SSH VNC, SSH og HDMI: Tre alternativer for visning av Raspberry Pi VNC, SSH og HDMI: Tre alternativer for å se din Raspberry Pi Raspberry Pi er en bemerkelsesverdig liten datamaskin, men det kan være tidkrevende å sette sett opp og koble den til skjermen. Les Mer), oppdater systemlisterlisten, og oppgrader til den nyeste versjonen:

sudo apt-get oppdatering sudo apt-get dist-upgrade

Følg instruksjonene på skjermen, og vent mens Pi oppdateres. Når du er ferdig, start på nytt med

sudo reboot

Når du er ferdig, bruk curl for å laste ned Node.js:

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

Deretter installerer du det med

sudo apt-get install -y nodejs

Når alt er gjort, kjør en sjekk for å sikre at programvaren ble installert riktig. Det enkleste er å se etter versionsnummeret:

node -v

Svaret 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 skape botten. Begynn med å opprette en katalog:

mkdir twitterbot

Så bytt den til den nye katalogen for din bot:

cd twitterbot

Opprett en fil som heter server.js her

sudo nano server.js

I denne filen, skriv inn en enkelt linje:

console.log ('Jeg er en Twitter bot!');

trykk Ctrl + X å lagre og avslutte, kjør deretter skriptet:

node '/home/pi/twitterbot/server.js'

Dette bør returnere uttrykket “Jeg er en Twitter-bot!”. Nå som du har bekreftet at dette fungerer, er det på tide å installere Twit-biblioteket med NPM (de Node Package Manager). Kontroller at dette er installert ved å skrive inn:

npm -v

Igjen, bør du se et versjonsnummer som 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 også 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 npm.

npm installere twit - save

Vent mens filene lastes ned i underkatalogen node_modules. Når det er gjort, åpner du server.js-filen igjen i nano.

sudo nano server.js

Her, slett kommandoen du skrev inn tidligere, erstatt den med:

var fs = krever ('fs'), sti = krever ('sti'), Twit = krever ('twit'), config = krever (path.join (__ dirname, 'config.js'));

Lagre og avslutte 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, gå til developer.twitter.com for å opprette appen.

Hvis du ikke har en utviklerkonto, kan det ta litt tid siden det er nødvendig med en viss formfylling. Dette er et steg Twitter har tatt for å unngå spam, så ta deg tid og svar på spørsmålene nøyaktig.

Klikk Opprett en app, og legg til detaljene etter behov. Ved skriving er utviklingssystemet gjennomgått, så det kan hende du må vente noen dager (og svar på noen flere spørsmål).

Deretter bytter du til Nøkler og symboler fanen og under tillatelser Finn Tilgangstillatelse og sørg for at den er satt til Lese og skrive (bruk Redigere Hvis ikke). Så bytt til Keys and Tokens og noter følgende:

  • Forbrukernøkkel
  • Forbrukerhemmelig

Under Tilgangstoken klikker du Skape å generere:

  • Tilgangstoken
  • Access Token Secret

Dette er API-nøklene som du trenger for å gi bot tilgang til din Twitter-konto.

Tilbake i 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', erstattes dine egne tilsvarende API-nøkkeldetaljer.

Lagre og avslutt, og åpne server.js.

sudo nano server.js

Her legger du til følgende linjer til slutten av filen:

var T = ny Twit (config); T.post ('statuser / oppdatering', status: 'Min første tweet!', Funksjon (feil, data, respons) console.log (data));

Det skal se slik ut:

Igjen, lagre og avslutte, og deretter på kommandolinjen, skriv inn

node server.js

Åpne din Twitter-konto i nettleseren for å se resultatene:

Du har bekreftet at boten er tweeting, så det er på tide å gi det noe å gjøre!

Lag din mappe med bilder

For å tweet bilder, kopier bildene du samler inn i en mappe (vanligvis navngitt Bilder). Start med et dusin eller så.

Deretter går du tilbake til server.js-dokumentet:

sudo nano server.js

Her fjern koden som sendte tweet, linjen som begynner T.post ('statuser / oppdatering').

Deretter erstattes dette med en funksjon som kalles random_from_array. Dette vil velge et bilde tilfeldig fra bildemappen.

funksjon random_from_array (bilder) return bilder [Math.floor (Math.random () * images.length)]; 

Når du har gjort dette, må du legge til en andre funksjon, upload_random_image:

funksjon upload_random_image (bilder) console.log ('Å åpne et bilde ...'); var image_path = path.join (__ dirname, '/ images /' + random_from_array (bilder)), b64content = fs.readFileSync (image_path, encoding: 'base64'); console.log ('Last opp et bilde ...'); T.post ('media / upload', media_data: b64content, funksjon (feil, data, respons) hvis (feil) console.log ('ERROR:'); console.log (err); else  console.log ('Bilde lastet opp!'); console.log ('Nå tweeting det ...'); T.post ('statuser / oppdatering', media_ids: new Array (data.media_id_string), funksjon , svar) hvis (err) console.log ('ERROR:'); console.log (err); else console.log ('Skrevet et bilde!'););); 

Denne funksjonen plukker et tilfeldig bilde fra bildemappen, og når det er valgt, lastes det opp til Twitter ved hjelp av media / opplastings-API.

Deretter legger du til følgende kode. Dette vil finne bilder katalogen, og ta et bilde fra det, legge ut en tilfeldig hvert 60 sekunder. Du kan (og bør) redigere denne timingen, som er representert i koden med tallet 60000. Lengre hull er tilrådelig.

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

Lagre dette med Ctrl + X, så ja for å lagre. (Du finner full koden for dette prosjektet på GitHub).

En enkelt bruk av node server.js kommandoen vil da be om bildene for å begynne tweeting! (Skal du avslutte innleggene, trykker du på Ctrl + Z å avbryte server.js-skriptet.)

Legge til tekst i Photo Tweets

Hvis du trenger å legge til tekst i bildene dine, kan dette gjøres ved hjelp av en matrise. Oppsettet vil referere til filnavnene til bildene og oppgi 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 sitat.

Begynn med å lage images.js

sudo nano images.js

Her legger du til følgende kode. Dette er en matrise, med to elementer, fil og kilde. Disse holder filnavnet på bildet, og attributtet (vanligvis en URL).

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

Gjenta som nødvendig for hvert bilde, og avslut deretter images.js-filen med:

module.exports = bilder;

Lagre og lukk filen, og åpne server.js igjen, og legg til dette i listen over variabler:

images = require (path.join (__ dirname, 'images.js'));

Lagre og avslutt, og start deretter Twitter botten med node server.js kommandoen igjen.

Du kan også bruke “kilde” feltet for å inkludere litt tekst, som forklarer bakgrunnen til bildet. Dette kan inkluderes ved siden av nettadressen.

Din første Twitter Bot, Klar til å bruke!

Nå skal du ha en automatisk innleggende Twitter-bot oppe, og dele bilder, fakta og attributter på ditt gitt emne.

For å oppsummere, er prosessen:

  • Samle bildene dine
  • Installer Node.js
  • Bygg din Twitter-bot
  • Søk etter utviklerstatus på Twitter
  • Lag en Twitter-app
  • Legg til et attributtarray
  • Start tweeting!

Kanskje det beste med dette er at koden kan brukes til å tweet bilder, fakta og attributter på bokstavelig talt et emne.

Vil du vite hvilke andre roboter du kan kjøre med et lignende oppsett? Sjekk vår liste over de beste Twitter bot-prosjektene for Raspberry Pi 10 Best Twitter Bot-prosjekter for Raspberry Pi 10 Best Twitter Bot-prosjekter for Raspberry Pi Les mer !

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