Hoe een Raspberry Pi te bouwen Twitter Bot

Twitter is 's werelds grootste opslagplaats van korte berichten van mensen met niets te zeggen - en nu kunt u ook een bijdrage leveren aan dat epische project met een geautomatiseerde Twitter-bot, mogelijk gemaakt door uw Raspberry Pi. Ik maak natuurlijk een grapje - sommige mensen tweeten zelfs interessante dingen. Ik ben echter niet een van hen - ik gebruik mijn mijn voor schaamteloze productpromotie in ruil voor gratis spullen, prijsvragen en het automatisch plaatsen van nieuwe afleveringen van onze eigen Technophilia Podcast.

Twitter is 's werelds grootste opslagplaats van korte berichten van mensen met niets te zeggen - en nu kunt u ook een bijdrage leveren aan dat epische project met een geautomatiseerde Twitter-bot, mogelijk gemaakt door uw Raspberry Pi.  Ik maak natuurlijk een grapje - sommige mensen tweeten zelfs interessante dingen.  Ik ben echter niet een van hen - ik gebruik mijn mijn voor schaamteloze productpromotie in ruil voor gratis spullen, prijsvragen en het automatisch plaatsen van nieuwe afleveringen van onze eigen Technophilia Podcast.
Advertentie

Twitter is 's werelds grootste opslagplaats van korte berichten van mensen met niets te zeggen - en nu kunt u ook een bijdrage leveren aan dat epische project met een geautomatiseerde Twitter-bot, mogelijk gemaakt door uw Raspberry Pi. Ik maak natuurlijk een grapje - sommige mensen twitteren zelfs interessante dingen. Twitter gebruiken om te zoeken naar mentoren in jouw interessegebied. Twitter gebruiken om te zoeken naar mentoren in jouw interessegebied. In de echte wereld is een mentor een wijs iemand. leerkracht die iemand ondersteunt en begeleidt en hen helpt hun potentieel te maximaliseren. In de online wereld zou je heel veel geluk hebben als je iemand zou vinden die ... Lees meer. Ik ben echter niet een van hen - ik gebruik mijn mijn voor schaamteloze productpromotie in ruil voor gratis spullen, prijsvragen en het automatisch plaatsen van nieuwe afleveringen van onze eigen Technophilia Podcast. Hoe dan ook, mijn volgers houden van mij!

@ w0lfiesmith Ik haat je Twitter-account. Zo veel.

- Justin Pot (@jhpot) 21 augustus 2013

Nu ga ik het nut van mijn persoonlijke Twitter-stream vergroten door een Raspberry Pi automatisch elk uur zijn huidige CPU-temperatuur te laten tweeten, en een webcamfoto!

Ermee beginnen

Dit project maakt gebruik van Python; een eenvoudige programmeertaal die ideaal is voor doe-het-zelfprojecten. We beginnen met het installeren van Twython op de Pi - een Python-module voor interfacing met Twitter; een Twitter "-toepassing instellen" om een ​​API-sleutel te krijgen; ga dan naar het maken van de Pi tweet dingen namens ons. Het gaat zo leuk worden!

Ik doe dit op Raspian - maar het zou in theorie moeten werken op elk Linux-gebaseerd besturingssysteem dat je hebt op de Pi 10-besturingssystemen die je kunt gebruiken met Raspberry Pi 10-besturingssystemen die je kunt uitvoeren met Raspberry Pi De hardware van de Raspberry Pi alleen is slechts één kant van het verhaal: vandaag onderzoek ik 10 verschillende besturingssystemen die u kunt installeren. Lees verder . Als je dat nog niet hebt gedaan, zorg dan dat je SSH instelt zodat we op afstand kunnen inloggen en console-opdrachten kunnen uitvoeren.

Twython installeren

Het is een goed idee om eerst updates uit te voeren. Kopieer en plak de volgende commando's één voor één - de meeste zullen moeten worden bevestigd.

sudo apt-get update sudo apt-get upgrade sudo apt-get install python-setuptools sudo easy_install pip sudo pip install twython 

Een Twitter-app registreren

Om de Twitter API te gebruiken - dat wil zeggen, de REST-interface die we gebruiken om nieuwe Tweets te plaatsen en in het algemeen met Twitter communiceren via de twitterwebsite - moeten we een nieuwe app registreren. Doe dat via deze link - u hoeft geen callback-URL op te geven en een website te maken als u dat wilt.

new-twitter-app

U ziet iets dat hierop lijkt als u klaar bent - deze toetsen zijn uniek voor u.

twitter-app

De app is standaard ingesteld op alleen-lezen, dus we kunnen geen tweets publiceren zonder dat dit wordt gewijzigd in Lezen en schrijven . Ga naar het tabblad Instellingen en wijzig het type Toepassing .

readwrite-toegang

Eenmaal opgeslagen, gaat u terug naar het tabblad Details en klikt u op de knop onderaan om een ​​OAuth-toegangstoken te maken - dit geeft uw toepassing toegang tot uw eigen Twitter-account. Vernieuwen en de pagina open laten voor later - we zullen enkele van die toetsen in een minuut moeten plakken.

toegangstoken

Creëer uw Python-project

Begin met het maken van een nieuwe map om je Tweet-project onder te brengen en maak vervolgens een nieuw bestand aan.

 mkdir SillyTweeter cd SillyTweeter sudo nano SillyTweeter.py 

Je kunt het natuurlijk altijd maar noemen wat je wilt.

