Last active
September 13, 2018 13:06
-
-
Save holnburger/7f2ea4da54036bb19c45ecc5647e6f63 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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