Hoe een foto te bouwen Twittering Twitter Bot met Raspberry Pi en Node.js

Hoe een foto te bouwen Twittering Twitter Bot met Raspberry Pi en Node.js / Programming

Op zoek naar een manier om Twitter bruikbaarder te maken, al was het maar voor andere mensen? Eén manier is om een ​​geautomatiseerde Twitter-bot te maken die afbeeldingen tweets met nuttige beschrijvingen. Je zou dit handmatig kunnen doen ... of je zou het met Node.js kunnen bouwen en het op een Raspberry Pi kunnen hosten. Lees verder om erachter te komen hoe.

Waarom een ​​Twitter Bot bouwen??

Als je ooit op Twitter bent geweest en accounts hebt gezien die foto's of feiten of cartoons plaatsen, enzovoort, is het overweldigend waarschijnlijk dat deze worden geautomatiseerd. Het is een geweldige manier om een ​​publiek op te bouwen van mensen die geïnteresseerd zijn in hetzelfde onderwerp.

Maar er is nog een reden, meer dan Retweets en volgt. Het bouwen van een Twitter-bot leert u enkele nuttige programmeervaardigheden. We hebben eerder gekeken naar hoe een eenvoudige Twitter-bot te bouwen met Python. Hoe een Raspberry Pi te bouwen Twitter Bot Hoe maak je een Raspberry Pi te bouwen Twitter Bot Twitter is 's werelds grootste opslagplaats van korte berichten van mensen met niets te zeggen - en nu jij kan ook bijdragen aan dat epische project met een geautomatiseerde Twitter-bot, mogelijk gemaakt door je Raspberry ... Lees Meer (ook op een Raspberry Pi), maar deze keer nemen we een andere aanpak.

In dit project gaan we Node.js gebruiken om een ​​foto-tweeten bot te bouwen op een Raspberry Pi. De foto's zijn foto's uit de Eerste Wereldoorlog, vergezeld van een korte zin en toeschrijving). Deze informatie wordt opgeslagen in een array, een basisdatabase So What Is a Database, Anyway? [MakeUseOf Explains] Dus wat is een database eigenlijk? [MakeUseOf Explains] Voor een programmeur of een technologie-liefhebber is het concept van een database iets dat echt als vanzelfsprekend kan worden beschouwd. Voor veel mensen is het concept van een database zelf echter een beetje vreemd ... Lees meer .

Aan de slag: bouw uw database

Als u een bot voor het tweeten van foto's wilt maken, moet u beginnen met het verzamelen van de afbeeldingen die u wilt delen. Dit moeten ofwel uw eigen afbeeldingen zijn, of afbeeldingen die u hebt verkregen onder een Creative Commons of een andere open source-licentie.

Houd ook rekening met de toeschrijving en andere informatie die u bij de afbeeldingen wilt gebruiken. We komen later terug naar deze informatie zodra de bot is geïnstalleerd.

Installeer Node.js op Raspbian

Begin met het installeren van Node.js. Je zou al een Raspberry Pi in gebruik moeten hebben, met Raspbian geïnstalleerd. Hoe kan ik een besturingssysteem op je Raspberry Pi installeren Hoe kan ik een besturingssysteem op je Raspberry Pi installeren Zo kun je een nieuw besturingssysteem op je Pi installeren en gebruiken - en hoe om je perfecte setup te klonen voor snel noodherstel. Lees verder . Voor dit project raden we een Raspberry Pi 2 of nieuwer aan; het project werd getest op de Raspberry Pi 3 B + Hoe te beslissen of je de nieuwe Raspberry Pi 3 B + -model nodig hebt Hoe te beslissen of je de nieuwe Raspberry Pi 3 B + -model nodig hebt De nieuwe Raspberry Pi 3 B + is uitgebracht. Hoeveel kost het, welke harde specificaties heeft het en zal het je bestaande projecten verbeteren? We hebben antwoorden. Lees verder .

In de terminal (of via SSH VNC, SSH en HDMI: drie opties voor het bekijken van uw Raspberry Pi VNC, SSH en HDMI: drie opties voor het bekijken van uw Raspberry Pi De Raspberry Pi is een opmerkelijke kleine computer, maar het kan tijdrovend zijn om in te stellen en lees het op uw monitor aan Lees Meer), werk de systeempakketlijst bij en upgrade naar de nieuwste versie:

sudo apt-get update sudo apt-get dist-upgrade

Volg de prompt op het scherm en wacht terwijl uw Pi wordt bijgewerkt. Als u klaar bent, start u opnieuw op

herstart sudo

Gebruik krul om Node.js te downloaden als je klaar bent:

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

