Hur man bygger en hallon Pi Twitter Bot

Twitter är världens största förteckning över korta meddelanden från personer som inte har något att säga - och nu kan du också bidra till det episka projektet med en automatiserad Twitter-bot som drivs av din Raspberry Pi. Jag skojar självklart - vissa människor tweetar faktiskt intressanta saker. Jag är dock inte en av dem - jag använder min gruva för skamlös produktreklam i utbyte mot fria saker, tävlingsposter och automatisk postning av nya episoder av vår egen Technophilia Podcast.

Twitter är världens största förteckning över korta meddelanden från personer som inte har något att säga - och nu kan du också bidra till det episka projektet med en automatiserad Twitter-bot som drivs av din Raspberry Pi.  Jag skojar självklart - vissa människor tweetar faktiskt intressanta saker.  Jag är dock inte en av dem - jag använder min gruva för skamlös produktreklam i utbyte mot fria saker, tävlingsposter och automatisk postning av nya episoder av vår egen Technophilia Podcast.
Annons

Twitter är världens största förteckning över korta meddelanden från personer som inte har något att säga - och nu kan du också bidra till det episka projektet med en automatiserad Twitter-bot som drivs av din Raspberry Pi. Jag skojar självklart - vissa människor faktiskt tweetar intressanta saker Hur man använder Twitter för att söka efter mentorer i intresseområdet Hur man använder Twitter för att söka efter mentorer i ditt intresseområde I den verkliga världen är en mentor en klok lärare som stöder och leder någon, och hjälper dem att maximera sin potential. I onlinevärlden skulle du vara mycket lycklig att hitta någon som vill ... Läs mer. Jag är dock inte en av dem - jag använder min gruva för skamlös produktreklam i utbyte mot fria saker, tävlingsposter och automatisk postning av nya episoder av vår egen Technophilia Podcast. Vad som helst - mina anhängare älskar mig!

@ w0lfiesmith Jag hatar ditt Twitter-konto. Så mycket.

- Justin Pot (@jhpot) 21 augusti 2013

Nu ska jag lägga till användbarheten av min personliga Twitter-ström genom att ha en Raspberry Pi automatiskt tweet sin nuvarande CPU-temperatur varje timme och en webbkamera bild!

Komma igång

Detta projekt använder Python; ett enkelt programmeringsspråk som är idealiskt för DIY-projekt. Vi börjar med att installera Twython på Pi-a Python-modulen för gränssnitt till Twitter. konfigurera en Twitter-applikation för att få en API-nyckel; sedan gå in gör Pi tweet saker på våra vägnar. Det kommer att bli så roligt!

Jag gör detta på Raspian - men det borde teoretiskt fungera på alla Linux-baserade operativsystem du har på Pi 10 operativsystem som du kan köra med Raspberry Pi 10 operativsystem du kan köra med hallon Pi Hårdvaran av Raspberry Pi ensam är bara en sida av historien: Idag utforskar jag 10 olika operativsystem som du kan installera. Läs mer . Om du inte redan har gjort det, se till att du konfigurerar SSH så att vi kan logga in och utföra konsolkommandon.

Installera Twython

Det är en bra idé att springa uppdateringar först. Kopiera och klistra in följande kommandon en i taget - de flesta kommer att kräva bekräftelse.

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

Registrera en Twitter-app

För att kunna använda Twitter API - det vill säga det REST-gränssnitt som vi ska använda för att skicka nya tweets och i allmänhet interagera med Twitter-versionen av Twitter-webbplatsen - måste vi registrera en ny app. Gör det från den här länken - du behöver inte ange en återuppringningsadress och bara skapa en webbplats om du vill.

nya twitter-app

Du ser något som liknar detta när du är klar - dessa nycklar är unika för dig.

twitter-app

Som standard är appen skrivskyddad, så vi kan inte publicera tweets utan att ändra det till Läs och skriv . Gå till fliken Inställningar och ändra programtypen .

läs-skriv-åtkomst

När du väl har sparat, gå tillbaka till fliken Detaljer och klicka på knappen längst ner för att skapa en OAuth-åtkomsttoken - detta ger din ansökan tillgång till ditt eget Twitter-konto. Uppdatera och lämna sidan öppen för senare - vi måste kopiera klistra in några av dessa nycklar på en minut.

access-token

