Hvordan bygge en Raspberry Pi Twitter Bot

Twitter er verdens største lagringssted for korte meldinger fra folk som ikke har noe å si - og nå kan du også bidra til det episke prosjektet med en automatisert Twitter-bot, drevet av Raspberry Pi. Jeg tuller, selvfølgelig - noen mennesker faktisk tweet interessante ting. Jeg er imidlertid ikke en av dem - jeg bruker min min for skamløs produktfremme i bytte for gratis ting, konkurranseoppføringer og automatisk innlegging av nye episoder av vår egen Technophilia Podcast.

Twitter er verdens største lagringssted for korte meldinger fra folk som ikke har noe å si - og nå kan du også bidra til det episke prosjektet med en automatisert Twitter-bot, drevet av Raspberry Pi.  Jeg tuller, selvfølgelig - noen mennesker faktisk tweet interessante ting.  Jeg er imidlertid ikke en av dem - jeg bruker min min for skamløs produktfremme i bytte for gratis ting, konkurranseoppføringer og automatisk innlegging av nye episoder av vår egen Technophilia Podcast.
Annonse

Twitter er verdens største lagringssted for korte meldinger fra folk som ikke har noe å si - og nå kan du også bidra til det episke prosjektet med en automatisert Twitter-bot, drevet av Raspberry Pi. Jeg tuller, selvfølgelig - noen mennesker faktisk tweet interessante ting. Slik bruker du Twitter for å søke etter mentorer i ditt område. Slik bruker du Twitter for å søke etter mentorer i ditt område av interesse. I den virkelige verden er en mentor en klok lærer som støtter og leder noen, og hjelper dem med å maksimere sitt potensial. I den elektroniske verden, ville du være veldig heldig å finne noen som vil ... Les mer. Jeg er imidlertid ikke en av dem - jeg bruker min min for skamløs produktfremme i bytte for gratis ting, konkurranseoppføringer og automatisk innlegging av nye episoder av vår egen Technophilia Podcast. Uansett - mine følgere elsker meg!

@ w0lfiesmith Jeg hater Twitter-kontoen din. Så mye.

- Justin Pot (@jhpot) 21. august 2013

Nå skal jeg legge til nytten av min personlige Twitter-strøm ved å ha en Raspberry Pi automatisk tweet sin nåværende CPU-temperatur hver time, og et webkamera bilde!

Starter

Dette prosjektet bruker Python; et enkelt programmeringsspråk som er ideelt for DIY-prosjekter. Vi begynner med å installere Twython på Pi-a Python-modulen for grensesnitt med Twitter; sette opp et Twitter-program for å få en API-nøkkel; deretter gå inn gjør Pi tweet ting på våre vegne. Det kommer til å bli så gøy!

Jeg gjør dette på Raspian - men det skal i teorien jobbe på alle Linux-baserte operativsystemer du har på Pi 10 operativsystemene du kan kjøre med Raspberry Pi 10 operativsystemer du kan kjøre med Raspberry Pi Hardwaren av Raspberry Pi alene er bare en side av historien: I dag undersøker jeg 10 forskjellige operativsystemer du kan installere. Les mer . Hvis du ikke allerede har det, må du sørge for at du konfigurerer SSH, slik at vi kan logge på og utføre konsollkommandoer.

Installerer Twython

Det er en god ide å kjøre oppdateringer først. Kopier og lim inn følgende kommandoer en om gangen - de fleste krever bekreftelse.

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

Registrerer en Twitter-app

For å kunne bruke Twitter API - det vil si REST-grensesnittet som vi skal bruke til å legge inn nye Tweets og generelt samhandle med Twitter-utgave av Twitter-nettstedet - vi må registrere en ny app. Gjør det fra denne linken - du trenger ikke spesifisere en tilbakekallingsadresse, og bare lage et nettsted hvis du vil.

ny-twitter-app

Du ser noe som ligner på dette når du er ferdig - disse nøklene er unike for deg.

twitter-app

Appen er som standard satt til skrivebeskyttet, så vi kan ikke publisere tweets uten å endre det til Les og skriv . Gå til fanen Innstillinger og endre programtypen .

Readwrite-tilgang

Når du er lagret, gå tilbake til fanen Detaljer og klikk på knappen nederst for å opprette en OAuth-tilgangstoken - dette gir tilgang til din egen Twitter-konto. Oppdater, og la siden være åpen for senere - vi må kopiere lim inn noen av disse nøklene om et minutt.

access-token

