ニコ生の配信情報を受け取るAPI

過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです. 画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.

過去に作っをあさってたらたまたま出てきた。案外これ使えそう?と思ったのでソースコードそのまんま公開します。
自分の飽き性のせいか、表示するだけ作ってほったらかしてます…参考になるかも?と思ったのでC#ですが公開しておきます
ついでに言語はC#です。そこまで複雑なことは書いてないと思ってます。

ニコ生配信APIの仕組み

XMLはストリーミングで配信されるだけなのでそれを受け取って処理するだけ。仕組み的には簡単です。
ちなみにAPIのURLはこれ
http://live.nicovideo.jp/api/getalertinfo
ここでAPIへ接続するためのURLやポート番号、スレッドIDを受け取ります。
なのでこれだけでは終了ではありません
上記のURLへ接続するとこんなものが送られてきます。

<getalertstatus status="ok" time="1411646803">
    <script/>
    <user_id>Anonymous</user_id>
    <user_hash>xVriZhkcXVPitQO5s48NOGmbJQY</user_hash>
    <ms>
        <addr>twr02.live.nicovideo.jp</addr>
        <port>2526</port>
        <thread>1000000003</thread>
    </ms>
</getalertstatus>

マーキングしている所が重要なところとなります。
そしてそれを抜き出すソースコードはこんな感じ。手抜きはお許し下さい。

string addr = "", port = "", thread = "";
using ( WebClient wc = new WebClient() )
using ( Stream xmlstr = wc.OpenRead( "http://live.nicovideo.jp/api/getalertinfo" ) )
using ( XmlReader xml = XmlReader.Create( xmlstr ) )
{
    for ( ; xml.Read(); )
    {
        if ( xml.NodeType == XmlNodeType.Element && xml.Name == "addr" )
        { xml.Read(); addr = xml.Value; }
        if ( xml.NodeType == XmlNodeType.Element && xml.Name == "port" )
        { xml.Read(); port = xml.Value; }
        if ( xml.NodeType == XmlNodeType.Element && xml.Name == "thread" )
        { xml.Read(); thread = xml.Value; }
    }
}

これ以降は下にあるプロジェクトファイルからお願いします。
あと、完全に作りかけで1年半以上放置されたものです。中途半端に残ったコードとかもある酷いものです。
それを了承した上でダウンロードお願いします

ダウンロード

すべて自己責任でどうぞ。ウイルス対策のためexeファイルは取り除いています
[wpdm_file id=6]