Skip to content

Instantly share code, notes, and snippets.

@holnburger
Last active September 13, 2018 13:06
Show Gist options
  • Save holnburger/7f2ea4da54036bb19c45ecc5647e6f63 to your computer and use it in GitHub Desktop.
Save holnburger/7f2ea4da54036bb19c45ecc5647e6f63 to your computer and use it in GitHub Desktop.
# R-Script zum Tracking von Tweets und Reaktionen auf Tweets der MdBs
#---------#
# Setup #
#---------#
# Damit das Script funktioniert, müssen folgende Packete erst installiert werden
# Hier mit Rauten auskommentiert, sie müssen nur einmalig installiert werden
# install.packages("rtweet")
# install.packages("dplyr")
# install.packages("readr")
# Damit rtweet funktioniert, muss auch eine Twitter App eingerichtet werden.
# Hier die Anleitung: https://rtweet.info/
library(rtweet)
library(dplyr)
library(readr)
create_token(
app = "XXX",
consumer_key = "XXX",
consumer_secret = "XXX",
access_token = "XXX",
access_secret = "XXX")
#--------#
# Data #
#--------#
# Zunächst holen wir uns alle Tweets der MdBs (bis zu 3200 Tweets pro MdB sind möglich)
# Ich habe auf Github die twitternden MdBs gelistet, die Liste basiert auf Martin Fuchs' Liste
# mdb_list <- read_csv("https://raw.githubusercontent.com/holnburger/Twitter_German_Bundestag/master/Bundestag.csv")
#--Alternative--#
# Wir nutzen die Liste von pollytix, die hat mehr Nutzer
mdb_list <- lists_members(slug = "twitternde-mdbs", owner_user = "pollytix_gmbh")
#----------#
# Tweets #
#----------#
# Wir haben noch ein kleines Problem: Nach 52 Usern können wir für 15 Minuten keine Tweets mehr abgreifen
# Das Rate Limit von Twitter lässt nicht mehr zu. Wir bauen deshalb eine kleine Schleife,
# welche nach 52 Usern 15 Minuten wartet.
# Hier geschildert: https://github.com/mkearney/rtweet/issues/136
mdb_tweets <- vector("list", length(mdb_list$user_id))
for (i in seq_along(mdb_tweets)) {
mdb_tweets[[i]] <- try(get_timeline(mdb_list$user_id[i], n = 3200))
if (i %% 52L == 0L) {
rl <- rate_limit("get_timeline")
Sys.sleep(as.numeric(rl$reset, "secs"))
}
## print update message
cat(i, " ")
}
mdb_tweets <- do_call_rbind(mdb_tweets)
write_csv(mdb_tweets, "mdb_tweets.csv")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment