ツイキャスAPIのラッパーをRubyで作った話

ツイキャスAPIにアクセスするラッパーをRubyで作ったのでまとめます。

最終ゴールは、ツイキャスのライブ配信情報をリアルタイムで解析したい(今の所自己満足)。

この記事は、最終ゴールを達成するまでのプロセスみたいな位置付けです。

# 作ったもの
[twicas_stream](https://rubygems.org/gems/twicas_stream)
↑これです。ツイキャスAPIにアクセスするRubyラッパー。
ソースコードは、[こちら](https://github.com/ysato5654/twicas_stream)です。
(*) 現在(2020/05)、v1.3.4です。

# なんで作った？
最終ゴールの規模がでかいのでモジュール毎に分けたくて、APIにアクセスするだけのライブラリが必要だったのですが、
自分が検索した限りでは、ツイキャスAPIにアクセスするRuby (gem)のライブラリがなかったので作りました。

# 使い方

- ユーザー情報取得編
- ライブ情報取得編
- コメント取得編

の３つの例を挙げます。
APIレスポンス(データ構造、エラーケース等)の詳細は、GitHub上の[twicas_stream](https://github.com/ysato5654/twicas_stream)の`README.md`、もしくは、`examples/`ディレクトリ以下のサンプルソースコードを参照下さい。

### 初めに
APIにアクセスする下準備として、
1. アプリケーション登録
2. アクセストークン取得
をお願いします。[公式のドキュメント](https://api.twitcasting.tv/indexapi.php)にも取得方法が記載されていますが、ここら辺も参考になると思います。
- [ツイキャスの新しい API をつかってみた（ライブ配信サービス戦国時代2016）](https://qiita.com/yonex/items/dd8f815f54a27f8c8690#2016%E5%B9%B4%E3%81%AB%E9%96%8B%E5%A7%8B%E3%81%97%E3%81%9F%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9)
- [ツイキャスAPIを使用してライブを検索する](http://c-loft.com/blog/?p=2624)

### ユーザー情報取得編

```rb
# 初期設定
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"
```

### ライブ情報取得編

```rb
# 初期設定(同上)
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
```

### コメント取得編

```rb
# 初期設定(同上)
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
```

# まとめ
このライブラリを使って、ライブ情報をデータベースにレコードするモジュールを作ります(実はほぼ出来上がってます)。