Hvordan man opbygger en Raspberry Pi Twitter Bot

Twitter er verdens største lager af korte beskeder fra personer med intet at sige - og nu kan du også bidrage til det episke projekt med en automatiseret Twitter-bot, der drives af din Raspberry Pi. Jeg taler jo selvfølgelig - nogle mennesker rent faktisk tweet interessante ting. Jeg er dog ikke en af ​​dem - jeg bruger min mine til skamløs produktforfremmelse i bytte for gratis ting, konkurrenceregister og automatisk bogføring af nye episoder af vores helt egen Technophilia Podcast.

Twitter er verdens største lager af korte beskeder fra personer med intet at sige - og nu kan du også bidrage til det episke projekt med en automatiseret Twitter-bot, der drives af din Raspberry Pi.  Jeg taler jo selvfølgelig - nogle mennesker rent faktisk tweet interessante ting.  Jeg er dog ikke en af ​​dem - jeg bruger min mine til skamløs produktforfremmelse i bytte for gratis ting, konkurrenceregister og automatisk bogføring af nye episoder af vores helt egen Technophilia Podcast.
Reklame

Twitter er verdens største lager af korte beskeder fra personer med intet at sige - og nu kan du også bidrage til det episke projekt med en automatiseret Twitter-bot, der drives af din Raspberry Pi. Jeg taler jo selvfølgelig - nogle mennesker rent faktisk tweet interessante ting Sådan bruger du Twitter til at søge efter mentorer i dit område af interesse Sådan bruger du Twitter til at søge efter mentorer i dit område af interesse I den virkelige verden er en mentor en klog lærer, der støtter og styrer nogen, og hjælper dem med at maksimere deres potentiale. I onlineverdenen ville du være meget heldig at finde nogen, der vil ... Læs mere. Jeg er dog ikke en af ​​dem - jeg bruger min mine til skamløs produktforfremmelse i bytte for gratis ting, konkurrenceregister og automatisk bogføring af nye episoder af vores helt egen Technophilia Podcast. Uanset hvad - mine tilhængere elsker mig!

@ w0lfiesmith Jeg hader din Twitter-konto. Så meget.

- Justin Pot (@jhpot) 21. august 2013

Nu vil jeg tilføje til nytteværdien af ​​min personlige Twitter stream ved at have en Raspberry Pi automatisk tweet sin nuværende CPU temperatur hver time, og et webcam billede!

Kom i gang

Dette projekt bruger Python; et simpelt programmeringssprog, der er ideelt til DIY-projekter. Vi begynder med at installere Twython på Pi - a Python modulet til grænseflade med Twitter; opsætning af et Twitter-program "for at få en API-nøgle; derefter gå på gøre Pi tweet ting på vores vegne. Det bliver så sjovt!

Jeg gør dette på Raspian - men det skal i teorien arbejde på ethvert Linux-baseret OS, du har på Pi 10-operativsystemerne, du kan køre med Raspberry Pi 10 operativsystemer, du kan køre med Raspberry Pi Hardwaren af ​​Raspberry Pi alene er kun den ene side af historien: I dag udforsker jeg 10 forskellige operativsystemer, du kan installere. Læs mere . Hvis du ikke allerede har det, skal du sørge for at oprette SSH, så vi kan logge ind og udføre konsolkommandoer.

Installation af Twython

Det er en god idé at køre opdateringer først. Kopier og indsæt følgende kommandoer en ad gangen - de fleste vil kræve bekræftelse.

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

Registrering af en Twitter-app

For at kunne bruge Twitter API - det vil sige REST-grænsefladen, som vi vil bruge til at sende nye tweets og generelt interagere med Twitter-udgave af Twitter-webstedet - skal vi registrere en ny app. Gør det fra dette link - du behøver ikke angive en tilbagekaldelseswebadresse, og bare lave et websted, hvis du vil.

ny-twitter-app

Du kan se noget, der ligner dette, når du er færdig - disse nøgler er unikke for dig.

Twitter-app

Som standard er appen skrivebeskyttet, så vi kan ikke offentliggøre tweets uden at ændre det til Læs og Skriv . Gå til fanen Indstillinger og skift applikationstype .

skrive- og læseadgang-adgang

Når du er gemt, skal du gå tilbage til fanen Detaljer og klikke på knappen nederst for at oprette et OAuth-adgangstoken - dette giver din adgang til din egen Twitter-konto. Opdater, og lad siden være åben til senere - vi skal kopiere klistre nogle af disse nøgler om et øjeblik.

adgang-token

Opret dit Python-projekt

Start med at oprette en ny mappe til at huske dit Tweet-projekt, og opret derefter en ny fil.

 mkdir SillyTweeter cd SillyTweeter sudo nano SillyTweeter.py 

Du kan kalde det, uanset hvad du vil, selvfølgelig.

I teksteditoren, der vises, skal du kopiere og indsætte følgende, og erstatte forbrugernøglen med den relevante nøgle fra den Twitter-applikationsside, vi forlod åbent tidligere. Hver nøgle er omgivet af enkelte citater, så sørg for ikke at savne dem. Bemærk, at ACCESS_KEY omtales som adgangstoken på Twitter- appsiden .

 #!/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]) 

Tryk Ctrl-X, og tryk på Y for at afslutte og gemme filen. Gør det eksekverbart med følgende kommando (erstatter dit Python filnavn, hvis du vælger noget andet)

 sudo chmod +x SillyTweeter.py 

Du skal nu kunne teste din evne til at sende tweets som sådan:

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

Hej Alle, dette er min Raspberry Pi tweeting dig mere nonsens

- James Bruce (@ w0lfiesmith) 29. august 2013

Tweeting din CPU Temp

Nu hvor du kan sende enhver form for nonsens, du vil have, lad os justere appen for at få fat i den aktuelle CPU-temperatur, for jeg bliver forbandet, hvis verden ikke behøver at vide det hver time.

Start med at tilføje en anden import til os bibliotek:

 import os 

Tilføj derefter følgende linjer, som erstatter den tidligere api.update_status fra ovenstående eksempel.

 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') 

Jeg vil ikke forklare denne kode for meget, fordi det ikke rigtig betyder noget - det løber en kommando, der tager fat på temperaturen, så opdeler outputet for at hente nummeret og tweets det med en brugerdefineret besked. Du kan finde den komplette eksempelkode her.

Tweeting Webcam Billeder

Lad os nu lave noget rigtigt nyttigt; vi skal tweet webcam pics. Heldigvis understøtter Twython API-funktionen update_status_with_media, hvilket gør tingene ret enkle.

Slut et USB-webcam til din enhed, og kontroller, om det er blevet genkendt med kommandoen:

 ls /dev/video* 

hvis du ser video0, har du held og lykke. Jeg brugte en Playstation 3 PSEye-cam og det fungerede fint uden yderligere arbejde.

Vi vil også bruge pygame biblioteker til at tage et billede; Tilføj følgende linjer lige efter de eksisterende importerklæringer:

 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"') 

Kort sagt, du har initialiseret webkameraet ved en bestemt opløsning (det kan være nødvendigt at justere dette, da det er en rigtig gammel cam), snappet et billede og gemt det som en jpg. Vi skal bare overskrive det samme webcam.jpg" hver gang appen køres.

Endelig juster opdateringsstatuslinjen for at læse:

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

Selvfølgelig kan du ændre statusteksten til din nuværende CPU-temperatur igen, hvis du vil. Den komplette kode til dette eksempel er her.

Min RPi er tweeting billeder nu => pic.twitter.com/NfUgLnWQtm

- James Bruce (@ w0lfiesmith) 29. august 2013

Kan du gentage det?

En Twitter-bot er kun nyttig, hvis den kører flere gange automatisk; du vil ikke sidde der kører kommandoen hver time. For at opnå dette, lad os bruge Pi's CRON scheduling-funktionen (Hvad er et CRON-job? Automatiser din Wordpress-backup med simpel Shell Scripting & CRON Automatiser din Wordpress-backup med Simple Shell Scripting & CRON Sidste gang vi talte om Wordpress-backup, viste jeg dig hvordan utrolig nemt det var at sikkerhedskopiere hele din database og filer, selvom SSH med kun få kommandoer. Denne gang vil jeg vise ... Læs mere)

 sudo crontab -e 

Indsæt i denne linje for at køre hver time.

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

Skift det til * * * * * hvis du vil have det til at køre hvert minut, og vær forberedt på at miste efterfølgere hurtigere end en Twitter-konto, der taber følgere hurtigt.

Det er for i dag. Jeg er glad for at have bidraget mere sølighed til det enorme væld af ubrugelige bytes på internettet, og jeg håber du gør det også! Vis din forståelse for denne tutorial ved at tweeting det, og lad os vide, hvad din egen Twitter-bot skal snyde om i kommentarerne.

Billedkredit: adafruit / flickr

In this article