Sublime Text3からツイキャスの情報を取得したい...したくない?
kosen13s'アドベントカレンダーの17日にあるはずだったやつです...(大遅刻)。
先週くらいに行われたビジネスコンテストに自分は参加してたんですが、運営側にオススメされた中に沖縄高専の会議のすげーやつ(多分@shimamizさんのやつ)があったのでそれを参考にしつつスライドやら発表やらを練習してたらいつのまにかアドベントカレンダー終わってました...つかれた...
いや、ほんとにこの1~2週間はすげえ忙しくて記事の存在を少し忘れてました!反省します。
さて、ここからは記事の本題でみなさん大好きST3のお話です。最近MacBook Proを買い換えたので新しくSublime Text3の構築をしていたら、Packageつくってみたくね...あれ?って気持ちが芽生えてました。あといい歳こいて最近ツイキャスに
鬼ほどはまってしまってほぼ毎日みてました。
そんな時に発見したのがこれ。
ツイキャスにもAPIあったんだ、、、って感じでした。なんかRubyとPHPで動作するやつがあるみたいだったので、ちょうど高専プロコンでもらったさくらInternetさんのVPSをつかって、アクセストークンを取得するやつを作ってみました。
中身はただ単にツイキャスに飛ばして、コールバックしたときにアクセストークン取得してページにそれを表示するだけのコードなので割愛します!まじでドメインとか取得してないから怪しいサイト感が否めないのはごめんなさいです。
これでツイキャスにログインするととりあえずアクセストークンがもらえます。こっからキャスの配信情報を取得していきます。
配信情報を取得する部分を今回はST3のpackageにしました!ぶっちゃけAPIとかも全部Package上で完結させたかったんですけど知識不足で全然できなかった...誰か教えてください...
ちなみにST3のPackageはPython3で動作してるので書くのは簡単です!(簡単とは言っていない)。
独自の記法とか、ST3用のリファレンスとかあるんで、がんばって英語を解読しながらコードをせっせと書きました。
とりあえず流れとしては
トークンを取得
ST3側でトークンを入力
配信情報が取得できる!
って感じになります。コードはこれ。
class CasConnectCommand(sublime_plugin.TextCommand): def run(self, edit, token): window = self.view.window() # output_view = window.get_output_panel("textarea") # window.run_command("show_panel",{"panel": "output.textarea"}) # output_view.set_read_only(False) file_view = window.new_file() headers = { 'Accept': 'application/json', 'X-Api-Version': '2.0', 'Authorization': 'Bearer '+token, } res = requests.get('https://apiv2.twitcasting.tv/verify_credentials', headers=headers) file_view.insert(edit, 0, res.text) # output_view.set_read_only(True) class CasCallCommand(sublime_plugin.TextCommand): def on_done(self,token): self.view.run_command('cas_connect', {'token': token}) def run(self, edit): self.view.window().show_input_panel('トークンを入力 : ', '', self.on_done, None, None)
普段pythonあんまり触らないから書き方でnoobなのがばれちゃうのは勘弁
結果の画面がこんな感じです。
1.トークンの取得
まずツイキャス側で連携を許可して
帰ってきたトークンを表示!
2.ST3側でトークンを入力
このしたにあるトークンを入力のとこにさっき取得したトークン入力します。
3.配信情報の取得
バァン
おわりです。
時間があればST3側でビュワーとか作ったり、別窓で配信みれるようにしたかったんですけどいかんせん時間がなかったですね...時間取れたらがんばってつくってみます。
じゃあみなさん、良いお年を~。
(来年は専攻科に入ってまた後輩のプロコンの世話とかするかもしれないから実質6年プロコンすることになる...老害になっちゃう...)