Поток Twitter преждевременно отключается с помощью пакета R - PullRequest
1 голос
/ 01 февраля 2020

Я пытаюсь загрузить прямой поток твитов с помощью пакета r {rtweet}.
Похоже, что при использовании непопулярных хэштегов я получаю следующее сообщение:

Потоковые твиты за 600 секунд ...
Поток преждевременно отключился. Переподключение ...

Когда я использую популярный хэштег, похоже, это происходит не так часто,
Но через некоторое время поток действительно отключается ...

Я использую time l oop и if else, чтобы добавлять новые твиты каждые 10 минут в таблицу googlesheet. Мой код также добавляет столбец с отметкой времени для каждой итерации, которая выполняется.

Может кто-нибудь помочь мне понять, почему он хорошо работает с популярными твитами (например, #trump), а не с тем, что в данный момент не имеет тенденций? Код должен добавлять пустую строку, если в течение 10 минут потоковой передачи не найдены твиты с индексным хэштегом. Когда это работает, это прекрасно работает, но, может быть, мне нужно что-то изменить, чтобы непопулярные или нетрендовые твиты не вызывали его отключение?

Я читал этот предыдущий пост, который, кажется, указывает на подобную проблему, но я не думаю, что я должен получить эту ошибку с 10-минутными интервалами. ссылка на предыдущий вопрос Я пытался запустить этот скрипт с использованием популярного хэштега с интервалом в 3 часа, и после ночного запуска он все еще преждевременно отключался.

В случае разрыва соединения, как я могу автоматизировать повторный запуск сценария снова в rstudio? Скажите, если я не рядом с моим компьютером, когда это произойдет?

Любая помощь очень ценится.

library(rtweet)
library(googlesheets4)
library(googlesheets)
library(googledrive)

googlesheets4::sheets_auth(email = "someemail",
                       token = "somestring")



ss <- sheets_get("URL to googlesheet goes here") 

while (Sys.Date() < "2020-02-15"){

newtweets <- stream_tweets(q = "some hashtags go here", 
                         timeout = 60*10, 
                         file_name = NULL,
                         parse = TRUE)

if(is.null(newtweets)) {

newtweets <- data.frame(matrix(ncol = 91, nrow= 1))
colnames(newtweets) <- c("user_id", "status_id", "created_at", "screen_name", "text", 
                         "source", "display_text_width", "reply_to_status_id", "reply_to_user_id", 
                         "reply_to_screen_name", "is_quote", "is_retweet", "favorite_count", 
                         "retweet_count", "quote_count", "reply_count", "hashtags", "symbols", 
                         "urls_url", "urls_t.co", "urls_expanded_url", "media_url", "media_t.co", 
                         "media_expanded_url", "media_type", "ext_media_url", "ext_media_t.co", 
                         "ext_media_expanded_url", "ext_media_type", "mentions_user_id", 
                         "mentions_screen_name", "lang", "quoted_status_id", "quoted_text", 
                         "quoted_created_at", "quoted_source", "quoted_favorite_count", 
                         "quoted_retweet_count", "quoted_user_id", "quoted_screen_name", 
                         "quoted_name", "quoted_followers_count", "quoted_friends_count", 
                         "quoted_statuses_count", "quoted_location", "quoted_description", 
                         "quoted_verified", "retweet_status_id", "retweet_text", "retweet_created_at", 
                         "retweet_source", "retweet_favorite_count", "retweet_retweet_count", 
                         "retweet_user_id", "retweet_screen_name", "retweet_name", "retweet_followers_count", 
                         "retweet_friends_count", "retweet_statuses_count", "retweet_location", 
                         "retweet_description", "retweet_verified", "place_url", "place_name", 
                         "place_full_name", "place_type", "country", "country_code", "geo_coords", 
                         "coords_coords", "bbox_coords", "status_url", "name", "location", 
                         "description", "url", "protected", "followers_count", "friends_count", 
                         "listed_count", "statuses_count", "favourites_count", "account_created_at", 
                         "verified", "profile_url", "profile_expanded_url", "account_lang", 
                         "profile_banner_url", "profile_background_url", "profile_image_url", "iteration")

} else {

newtweets[1:dim(newtweets)[1], "iteration"] <- as.character(Sys.time())
newtweets <- apply(newtweets, c(1,2), as.character)
newtweets <- as.data.frame(newtweets) 


}

sheets_append(newtweets, ss = ss, sheet = "mytweets")



}
...