Installeer het vervolgens met

sudo apt-get installeer -y nodejs

Wanneer alles klaar is, voert u een controle uit om te controleren of de software correct is geïnstalleerd. Het gemakkelijkst is om te controleren op het versienummer:

knooppunt -v

Het antwoord zou iets moeten zijn als v8.11.3 (of hoger). Als je zoiets ziet, kun je erop vertrouwen dat Node.js klaar is voor gebruik.

Bouw je Twitter Bot

De volgende stap is om de code in te voeren die de bot zal maken. Begin met het aanmaken van een map:

mkdir twitterbot

Verander het dan in de nieuwe map voor je bot:

cd twitterbot

Maak hier een bestand met de naam server.js

sudo nano server.js

Voer in dit bestand een enkele regel in:

console.log ('Ik ben een Twitter-bot!');

druk op Ctrl + X opslaan en afsluiten en voer het script uit:

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

Dit zou de zin moeten retourneren “Ik ben een Twitter-bot!”. Nu je hebt bevestigd dat dit werkt, is het tijd om de Twit-bibliotheek te installeren NPM (de Node Package Manager). Zorg ervoor dat dit is geïnstalleerd door het volgende in te voeren:

npm -v

Nogmaals, u zou een versienummer moeten zien verschijnen.

Volg dit met:

npm init

Dit begint met het vragen om informatie over de Node.js-app die u aan het maken bent. Standaardopties worden weergegeven (zoals deze), dus je kunt gewoon op Enter tikken om ze te accepteren. Je kunt er ook voor kiezen om je eigen gegevens in te voeren. Zodra deze configuratie voorbij is, wordt u gevraagd om de details te bevestigen met “Ja”.

De volgende fase is om de Twit-module vanaf het npm te installeren.

npm install twit --save

Wacht terwijl de bestanden worden gedownload naar de submap node_modules. Zodra dat is gebeurd, opent u het server.js-bestand opnieuw in nano.

sudo nano server.js

Hier verwijder je de opdracht die je eerder hebt ingevoerd en vervang je deze door:

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

Opslaan en afsluiten zoals eerder.

Maak een Twitter-app

Als u een werkende Twitter-bot wilt maken, moet u een Twitter-app maken. Dit is een eenvoudig proces, waarvoor u zich eerst moet aanmelden voor een nieuw Twitter-account. Houd er rekening mee dat dit ook een telefoonnummer vereist om het account te verifiëren. Zodra dit is gebeurd, gaat u naar developer.twitter.com om de app te maken.

Als u geen ontwikkelaarsaccount heeft, kan dit enige tijd duren, omdat er een bepaalde hoeveelheid formulieren moet worden ingevuld. Dit is een stap die Twitter heeft genomen om spam te voorkomen. Neem daarom de tijd en beantwoord de vragen nauwkeurig.

Klik Maak een app, en voeg de details toe zoals gevraagd. Op het moment van schrijven ondergaat het ontwikkelaarssysteem een ​​revisie, dus u moet mogelijk enkele dagen wachten (en een aantal aanvullende vragen beantwoorden).

Ga vervolgens naar de Sleutels en tokens tab en onder machtigingen vind de Toegangsrechten en zorg ervoor dat deze is ingesteld op Lezen en schrijven (gebruik Bewerk als niet). Schakel vervolgens over naar sleutels en tokens en noteer het volgende:

  • Gebruikers sleutel
  • Consumentengeheim

Klik onder Toegangstoken op creëren genereren:

  • Toegangstoken
  • Toegang tot het geheime token

Dit zijn de API-sleutels die je nodig hebt om de bot toegang te geven tot je Twitter-account.

Terug in de opdrachtregel, maak config.js aan in nano:

sudo nano config.js

Voeg het volgende toe

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

Waar het 'XXXXX' is, vervangt u uw eigen overeenkomstige API-sleutelgegevens.

Sla op en sluit af en open vervolgens server.js.

sudo nano server.js

Hier voeg je de volgende regels toe aan het einde van het bestand:

var T = nieuwe Twit (config); T.post ('statussen / update', status: 'Mijn eerste tweet!', Functie (err, data, response) console.log (data));

Het zou er zo uit moeten zien:

Nogmaals, opslaan en afsluiten, en voer vervolgens in de opdrachtregel in

knooppunt server.js

Open uw Twitter-account in de browser om de resultaten te zien:

Je hebt bevestigd dat de bot tweeet, dus het is tijd om het iets te doen te geven!

Maak uw map met afbeeldingen

