R言語:{rtweet}で収集した人気ツイートから画像を一括ダウンロードする
rtweetパッケージで取得したツイートのデータから、画像を一気にDLします。
特定の話題に関する画像、流行の画像を一気に集めたい時に便利です。
# libraryの読み込み
require("rtweet")
require("tidyverse")
# token
twitter_token <- create_token(app = "****", # 自分で設定したappの名前
consumer_key = "****", # Consumer Keyを入力
consumer_secret = "****", # Consumer Secretを入力
access_token = "****",
access_secret = "****")
# todayに今日の日付と時刻を取得
today <- Sys.Date()
now <- Sys.time()
ti <- format(now, "%H%M%S")
# search_tweet
x = "レシピ" # search_word
# type= "mixed", include_rts = TRUEでよくリツイートされる人気ツイートを収集します。
rt <- search_tweets(x, n = 18000, retryonratelimit = FALSE, type= "mixed", include_rts = TRUE) # リツイートを含む
# YYYY-MM-DD-HHMMSS_pics というフォルダを作り作業フォルダをそこへ移動
dir.create(paste(today, "-", ti, "_", x, "pics", sep = ""), showWarnings = F, recursive = T)
setwd(paste0(today, "-", ti, "_", x, "pics/", sep = ""))
# 画像DL用関数の定義
dl_url <- function(dat){
download.file(dat, destfile = basename(dat), mode ="wb")
Sys.sleep(0.5)
}
# 画像のあるツイートを重複を除きRT順に並べる
rt2 <- rt %>%
filter(!is.na(media_url)) %>%
arrange(desc(favorite_count)) %>%
distinct(status_id, .keep_all = TRUE) %>%
distinct(ext_media_url, .keep_all=TRUE) %>%
arrange(desc(retweet_count)) %>%
unnest(ext_media_url) %>%
slice(1:100) # ダウンロードしたい画像数を入力
# DL!
rt2$ext_media_url %>% walk(dl_url)
# 作業フォルダをhomeに戻す
setwd(Sys.getenv("HOME"))
結果
Good!
おまけ
webshot2で一気にツイートのスクショを撮ることもできます。
魚拓のように使えるかもしれません。
library(webshot2)
for (i in 1:length(rt2$status_url)) {
webshot2::webshot(rt2$status_url[i], paste0(x, "_", "screenshot.png", sep=""), zoom=1, vwidth = 850, vheight = 1300, delay=0.6)
Sys.sleep(1)
}