In de teksteditor die wordt weergegeven, kopieert en plakt u het volgende, waarbij u de gebruikerssleutel vervangt door de relevante sleutel uit de Twitter-toepassingspagina die eerder is geopend. Elke sleutel is omgeven door enkele aanhalingstekens, dus vergeet die niet te missen. Houd er rekening mee dat ACCESS_KEY wordt aangeduid als toegangstoken op de Twitter-app-pagina.

 #!/usr/bin/env python import sys from twython import Twython CONSUMER_KEY = '***************YOUR DATA*****************' CONSUMER_SECRET = '***************YOUR DATA*****************' ACCESS_KEY = '***************YOUR DATA*****************' ACCESS_SECRET = '***************YOUR DATA*****************' api = Twython(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_SECRET) api.update_status(status=sys.argv[1]) 

Druk op Ctrl-X en druk op Y om af te sluiten en het bestand op te slaan. Maak het uitvoerbaar met de volgende opdracht (vervang je Python-bestandsnaam als je iets anders hebt gekozen)

 sudo chmod +x SillyTweeter.py 

Je zou nu in staat moeten zijn om je vermogen om tweets te plaatsen te testen, zoals zo:

 python SillyTweeter.py 'Hello Everyone, this is my Raspberry Pi tweeting you more nonsense' 

Hallo allemaal, dit is mijn Raspberry Pi die je meer onzin twittert

- James Bruce (@ w0lfiesmith) 29 augustus 2013

Tweeten Uw CPU-temp

Nu dat je elke soort onzin kunt posten die je wilt, laten we de app aanpassen om de huidige CPU-temperatuur te pakken, want ik zal verdoemd zijn als de wereld dat niet elk uur hoeft te weten.

Begin met het toevoegen van een andere import voor os-bibliotheek:

 import os 

Voeg vervolgens de volgende regels toe en vervang de vorige api.update_status uit het bovenstaande voorbeeld.

 cmd = '/opt/vc/bin/vcgencmd measure_temp' line = os.popen(cmd).readline().strip() temp = line.split('=')[1].split("'")[0] api.update_status(status='My current CPU temperature is '+temp+' C') 

Ik zal deze code niet teveel uitleggen omdat het er niet echt toe doet - het voert een commando uit dat de temperatuur pakt, splitst de output op om het nummer te extraheren en tweets dat met een aangepast bericht. Je vindt de volledige voorbeeldcode hier.

Webcamfoto's tweeten

Laten we nu iets echt nuttig maken; we gaan webcamfoto's tweet. Gelukkig ondersteunt Twython de API-functie update_status_with_media, wat de dingen vrij eenvoudig maakt.

Sluit een USB-webcam aan op uw apparaat en controleer of deze is herkend met de opdracht:

 ls /dev/video* 

als je video0 ziet, heb je geluk. Ik gebruikte een Playstation 3 PSEye-cam en het werkte prima zonder extra legwerk.

We gaan ook de Pygame- bibliotheken gebruiken om een ​​foto te maken; voeg de volgende regels toe net na de bestaande importinstructies:

 import pygame import pygame.camera from pygame.locals import * pygame.init() pygame.camera.init() cam = pygame.camera.Camera("/dev/video0", (640, 480)) cam.start() image = cam.get_image() pygame.image.save(image, 'webcam.jpg"') 

Kortom, je hebt de webcam met een specifieke resolutie geïnitialiseerd (je moet mogelijk aanpassen dit is een heel oude camera), knipte een foto en bewaarde deze als een jpg. We zullen dezelfde webcam.jpg" overschrijven telkens wanneer de app wordt uitgevoerd.

Pas ten slotte de regel update_status aan om te lezen:

 photo = open('webcam.jpg"', 'rb') api.update_status_with_media(media=photo, status='My RPi be tweeting images now =>') 

Natuurlijk kunt u de statustekst weer naar uw huidige CPU-temperatuur wijzigen, als u dat wilt. De volledige code voor dit voorbeeld is hier.

Mijn RPi kan nu afbeeldingen tweeten => pic.twitter.com/NfUgLnWQtm

- James Bruce (@ w0lfiesmith) 29 augustus 2013

Kun je dat herhalen?

Een Twitter-bot is alleen nuttig als deze meerdere keren wordt uitgevoerd, automatisch; je wilt daar niet elk uur zitten om het bevel te voeren. Om dit te bereiken, gebruiken we de Pi's CRON-planningsfunctie (Wat is een CRON-taak? Automatiseer uw Wordpress-reservekopie met eenvoudige Shell-scripts en CRON Automatiseer uw Wordpress-back-up met eenvoudige Shell-scripting & CRON De laatste keer dat we het hadden over back-ups van Wordpress, liet ik u zien hoe ongelooflijk eenvoudig was het om een ​​back-up te maken van je hele database en bestanden via SSH met slechts een paar commando's. Deze keer zal ik laten zien ... Lees meer)

 sudo crontab -e 

Plak in deze regel om elk uur te lopen.

 */60 * * * * python /home/pi/SillyTweeter/SillyTweeter.py 

Wijzig dat in * * * * * als je wilt dat het elke minuut wordt uitgevoerd, en wees erop voorbereid om volgers sneller te verliezen dan een Twitter-account dat snel volgelingen verliest.

Dat is voor vandaag. Ik ben blij dat ik meer dwaasheid heb bijgedragen aan de enorme rijkdom aan nutteloze bytes op internet, en ik hoop dat je dat ook doet! Toon uw waardering voor deze zelfstudie door deze te tweeten en laat ons dan weten waar uw eigen Twitter-bot over gaat tweeten in de opmerkingen.

Afbeeldingscredit: adafruit / flickr

In this article