Artikel top billede

(Foto: Computerworld)

Guide: Lav en Twitter Bot på Raspberry Pi

Den mest enkle beskrivelse af en Twitter bot er et program, der er designet til at skabe automatiserede indlæg på Twitter. Den mest udbredte brug for botter er spam.

Af Mette Eklund, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Botten undersøger nøgleord – for eksempel rengøringsmidler – og svarer med et reklame-link, som fører folk hen til spammerens hjemmeside, når de klikker.

Denne funktion har dog også ikke-spamrelaterede brugsanvendelser. Botter kan programmeres til at søge for ethvert ord eller sætning og reagere på en given måde. En underholdende implementation af dette var @BDZNappa, som søgte efter folk, der tweetede sætningen “over 9000,” hvortil den altid svarede, “HVAD!? NITUSIND?” Botter kan også tweete fra en tekstkilde såsom @SunTzuBot, som dagligt tweeter citater fra bogen ”The Art of War”. Mere sofistikerede botter, såsom @JustDiedBot, søger aktivt internettet for kildemateriale.

@JustDiedBot søger Wikipedia for information om nylige dødsfald og tweeter RIP-annonceringer, når det sker.       

1 Indledende skridt

Botter har også praktiske formål. De kan programmeres til at tweete med regelmæssige intervaller, så den kan bruges som en “dødmandsknap” til at tweete en besked, medmindre du nulstiller den hver dag. Det er også muligt at planlægge et tweet til en fremtidig dato, så du kan bruge botten til at sende påmindelser ud.

>> Hvis nogle af disse muligheder gør dig nysgerrig, så skal du oprette en dedikeret Twitter-konto til din bot. Undgå at blive fristet til at bruge din eksisterende Twitter-konto til dette, hvis du har en, for gentagne tweets kan blive fejltolket som spam af Twitter, og din konto kan blive suspenderet.

> For at fortsætte skal vi bruge en ny Twitterkonto med et bekræftet telefonnummer. Hvis du allerede har en Twitterkonto, så gå til https://support.twitter.com/articles/81940# og følg trinnene der for at slette dit mobilnummer fra din konto i hvert fald foreløbigt.

2 Lav en ny twitterkonto og app

Derefter skal du gå til www.twitter.dk og vælge “Tilmed dig Twitter.” Du kan bruge enhver e-mailadresse, du ønsker, så længe den ikke allerede er registreret hos Twitter. Vælg et navn der er passende for din bot. Til denne guide, skaber vi en bot, der hedder Sherlock Bot, med bruger-ID @holmesbot1 [Billede A].

>> Du vil blive bedt om et mobiltelefonnummer, og derefter bekræfte det via sms. Twitter kræver dette for botter for at reducere risikoen for spam.

>> Når du har skabt din Twitter-konto, skal du måske trykke fortsæt et par gange i øverste højre hjørne for at springe over vigtige invitationer til dine kontakter eller følge andre brugere.

>> Derefter skal vi lave en Twitter-app, der gør din Raspberry Pi i stand til at tilgå din Twitterkonto. Gå til http://apps.twitter.com og klik derefter “Create New App.”

3 De vigtige detaljer

Du bliver bedt om at udfylde “Application Details.” Til denne guide, skaber vi en bot, der regelmæssigt tweeter fra Sherlock Holmes’ historier, men du er velkommen til at ændre “Name” og “Description”, som det passer dig.

>> Under “Website” skal du lige nu bare skrive “http://www.twitter.com.” Undlad at skrive noget i feltet “Callback URL”. Klik på boksen, der siger, at du er enige i Twitter Developer Agreement, og klik derefter på den grå knap ved navn “Create your Twitter Application.”

>> Sørg for, at “Access Level” står som “Read and Write.” Hvis ikke, så klik “Modify App Permissions” for at ændre det. Derefter skal du klikke på “Manage Keys and Access Tokens.” Scroll ned til bunden af siden og klik på den grå knap ved navn “Create My
Access Token.”

>> Du vil se en besked, der siger, at dit adgangsbevis er blevet genereret. Gem en kopi af denne side på et sikkert sted, eller lad den stå åben i din browser, for vi skal snart bruge den.

Nævneværdige botter

Twitter bot.

Botter har eksisteret i flere år, og nogle har endda tusindvis af følgere. Nogle af dem reagerer blot på ord i tweets. For eksempel vil alle, der bruger sætningen “illegal immigrant” kunne forvente et svar fra @DroptheIBot der siger, “People aren’t illegal”. Prøv i stedet at sige ‘undocumented immigrant’ eller ‘unauthorized immigrant’, og botten vil lade dig være i fred.”

Så er der botten @everyword som begyndte at tweete alle ord i det engelske sprog i 2007. Den tweetede et nyt ord hver halve time, indtil den var færdig i 2014, efter 109.157 ord. Der er også botter, der eksisterer for at være politiske parodier.

Hvis du nævner ordene “communism” eller “socialism” provokerer det botten @RedScareBot Robot J McCarthy, som vil fortælle dig, at en “Red Storm is rising” og at du skal “circle the wagons.” @DeepDrumpf er en Twitter-bot skabt af MIT, som bruger neural netværksteknologi til at analysere data og poste tweets i en stil, der skulle minde om Donald Trumps måde at tale på.

