Sådan oprettes et foto, der kvitterer Twitter Bot med Raspberry Pi og Node.js
Reklame
Leder du efter en måde at gøre Twitter mere nyttig, hvis kun for andre mennesker? En måde er at oprette en automatiseret Twitter-bot, der tweeter billeder med nyttige beskrivelser. Du kan gøre dette manuelt ... eller du kan opbygge det med Node.js og være vært for det på en Raspberry Pi. Læs videre for at finde ud af hvordan.
Hvorfor opbygge en Twitter-bot?
Hvis du nogensinde har været på Twitter og set konti, der poster fotos, fakta eller tegneserier osv., Er det overvældende sandsynligt, at disse er automatiserede. Det er en fantastisk måde at opbygge et publikum af mennesker interesseret i det samme emne.
Men der er en anden grund ud over retweets og følger. At opbygge en Twitter-bot vil lære dig nogle nyttige programmeringsevner. Vi har tidligere kigget på, hvordan man bygger en grundlæggende Twitter-bot med Python Sådan bygger man en hindbær Pi Twitter Bot Sådan bygger man en bringebær Pi Twitter Bot Twitter er verdens største opbevaringssted med korte beskeder fra folk med intet at sige - og nu har du også kan bidrage til det episke projekt med en automatiseret Twitter-bot, drevet af din Raspberry ... Læs mere (også på en Raspberry Pi), men denne gang tager vi en anden tilgang.
I dette projekt skal vi bruge Node.js til at opbygge en fototweeting-bot på en Raspberry Pi. Billederne er billeder fra første verdenskrig, ledsaget af en kort sætning og tilskrivning). Denne information gemmes i en matrix, en grundlæggende database. Hvad er en database, alligevel? [MakeUseOf Explains] Så hvad er en database alligevel? [MakeUseOf Explains] For en programmør eller en teknologientusiast er begrebet en database noget, der virkelig kan tages for givet. For mange mennesker er konceptet med en database selv lidt fremmed .... Læs mere.
Kom godt i gang: Byg din database
Hvis du vil opbygge en fototweeting-bot, skal du starte med at samle de billeder, du vil dele. Disse skal enten være dine egne billeder, eller billeder, du har erhvervet under en Creative Commons eller en anden open source-licens.
Du skal også holde opmærksom på attributningen og andre oplysninger, du vil bruge til billederne. Vi vil vende tilbage til disse oplysninger senere, når bot er i gang.
Installer Node.js på Raspbian
Begynd med at installere Node.js. Du skal allerede have en Raspberry Pi i gang, med Raspbian installeret Sådan installeres et operativsystem på en Raspberry Pi Sådan installeres et operativsystem på en Raspberry Pi. Sådan installeres et operativsystem på din Raspberry Pi, og hvordan du kloner din perfekte opsætning til hurtig gendannelse af katastrofer Læs mere . Til dette projekt anbefaler vi en Raspberry Pi 2 eller nyere; projektet blev testet på Raspberry Pi 3 B + Sådan beslutter du, hvis du har brug for Raspberry Pi 3 B + -modellen Hvordan man beslutter, om du har brug for Raspberry Pi 3 B + -modellen Hvor meget koster Raspberry Pi 3 B +, hvilken specifikation har den, og vil det forbedre dine eksisterende projekter? Læs mere .
I terminalen (eller via SSH VNC, SSH og HDMI: Tre muligheder for at se din Raspberry Pi VNC, SSH og HDMI: Tre muligheder for at se din Raspberry Pi Raspberry Pi er en bemærkelsesværdig lille computer, men det kan være tidskrævende at indstille det op, og tilslut det til din skærm. Læs mere), opdater listen over systempakker og opgrader til den nyeste version:
sudo apt-get update sudo apt-get dist-upgrade
Følg prompt på skærmen, og vent, mens din Pi opdateres. Når du er færdig, skal du genstarte med
sudo reboot
Når du er færdig, skal du bruge krøllet til at downloade Node.js:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Installer det derefter med
sudo apt-get install -y nodejs
Når alt er gjort, skal du køre en kontrol for at sikre, at softwaren er installeret korrekt. Det nemmeste er at tjekke for versionnummeret:
node -v
Svaret skal være noget som v8.11.3 (eller højere). Hvis du ser noget lignende, kan du være sikker på, at Node.js er klar til brug.
Byg din Twitter-bot
Det næste trin er at indtaste koden, der vil oprette bot. Begynd med at oprette et bibliotek:
mkdir twitterbot
Skift derefter det til det nye bibliotek til din bot:
cd twitterbot
Opret her en fil kaldet server.js
sudo nano server.js
Indtast en enkelt linje i denne fil:
console.log('I am a Twitter bot!');
Tryk på Ctrl + X for at gemme og afslutte, kør derefter scriptet:
node '/home/pi/twitterbot/server.js'
Dette skulle returnere sætningen "Jeg er en Twitter-bot!". Nu, hvor du har bekræftet, at dette fungerer, er det tid til at installere Twit-biblioteket med npm ( Node Package Manager ). Sørg for, at dette er installeret ved at indtaste:
npm -v
Igen skulle du se et versionnummer vises.
Følg dette med:
npm init
Dette begynder med at bede dig om oplysninger om den Node.js-app, du opretter. Standardindstillinger vises (som denne), så du kan bare trykke på Enter for at acceptere dem. Du kan også vælge at indtaste dine egne detaljer. Når denne konfiguration er forbi, bliver du bedt om at bekræfte detaljerne med "ja".
Det næste trin er at installere Twit-modulet fra kl.
npm install twit --save
Vent, mens filerne downloades i undermappen bibliotek af node_moduler. Når det er gjort, skal du åbne server.js-filen igen i nano.
sudo nano server.js
Slet her den kommando, du indtastede tidligere, og erstatt den med:
var fs = require('fs'), path = require('path'), Twit = require('twit'), config = require(path.join(__dirname, 'config.js'));
Gem og luk som før.
Opret en Twitter-app
For at opbygge en fungerende Twitter-bot skal du oprette en Twitter-app. Dette er en simpel proces, som kræver, at du først tilmelder dig en ny Twitter-konto. Bemærk, at dette også kræver et telefonnummer for at bekræfte kontoen, og når dette er gjort, skal du gå til Developer.twitter.com for at oprette appen.
Hvis du ikke har en udviklerkonto, kan det tage noget tid, da der er brug for en vis mængde formular. Dette er et skridt, som Twitter har taget for at undgå spam, så tag dig tid og besvar spørgsmålene nøjagtigt.
Klik på Opret en app, og tilføj de detaljer, som du anmoder om. I skrivende stund gennemgår udviklingssystemet en revision, så du kan blive nødt til at vente et par dage (og besvare nogle yderligere spørgsmål).
Derefter skal du skifte til fanen Taster og tokens, og under tilladelser finde adgangstilladelsen og sikre, at den er indstillet til Læsning og skrivning (brug Rediger, hvis ikke). Skift derefter til nøgler og symboler og noter følgende:
- Forbrugernøgle
- Forbrugerhemmelighed
Klik på Opret under Access-token for at generere:
- Adgangstoken
- Access Token Secret
Dette er API-nøglerne, som du har brug for for at give bot adgang til din Twitter-konto.
Tilbage i kommandolinjen skal du oprette config.js i nano:
sudo nano config.js
Tilføj følgende
var config = { consumer_key: 'XXXXX', consumer_secret: 'XXXXX', access_token: 'XXXXX', access_token_secret: 'XXXXX' } module.exports = config;
Hvor det lyder "XXXXX", skal du erstatte dine egne korresponderende API-nøgledetaljer.
Gem og afslutt, og åbn derefter server.js.
sudo nano server.js
Tilføj her følgende linjer til slutningen af filen:
var T = new Twit(config); T.post('statuses/update', { status: 'My first tweet!' }, function(err, data, response) { console.log(data) });
Det skal se sådan ud:
Igen skal du gemme og afslutte og derefter på kommandolinjen indtaste
node server.js
Åbn din Twitter-konto i browseren for at se resultaterne:
Du har bekræftet, at boten tweeter, så det er på tide at give det noget at gøre!
Opret din mappe med billeder
For at tweet fotos skal du kopiere de billeder, du har samlet, i en mappe (typisk navngivne billeder ). Start med et dusin eller deromkring.
Gå derefter tilbage til server.js-dokumentet:
sudo nano server.js
Fjern her koden, der sendte tweeten, linjen, der begynder T.post ('status / opdatering').
Udskift derefter dette med en funktion, der kaldes random_from_array . Dette vælger et billede tilfældigt fra billedmappen.
function random_from_array(images){ return images[Math.floor(Math.random() * images.length)]; }
Når du har gjort dette, skal du tilføje en anden funktion, 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 funktion vælger et billede tilfældigt fra billedmappen, og når det først er valgt, uploades det til Twitter ved hjælp af medie / upload API.
Tilføj derefter følgende kode. Dette vil finde billedbiblioteket og tage et billede fra det og sende et tilfældigt hvert 60 sekund. Du kan (og bør) redigere denne timing, der er repræsenteret i koden med tallet 60000. Det anbefales længere huller.
setInterval(function(){ upload_random_image(images); }, 60000); } });
Gem dette med Ctrl + X, derefter Ja for at gemme. (Du kan finde den fulde kode for dette projekt på GitHub).
En enkelt brug af kommandoen node server.js vil derefter bede fotos om at begynde at tweet! (Hvis du har brug for at afslutte indlægene, skal du trykke på Ctrl + Z for at annullere scriptet til server.js.)
Tilføjelse af tekst til dine fototweet
Hvis du har brug for at tilføje tekst til dine billeder, kan dette gøres ved hjælp af en matrix. Arrayen henviser til filnavne på billederne og viser teksten, der skal tilføjes. For eksempel kan du tilføje attribution til billeder, som du ikke har taget. Eller du kan tilføje nogle fakta eller et tilbud.
Begynd med at oprette images.js
sudo nano images.js
Tilføj her følgende kode. Dette er en matrix med to elementer, fil og kilde. Disse indeholder filnavnet på billedet og attributten (typisk en URL).
var images = [ { file: 'image0001.png', source: 'http://www.example.com/image0001.png' }, { file: 'image0002.png', source: 'http://www.example.com/image0002.png' }, ]
Gentag om nødvendigt for hvert billede, og afslut derefter images.js-filen med:
module.exports = images;
Gem og luk filen, åbn derefter server.js igen, og tilføj denne til listen over variabler:
images = require(path.join(__dirname, 'images.js'));
Gem og afslutt, og genstart derefter Twitter-bot med kommandoen node server.js igen.
Du kan også bruge "kilde" -feltet til at inkludere tekst, der forklarer billedets baggrund. Dette kan inkluderes ved siden af URL'en.
Din første Twitter-bot, klar til at genbruge!
Nu skal du have en automatisk bogføring af Twitter-bot op og køre, dele fotos, fakta og attributter om dit givne emne.
For at opsummere er processen:
- Saml dine fotos
- Installer Node.js
- Byg din Twitter-bot
- Ansøg om udviklerstatus på Twitter
- Opret en Twitter-app
- Tilføj et attributionsarray
- Begynd at tweet!
Den bedste ting ved dette er måske, at koden kan bruges til at tweet fotos, fakta og attributter om bogstaveligt talt ethvert emne.
Vil du vide, hvilke andre bots du kan køre med en lignende opsætning? Tjek vores liste over de bedste Twitter-bot-projekter til Raspberry Pi 10 Bedste Twitter Bot-projekter til Raspberry Pi 10 Bedste Twitter Bot-projekter til Raspberry Pi Læs mere!
Udforsk mere om: DIY-projektvejledninger, JavaScript, Raspberry Pi, Twitter.