Skapa ditt Python-projekt

Börja med att skapa en ny katalog för att hämta ditt Tweet-projekt och skapa en ny fil.

 mkdir SillyTweeter cd SillyTweeter sudo nano SillyTweeter.py 

Du kan kalla det vad du vill, självklart.

I textredigeraren som visas kopierar du och klistrar in följande, ersätter konsumentnyckeln med den relevanta nyckeln från den Twitter-applikationssida som vi lämnade tidigare. Varje nyckel är omgiven av enkla citat, så var noga med att inte missa dem. Observera att ACCESS_KEY kallas åtkomsttoken på Twitter-appsidan.

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

Tryck Ctrl-X och tryck på Y för att avsluta och spara filen. Gör det körbart med följande kommando (ersätter ditt Python-filnamn om du väljer något annat)

 sudo chmod +x SillyTweeter.py 

Du borde nu kunna testa din förmåga att skicka tweets som så:

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

Hej Alla, det här är min Raspberry Pi tweeting dig mer nonsens

- James Bruce (@ w0lfiesmith) 29 augusti 2013

Tweeting din CPU Temp

Nu när du kan skicka någon form av nonsens du vill, låt oss justera appen för att fånga den aktuella CPU-temperaturen, för jag blir fördömd om världen inte behöver veta det varje timme.

Börja med att lägga till en annan import för os-biblioteket:

 import os 

Lägg sedan till följande rader, ersätter föregående api.update_status från exemplet ovan.

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

Jag kommer inte att förklara denna kod för mycket eftersom det inte spelar någon roll - det kör ett kommando som tar emot temperaturen, splittrar sedan utmatningen för att extrahera numret och tweets det med ett anpassat meddelande. Du kan hitta den fullständiga exemplenkoden här.

Tweeting Webcam bilder

Låt oss nu göra något riktigt användbart. vi ska gå till tweet webbkameror bilder. Tack och lov stödjer Twython API-funktionen update_status_with_media, vilket gör sakerna ganska enkla.

Anslut en USB-webbkamera till din enhet och kontrollera om den har blivit igenkänd med kommandot:

 ls /dev/video* 

Om du ser video0 har du tur. Jag använde en Playstation 3 PSEye-kamera och det fungerade bra utan några extra drag

Vi ska också använda pygamebiblioteken för att ta en bild; Lägg till följande rader strax efter de befintliga importansökningarna:

 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 initierat webbkameran med en viss upplösning (du kanske behöver justera detta är det är en riktigt gammal kamera), knäppte en bild och sparade den som en jpg. Vi kommer bara att skriva över samma webbkamera.jpg" varje gång appen körs.

Slutligen justera uppdateringsstatuslinjen för att läsa:

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

Naturligtvis kan du ändra statustexten till din nuvarande CPU-temperatur igen, om du vill. Den fullständiga koden för det här exemplet är här.

Min RPi är tweeting bilder nu => pic.twitter.com/NfUgLnWQtm

- James Bruce (@ w0lfiesmith) 29 augusti 2013

Kan du upprepa det?

En Twitter-bot är bara användbar om den körs flera gånger automatiskt. du vill inte sitta där kör kommandot varje timme. För att uppnå detta, låt oss använda Pi: s CRON-schemaläggningsfunktion (Vad är ett CRON-jobb? Automatisera din Wordpress-säkerhetskopiering med enkel Shell Scripting & CRON Automatisera din Wordpress-säkerhetskopiering med enkel Shell Scripting & CRON Förra gången vi pratade om Wordpress-säkerhetskopior visade jag dig hur otroligt enkelt var det att säkerhetskopiera hela din databas och filer men SSH med bara några kommandon. Den här gången kommer jag att visa ... Läs mer)

 sudo crontab -e 

Klistra in den här raden för att köra varje timme.

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

Ändra det till * * * * * om du vill att det ska köra varje minut och vara beredd att förlora följare snabbare än ett Twitter-konto som snabbt förlorar följare.

Det är för idag. Jag är glad att jag har bidragit mer silliness till den stora mängd ofanlösa byte på Internet, och jag hoppas du gör det också! Visa din uppskattning för denna handledning genom att tweeta den och låt oss sedan veta vad din egen Twitter bot kommer att tweet om i kommentarerna.

Bildkredit: adafruit / flickr

In this article