まめりうむ

WindowsからMacへ乗り換るためのネタをまとめたり好きなことをまとめたり。

*

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

   

スポンサーリンク

このところプログラミングしたい病が発生していて、ひっそりと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接続してデータの受信を行います。

 - プログラミング , ,

スポンサーリンク

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

  関連記事

JForexで注文画面を自作する(指値・逆指値注文)

前回までで一応成行注文に最低限欲しい機能は付けられましたので、今回は指値・逆指値 …

Pythonでニコ生アラートを作る(放送通知サーバへの接続情報を使ってsocket接続)

前回の続きです。 今回は、前回得られた放送通知サーバへの接続情報を使ってsock …

Sublime Text3でPython開発環境を整えるためにインストールしたパッケージと設定

Sublime Text3でPythonのお勉強をするのに役立ちそうなパッケージ …

Pythonスタートブックを読みました

Sublime Text3きっかけで、前からちょっと触ってみたいなと思ってたスク …

Pythonチュートリアルを読みました

Pythonを勉強するにあたって、最初にPythonスタートブックという本を読み …

JForexで注文画面を自作する(新規注文に有効期限を設定)

前回作成した指値・逆指値注文画面のときにまとめて作ってしまえば良かったんですが忘 …

[Python]try~finally文中でreturn文を使ったときの動作

Pythonドキュメントの日本語訳を読んでて気付いたんですが return によ …

JForexで注文画面を自作する(ブレイクアウト注文)

前回まででカンタンですが結構使い勝手の良い指値・逆指値注文まで出来ました。 今回 …

JForexで注文画面を自作する

NDD方式で約定力の高さが魅力のJForexですが、注文画面がちょっと使いにくく …

リーダブルコードを読みました

ひょんなことからクオカード1,000円分が手に入ったので、前から読んでみたかった …