
はじめに
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 のデータをカンマ区切りの値ファイルとして保存します。 |