Pythonでニコ生アラートを作る(放送通知サーバのステータス確認と接続情報の取得)

プログラミング
この記事は約3分で読めます。

このところプログラミングしたい病が発生していて、ひっそりとPythonでニコ生アラートを作っていました。

それがどうにか形になってきたので、忘備録がてら残しておきます。

スポンサーリンク

ニコ生アラートの概要

大雑把な流れは

  1. 放送通知サーバのステータス確認と接続情報の取得
  2. 接続情報を使ってsocket接続
  3. 受信データをアラート対象と突き合わせる

こんな感じになります。

今回は1.放送通知サーバのステータス確認と接続情報の取得を行います。

放送通知サーバの情報取得

放送通知サーバの情報はhttp://live.nicovideo.jp/api/getalertinfoから取得できます(cookie不要)。

URLにアクセスすると以下のようなXMLデータが返ってきます。

<!-- 稼働中 -->
<getalertstatus status="ok" time="1425964007">
	<user_id>Anonymous</user_id>
	<user_hash>◯◯◯◯◯◯◯◯◯</user_hash>
	<ms>
		<addr>twr01.live.nicovideo.jp</addr>
		<port>2528</port>
		<thread>1000000006</thread>
	</ms>
</getalertstatus>

<!-- 停止中は status="fail" -->

放送通知サーバへの接続に必要な情報は

  • addr
  • port
  • thread

です。

ということで、必要な情報を取得するPythonスクリプトはこんな感じになりました。

# -*- coding: utf-8 -*-

import xml.etree.ElementTree as Xml
import urllib2

"""URLからXMLデータを取得する。
XMLは解析しやすいようにElement型に変換"""
url = 'http://live.nicovideo.jp/api/getalertinfo'

response = urllib2.urlopen(url)
xml_string = response.read()
xml = Xml.fromstring(xml_string)

'''放送通知サーバのステータス確認と接続情報の取得'''
status = xml.get('status')
# 稼働中
if status == 'ok':
	address = xml.findtext('ms/addr')
	port    = xml.findtext('ms/port')
	thread  = xml.findtext('ms/thread')

次は、ココで得られた接続情報をもとにsocket接続してデータの受信を行います。

コメント

タイトルとURLをコピーしました