京橋のバイオインフォマティシャンの日常

南国のビーチパラソルの下で、Rプログラムを打ってる日常を求めて、、Daily Life of Bioinformatician in Kyobashi of Osaka

R/rtweetを使って、SNS/Twitterでつぶやくための基本的な関数『post_tweet』のこと

はじめに

rOpenSci (v. 0.6.9) によってレビューされたrtweetパッケージは、TwitterのRESTおよびストリームAPIを介して、Twitterのデータを収集・整理するために設計・実装された。

それを使用するためのR環境の初期設定については、 過去記事の「R/rtweetとか諸々を使って、つぶやきのテキスト解析 (形態素分析 + 感情分析) をやってみた件」を 参考にしてみてください。

skume.net

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

参考資料

github.com

cran.r-project.org