Om foto's te tweeten, kopieert u de afbeeldingen die u hebt verzameld naar een map (meestal met de naam afbeeldingen). Begin met een tiental of zo.

Keer vervolgens terug naar het server.js-document:

sudo nano server.js

Verwijder hier de code die de tweet heeft verzonden, de regel die begint met T.post ('statussen / update').

Vervang vervolgens dit met een functie, genaamd random_from_array. Hiermee wordt willekeurig een afbeelding uit de afbeeldingenmap gekozen.

functie random_from_array (afbeeldingen) return images [Math.rand (Math.random () * images.length)]; 

Zodra je dit hebt gedaan, moet je een tweede functie toevoegen, upload_random_image:

functie upload_random_image (afbeeldingen) console.log ('Een afbeelding openen ...'); var image_path = path.join (__ dirname, '/ images /' + random_from_array (afbeeldingen)), b64content = fs.readFileSync (image_path, encoding: 'base64'); console.log ('Een afbeelding uploaden ...'); T.post ('media / upload', media_data: b64content, functie (err, data, response) if (err) console.log ('ERROR:'); console.log (err); else  console.log ('Afbeelding geüpload!'); console.log ('Nu tweeten ...'; T.post ('statussen / update', media_ids: nieuwe Array (data.media_id_string), functie (err, data , antwoord) if (err) console.log ('ERROR:'); console.log (err); else console.log ('Gepost een afbeelding!'););); 

Deze functie kiest willekeurig een afbeelding uit de afbeeldingenmap en eenmaal geselecteerd wordt deze geüpload naar Twitter met behulp van de media / upload API.

Voeg vervolgens de volgende code toe. Dit zal de afbeeldingen-map vinden en er een afbeelding van maken, waarbij elke willekeurige seconde om de 60 seconden een wordt gepost. Je kunt (en zou) deze timing moeten bewerken, die in de code wordt weergegeven met de figuur 60000. Langere gaten zijn aan te raden.

 setInterval (function () upload_random_image (images);, 60000); );

Bewaar dit met Ctrl + X, dan Ja om te redden. (Je kunt de volledige code voor dit project vinden op GitHub).

Eenmalig gebruik van de knooppunt server.js commando zal dan de foto's vragen om te beginnen met tweeten! (Als u de berichten moet beëindigen, drukt u op Ctrl + Z om het script server.js te annuleren.)

Tekst toevoegen aan je foto-tweets

Als u tekst aan uw afbeeldingen wilt toevoegen, kunt u dit doen met behulp van een array. De array verwijst naar de bestandsnamen van de afbeeldingen en een lijst van de tekst die moet worden toegevoegd. U kunt bijvoorbeeld toeschrijving toevoegen aan afbeeldingen die u niet hebt gemaakt. Of je kunt wat feiten of een citaat toevoegen.

Begin met het maken van images.js

sudo nano images.js

Voeg hier de volgende code toe. Dit is een array, met twee elementen, een bestand en een bron. Deze bevatten de bestandsnaam van de afbeelding en de toeschrijving (meestal een URL).

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

Herhaal waar nodig voor elke afbeelding en beëindig het bestand images.js met:

module.exports = afbeeldingen;

Sla het bestand op en sluit het, open server.js opnieuw en voeg dit toe aan de lijst met variabelen:

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

Sla op en sluit af en start de Twitter-bot opnieuw met de knooppunt server.js commando nogmaals.

U kunt ook de “bron” veld om wat tekst toe te voegen, met uitleg over de achtergrond van de foto. Dit kan naast de URL worden opgenomen.

Je eerste Twitter-bot, klaar om opnieuw te gebruiken!

Inmiddels zou je een automatisch geplaatste Twitter-bot moeten gebruiken om foto's, feiten en attributen over je onderwerp te delen.

Samenvattend is het proces:

  • Verzamel je foto's
  • Installeer Node.js
  • Bouw je Twitter-bot
  • Solliciteer voor ontwikkelaarstatus op Twitter
  • Maak een Twitter-app
  • Voeg een toeschrijvingreeks toe
  • Beginnen met tweeten!

Misschien is het beste hieraan dat de code kan worden gebruikt om foto's, feiten en attributen over letterlijk elk onderwerp te tweeten.

Wil je weten welke andere bots je zou kunnen gebruiken met een vergelijkbare setup? Bekijk onze lijst met de beste Twitter-bot-projecten voor de Raspberry Pi 10 Beste Twitter Bot-projecten voor Raspberry Pi 10 Beste Twitter Bot-projecten voor Raspberry Pi Lees meer !

Ontdek meer over: DIY Project Tutorials, JavaScript, Raspberry Pi, Twitter.