Udviklere hævder, at botten blev trænet via transkriptioner af Trumps taler. Twitter-botten @factbot1 gør også brug af billeder. Skaberen Eric Drass programmerede botten som svar på tendensen, nogle folk har til at tro på ubeviste påstande, blot de er akkompagneret af et billede. Botten udsender regelmæssige tweets med næsten sande og meningsløse udtalelser.

Et sådan tweet er, at den canadiske regering får 38 % af deres indkomst fra salget af donuts. Det er plausibelt taget betragtning af de landsdækkende Tim Hortons caféer i landet, men det er desværre ikke sandt.

4 Opsætning på pi

Derefter skal du åbne terminal-appen på din Raspberry Pi eller skabe forbindelse til den via SSH. Vi er nødt til at installere lidt ekstra software ved at bruge følgende kommando:

sudo easy_install pip

>> Derefter skal du lave en mappe til botten og åbne den:
mkdir holmesbot1 && cd holmesbot1

>> Til dette eksempel skal vi bruge et Python-bibliotek skabt af Edwin Dalmaijer, ved navn Markovbot. I bund og grund tager softwaren noget tekst fra en kilde (i dette tilfælde, The Adventures of Sherlock Holmes) og tilfældigt skaber plausibelt-lydende sætninger med det.

>> Du skal downloade og udpakke softwaren med følgende kommando:
wget https://github.com/esdalmaijer/markovbot/
archive/master.zip && unzip master.zip

>> Gå til den nye mappe med cd markovbot-master og installer mere vigtig software med disse kommandoer:
wget https://bootstrap.pypa.io/ez_setup.py && sudo
python ez_setup.py
sudo easy_install twitter

> Nu skal vi downloade en tekstfil til at bruge som kilde for bottens tilfældige tweets. Denne fil kommer fra Project Gutenberg website, men du kan bruge enhver TXT-fil, du ønsker:
wget http://www.gutenberg.org/cache/epub/1661/pg1661.txt

 

> Derefter skaber vi en tom fil til din kode. Du kan vælge ethvert navn, du ønsker, så længe du bruger endelsen.py :
nano sherlock1.py

>> Sæt følgende kode ind i den nye fil:
import os
import time
from markovbot import MarkovBot

# # # # #
# INITIALIZE

# Initialize a MarkovBot instance
tweetbot = MarkovBot()

# Get the current directory’s path
dirname = os.path.dirname(os.path.abspath(__file__))
# Construct the path to the book
book = os.path.join(dirname, u‘pg1661.txt’)
# Make your bot read the book!
tweetbot.read(book)


# # # # #
# TWITTER

# The MarkovBot uses @sixohsix’s Python Twitter Tools,
# which is a Python wrapper for the Twitter API. Find it on
# GitHub: https://github.com/sixohsix/twitter

# ALL YOUR SECRET STUFF!
# Make sure to replace the bits in quotation marks below with
# your own values, or try to find a more secure way of dealing
# with your keys and access tokens. Be warned that it is NOT
# SAFE to put your keys and tokens in a plain-text script!

# Consumer Key (API Key)
cons_key = ‘yourconsumerkeyhere’
# Consumer Secret (API Secret)
cons_secret = ‘yourconsumersecrethere’
# Access Token
access_token = ‘youraccesstokenhere’
# Access Token Secret
access_token_secret = ‘youraccesstokensecrethere’

# Log in to Twitter
tweetbot.twitter_login(cons_key, cons_secret, access_token,
access_token_secret)
# Start periodically tweeting. This will post a tweet
# every minute.
# (You’re free to choose your own interval, but please
# don’t use it to spam other people. Nobody likes spammers
# and trolls.)
# This function operates in a Thread in the background,
# so your code will not block by calling it.
tweetbot.twitter_tweeting_start(days=0, hours=0, minutes=1,
keywords=None, prefix=None, suffix=‘#IamSherlocked’)

5 Indtast dine personlige værdier

Når koden først er indsat, kan du herefter bruge piletasterne til at navigere videre til både ‘yourconsumerkeyhere’ , ‘yourconsumersecrethere’ , ‘youraccesstokenhere’ og ‘youraccesstokensecrethere’ , og erstatte disse med de oplysninger fra Twitters hjemmeside, som du noterede eller gemte tidligere (punkt 3). Undlad citat-tegnene.

Du vil også bemærke filnavnet pg661.txt under ordene Construct the path to the book , så du skal også ændre filnavn til din egen tekstfil.

>> Scroll nu ned til bunden af koden og bemærk, at koden som udgangspunkt vil tweete hvert minut.

Du kan ændre dette - for eksempel til én gang om dagen :
days=1, hours=0, minutes=0 .

Tilsidst vil du måske ændre det suffiks, der er indsat efter hvert tweet til noget andet eller til None .

>> Tryk Ctrl-X når du er færdig, derefter Y, og så enter for at gemme. Du kan altid køre dit script med kommandoen:
sudo python sherlock1.py

>> Sørg for at erstatte sherlock1.py med det aktuelle navn på din film. Terminalen vil vise dine tweets, men du kan også tjekke på hjemmesiden.

 

6 Kom videre ...

Der er mange flere Python-projekter, du kan lave med Twitter, inklusiv at reagere på nøgleord, automatisk retweete og endda snuppe informationer fra hjemmesider såsom børspriser.

Smut over på www.raspberrypi.org/blog/tag/python/ for at se nogle af de spændende projekter, der er opnået med Python.