ツイキャスAPIにアクセスするラッパーをRubyで作ったのでまとめます。
最終ゴールは、ツイキャスのライブ配信情報をリアルタイムで解析したい(今の所自己満足)。
この記事は、最終ゴールを達成するまでのプロセスみたいな位置付けです。
作ったもの
twicas_stream
↑これです。ツイキャスAPIにアクセスするRubyラッパー。
ソースコードは、こちらです。
(*) 現在(2020/05)、v1.3.4です。
なんで作った?
最終ゴールの規模がでかいのでモジュール毎に分けたくて、APIにアクセスするだけのライブラリが必要だったのですが、
自分が検索した限りでは、ツイキャスAPIにアクセスするRuby (gem)のライブラリがなかったので作りました。
使い方
- ユーザー情報取得編
- ライブ情報取得編
- コメント取得編
の3つの例を挙げます。
APIレスポンス(データ構造、エラーケース等)の詳細は、GitHub上のtwicas_streamのREADME.md
、もしくは、examples/
ディレクトリ以下のサンプルソースコードを参照下さい。
初めに
APIにアクセスする下準備として、
- アプリケーション登録
- アクセストークン取得
をお願いします。公式のドキュメントにも取得方法が記載されていますが、ここら辺も参考になると思います。
ユーザー情報取得編
# 初期設定
TwicasStream.configure do |request_header|
# アクセストークンの設定
# <ソースコードにべた書き>
# request_header.access_token = 'xxx'
# <ファイルから読み出し(一例)>
# request_header.access_token = File.read(File.expand_path(File.dirname(__FILE__) + '/../config/access_token.txt'))
request_header.access_token = 'xxx'
end
# ユーザーIDの設定
user_id = 'twitcasting_jp' # ツイキャス公式アカウント
# ツイキャスAPI(ユーザ情報を取得するAPI)へアクセス
api = TwicasStream::User::GetUserInfo.new(user_id)
# APIのレスポンスを取得(api変数にerrorシンボルがないか確認した方がbetter)
# エラーケース:errorシンボルを格納
# 正常ケース :user, supporter_count, supporting_countシンボルを格納
user_info = api.response[:user]
p user_info[:screen_id] # スクリーンID
# => "twitcasting_jp"
p user_info[:name] # ユーザ名
# => "ツイキャス公式"
p user_info[:profile] # プロフィール文章
# => "ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs"
ライブ情報取得編
# 初期設定(同上)
TwicasStream.configure do |request_header|
request_header.access_token = 'xxx'
end
# ライブIDの設定
movie_id = '189037369' # ツイキャス公式アカウントのライブIDだと思います。
# ツイキャスAPI(ライブ情報を取得するAPI)へアクセス
# エラーケース:errorシンボルを格納
# 正常ケース :movie, broadcaster, tagsシンボルを格納
api = TwicasStream::Movie::GetMovieInfo.new(movie_id)
# APIのレスポンスを取得(api変数にerrorシンボルがないか確認した方がbetter)
movie_info = api.response[:movie]
p movie_info[:title] # タイトル
# => 'ライブ #189037369'
p movie_info[:subtitle] # テロップ
# => 'ライブ配信中!'
p movie_info[:duration] # 配信時間(秒)
# => 1186
p movie_info[:total_view_count] # 総視聴者数
# => 20848
コメント取得編
# 初期設定(同上)
TwicasStream.configure do |request_header|
request_header.access_token = 'xxx'
end
# ライブIDの設定
movie_id = '189037369'
# ツイキャスAPI(コメントを取得するAPI)へアクセス
# エラーケース:errorシンボルを格納
# 正常ケース :movie_id, all_count, commentsシンボルを格納
api = TwicasStream::Comment::GetComments.new(movie_id)
# APIのレスポンスを取得(api変数にerrorシンボルがないか確認した方がbetter)
comments = api.response[:comments]
# 配列で返すので最初のみ取り出し
p comments.first[:from_user][:name] # 投稿したユーザーのユーザーID
# => 'ツイキャス公式'
p comments.first[:from_user][:screen_id] # 投稿したユーザーのスクリーンID
# => 'twitcasting_jp'
p comments.first[:message] # 投稿されたコメント
# => 'モイ!'
p comments.first[:created] # コメント投稿日時のunixタイムスタンプ
# => 1479579471
まとめ
このライブラリを使って、ライブ情報をデータベースにレコードするモジュールを作ります(実はほぼ出来上がってます)。