Lag ditt Python-prosjekt

Begynn med å lage en ny katalog for å huse ditt Tweet-prosjekt, og opprett en ny fil.

 mkdir SillyTweeter cd SillyTweeter sudo nano SillyTweeter.py 

Du kan kalle det uansett, selvsagt.

I tekstredigeringsprogrammet som vises, kopier og lim inn følgende, og erstatter forbruksnøkkelen med den aktuelle nøkkelen fra Twitter-applikasjonssiden, som vi igjen åpnet tidligere. Hver nøkkel er omgitt av enkelt anførselstegn, så vær sikker på at du ikke savner dem. Legg merke til at ACCESS_KEY er referert til som tilgangstoken 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]) 

Trykk Ctrl-X, og trykk Y for å avslutte og lagre filen. Gjør det kjørbar med følgende kommando (erstatter Python filnavn hvis du velger noe annet)

 sudo chmod +x SillyTweeter.py 

Du bør nå kunne teste din evne til å legge inn tweets som dette:

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

Hei Alle, dette er min Raspberry Pi tweeting deg mer nonsens

- James Bruce (@ w0lfiesmith) 29. august 2013

Tweeting CPU Temp

Nå som du kan legge inn noe slags nonsens du vil, la oss justere appen for å ta tak i den nåværende CPU-temperaturen, fordi jeg vil bli forbannet hvis verden ikke trenger å vite det hver time.

Start med å legge til en annen import for os-biblioteket:

 import os 

Deretter legger du til følgende linjer, erstatter forrige api.update_status fra eksemplet ovenfor.

 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 koden for mye fordi det egentlig ikke betyr noe - det kjører en kommando som tar tak i temperaturen, og deler opp resultatet for å trekke ut nummeret, og tweets det med en egendefinert melding. Du finner den komplette eksemplskoden her.

Tweeting Webcam bilder

La oss nå gjøre noe veldig nyttig; vi skal tweet webkamera pics. Heldigvis støtter Twython API-funksjonen update_status_with_media, noe som gjør tingene ganske enkle.

Koble et USB-webcam til enheten din og kontroller om det er blitt gjenkjent med kommandoen:

 ls /dev/video* 

hvis du ser video0, har du lykke til. Jeg brukte en Playstation 3 PSEye-kamera, og det fungerte bra uten noen ekstra legwork.

Vi skal også bruke pygamebibliotekene til å ta et bilde; legg til følgende linjer like etter de eksisterende importerklæringene:

 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 initialisert webkameraet ved en bestemt oppløsning (du må kanskje justere dette er det er en veldig gammel cam), snappet et bilde og lagret det som en jpg. Vi skal bare overskrive det samme webcam.jpg" hver gang appen kjøres.

Endelig juster oppdateringsstatuslinjen for å lese:

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

Selvfølgelig kan du endre statusteksten til din nåværende CPU-temperatur igjen, hvis du vil. Den komplette koden for dette eksemplet er her.

Min RPi er tweeting bilder nå => pic.twitter.com/NfUgLnWQtm

- James Bruce (@ w0lfiesmith) 29. august 2013

Kan du gjenta det?

En Twitter-bot er bare nyttig hvis den kjører flere ganger, automatisk; du vil ikke bli sittende der kjører kommandoen hver time. For å oppnå dette, la oss bruke Pi's CRON-planleggingsfunksjonen (Hva er en CRON-jobb? Automatiser din Wordpress-sikkerhetskopiering med enkel Shell Scripting & CRON Automatiser din Wordpress-sikkerhetskopiering med enkel Shell Scripting & CRON Sist gang vi snakket om Wordpress-sikkerhetskopier, viste jeg deg hvordan utrolig enkelt det var å sikkerhetskopiere hele databasen og filene, selv om SSH med bare noen få kommandoer. Denne gangen skal jeg vise ... Les mer)

 sudo crontab -e 

Lim inn i denne linjen, for å løpe hver time.

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

Endre det til * * * * * hvis du vil at det skal løpe hvert minutt, og vær forberedt på å miste tilhengere raskere enn en Twitter-konto som fortaber følgere raskt.

Det er for i dag. Jeg er glad for å ha bidratt mer silliness til det enorme vell av ubrukelige bytes på Internett, og jeg håper du gjør det også! Vis din takknemlighet for denne opplæringen ved å tweet den, og gi oss beskjed om hva din egen Twitter-bot kommer til å snakke om i kommentarene.

Bilde kreditt: adafruit / flickr

In this article