はじめに
rOpenSci (v. 0.6.9) によってレビューされたrtweet
パッケージは、TwitterのRESTおよびストリームAPIを介して、Twitterのデータを収集・整理するために設計・実装された。
それを使用するためのR環境の初期設定については、 過去記事の「R/rtweetとか諸々を使って、つぶやきのテキスト解析 (形態素分析 + 感情分析) をやってみた件」を 参考にしてみてください。
rtweetパッケージのインストール
rtweetパッケージは、CRAN版と開発版が使える。 インストールの仕方がそれぞれで変わってくる。
#CRANからリリース版のインストールの場合 install.packages("rtweet") #GitHubから開発版のインストールの場合 install.packages("rtweet", repos = 'https://ropensci.r-universe.dev')
テキストをつぶやく
Twitterの基本操作としては、 ツイート、リプライ(返信)、いいね、リツイートなどがある。 1回につき140文字までのテキスト(=ツイート)や画像を投稿することができる。
post_tweet
関数を使って、
ユーザーのTwitterアカウントにステータスアップデートを投稿する。
いわゆる、Twitterのツイートを行うことである。
テキストをつぶやく場合には、status
の引数を使う。
#ロード library(rtweet) #テキストをつぶやく post_tweet( status = "何かをつぶやく" ) #Twitterサイトを開いて、確認する browseURL("https://twitter.com/home?lang=ja")
画像をつぶやく
また、画像をつぶやく場合には、media
の引数を使う。
適当な画像(e.g. R言語のロゴ)を用意して、mediaにそのパスを記述する。
#画像をつぶやく post_tweet(media = "Rlogo.png")
Twitterアカウントに行くと、Rロゴが出力されている。
また、エラー: Media and alt_text must be character vectors.のエラーが出る場合、
media_alt_text
の引数で、何かキーワードを入れる必要があるみたいです。
まとめ
post_tweet関数で、テキストとか画像とかをつぶやける。 他の関数と組み合わせることで、解析結果をツイートする、Botとかもできそうに思う。 近々、rtweetパッケージを使って、Bot作りもやってみようと思う。
補足
全てのフレンドのフォローを辞めるTips
ツイッターを長くやっていると、色々とフレンドのフォローが増えてくる。 なかには、如何わしいフレンドも。。気づけは、フォローが5000人。 スマホのアプリではもう削除しきれません。。
そんなとき、post_unfollow_user関数で、バサバサとフレンドを削除できます。
一度、全てのツイッターフレンドのフォローを辞めて、リフレッシュしましょう。
#パッケージ・ロード library(rtweet) #フレンドのID取得 a <- get_friends(user = "Your Account Name") #フレンドのフォローを辞める: 1回ごとに0.25秒待ちを入れている for(n in 1:nrow(a)){ post_unfollow_user(user = as.character(a[n,2])) Sys.sleep(0.25) print(n) }
最後に、ツイッターアカウントのフレンドが居なくなっていることを確認しましょう。
闇を消そう、、Twitterのポストを全削除するTips
ツイッターを長くやっていると、色々と変なポストやリツイートが増えてきます。 気づけは、ポストが1000近くなっています。 こちらも、スマホのアプリでの削除はやってられません。
そんなとき、post_destroy関数で、バサバサとツイートを削除できます。
post_destroy関数で、過去の闇ともオサラバしましょう。
ツイートが多い場合は、get_timeline関数で、改めて自分のタイムラインを取得することをお勧めします。
##投稿削除 #パッケージ・ロード library(rtweet) #自身のタイムラインを取得(多い場合は、削除後に再取得を繰り返す) a <- get_timeline(user = "Your Account Name", n=1000) #つぶやき数 dim(a) #[1] 873 43 #ポストの全削除 for(n in 1:nrow(a)){ post_destroy(destroy_id = a$id_str[n]) Sys.sleep(0.25) #print(n) }
最後に、ツイッターアカウントのツイートが無くなっていることを確認しましょう。
闇からの開放企画: ユーザーが行った「いいね」をすべて削除するTips
ツイッターを長くやっていると、「いいね」もなかなか厄介です。 某国では、不適切なポストへの「いいね」をすると、逮捕されます。 そういうことがないように、不適切な「いいね」は消しておきましょう。。
そんなとき、get_favorites関数で、バサバサと「いいね」を削除できます。
#パッケージ・ロード library(rtweet) #「いいね」したツイートIDを取得: いいねが多い場合は、何回か繰り返します a <- get_favorites(user = "Your Account Name", n=1000) #ツイート数 dim(a) #[1] 908 43 #「いいね」の削除 for(n in 1:nrow(a)){ try(post_favorite(status_id=a$id_str[n], destroy = TRUE), silent = TRUE) Sys.sleep(0.25) print(n) }
最後に、ツイッターアカウントの「いいね」が消えて無くなってることを確認しましょう。
rtweet内の関数の概要(機械翻訳)
関数名 | 概要 |
---|---|
as_screenname | ユーザー識別子をスクリーンネームとして評価するよう強制します。 |
bearer_token | ベアラートークン。 |
create_token | Twitter 認証トークンを作成します。 |
direct_messages | 認証したユーザが送受信したダイレクトメッセージを取得します。を過去30日間から取得します。 |
do_call_rbind | データフレームのリストを、属性(ツイートやユーザー)を保持したままバインドする |
emojis | 絵文字のコードと説明のデータです。 |
flatten | データフレームをフラット化/アンフラット化する |
get_collections | ユーザIDやステータスIDでコレクションを取得する |
get_favorites | 対象ユーザがお気に入りに登録しているステータスのツイートデータを取得する。 |
get_followers | 対象ユーザをフォローしているアカウントのユーザIDを取得します。 |
get_friends | 対象のユーザーにフォローされているアカウントのユーザーIDを取得します。 |
get_mentions | 認証したユーザーのメンションを取得します。 |
get_my_timeline | 自分のタイムラインを取得します。 |
get_retweeters | 指定されたステータスをリツイートしたユーザのユーザIDを取得します。 |
get_retweets | 特定の Twitter ステータスに対する直近のリツイートを取得します。 |
get_timeline | 1人または複数のユーザのタイムライン(対象ユーザが投稿したツイート)を取得します。 |
get_tokens | Twitter の認証トークンを取得する。 |
get_trends | Twitter のトレンドデータを取得する。 |
langs | Twitter のデータで認識される言語コード。 |
lat_lng | ツイッターデータに緯度・経度の変数を追加します。 |
lists_members | Twitterのリストメンバー(リスト上のユーザー)を取得します。 |
lists_statuses | 指定したリストのメンバーが作成したツイートのタイムラインを取得します。 |
lists_subscribers | 指定したリストの購読者を取得します。 |
lists_subscriptions | 指定したユーザーのリスト購読者を取得します。 |
lists_users | 指定したユーザが購読しているすべてのリスト (自分自身のリストも含む) を取得します。 |
lookup_collections | コレクションを、ユーザ名あるいはステータス ID で取得します。 |
lookup_coords | 指定した位置の座標を取得します。 |
lookup_friendships | 指定した二人のユーザ間の友人関係を調べます。 |
lookup_statuses | 指定したステータス (ステータス ID) に対応するツイートデータを取得します。 |
lookup_users | 指定したユーザ(ユーザ IDやスクリーンネーム)のTwitterユーザデータを取得します。 |
my_friendships | ユーザ間の友人関係情報を検索します。 |
network_data | ネットワークデータ |
next_cursor | next_cursor/previous_cursor/max_id |
parse_stream | Twitter のストリームデータ(JSONファイル)をパースしたデータフレームに変換します。 |
plain_tweets | 文字ベクトル(ツイート)を、よりプレーンなテキストにクリーンアップします。 |
post_favorite | 対象のステータスIDをお気に入りに登録します。 |
post_follow | 対象のTwitterユーザーをフォローする。 |
post_friendship | 友情関係の通知やリツイートを更新する。 |
post_list | Twitterのリストを管理します |
post_message | ユーザーの Twitterアカウントからダイレクトメッセージを投稿します。 |
post_tweet | ユーザーのTwitterアカウントにステータスアップデートを投稿する |
rate_limit | 指定した Twitter アクセストークンの制限値を取得する |
read_twitter_csv | カンマ区切り値の Twitter データを読み込みます。 |
round_time | 日付と時刻の値を丸める汎用関数 |
search_30day | 過去30日間のデータを検索する (PREMIUM) |
search_fullarchive | fullarchive を検索 (PREMIUM) |
search_tweets | 検索クエリで特定したステータスのツイートデータを取得する。 |
search_users | 検索でヒットしたアカウントのユーザデータを取得します。 |
stopwordslangs | Twitter のストップワード(多言語)データを取得します。 |
stream_tweets | Twitterのライブストリームを収集します。 |
suggested_slugs | ユーザー認証のためのユーザー[アカウント]候補を取得します。 |
trends_available | Twitter のトレンドを、関連する WOEID と共に取得します。 |
ts_data | ツイートデータを時系列的なデータオブジェクトに変換する。 |
ts_plot | ツイートのデータを時系列的なデータオブジェクトとしてプロットします。 |
tweets_data | ユーザデータからツイートデータを抽出する。 |
tweets_with_users | tweets/usersデータのtibblesにデータをパースする |
tweet_shot | ツイート/スレッドの画像をキャプチャする |
users_data | tweets データオブジェクトからユーザデータを抽出する |
write_as_csv | Twitter のデータをカンマ区切りの値ファイルとして保存します。 |