4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-12-18

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

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

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

作ったもの

twicas_stream
↑これです。ツイキャスAPIにアクセスするRubyラッパー。
ソースコードは、こちらです。
(*) 現在(2020/05)、v1.3.4です。

なんで作った?

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

使い方

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

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

初めに

APIにアクセスする下準備として、

  1. アプリケーション登録
  2. アクセストークン取得
    をお願いします。公式のドキュメントにも取得方法が記載されていますが、ここら辺も参考になると思います。

ユーザー情報取得編

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

まとめ

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

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?