Lingr

音速の遅い話ですが、伺かLingrの部屋が出来たということで見てきました。
うん、名前入れずに見れるのはよいですね、匿名万歳。
で、どこぞでも書かれていましたがちょっとばかし重い。
いうわけで、なでしこでちゃちゃっとローカルアプリに。もうすでにどこかにありそうですが。
見る専、リストボックスなので長いメッセージがスクロールしないと見られないなどの不便な点もありますが、まあのあたりは気が向いたときにでも拡張する方向で。

##Lingrクライアント

#-----------------------------------------------------------------------
#設定
LingrAPIキー(各自取得のこと)
APIキーは「」
#新着時にならすWAVファイル(OutlookExpressの着信音)
!音声ファイルは「C:\Windows\Media\Windows XP Notify.wav」
#見たい部屋のID(これ伺か部屋)
!ルームIDは「jyW4aiX5YOC」
#設定ここまで
#-----------------------------------------------------------------------

母艦のタイトルは「Lingrクライアント」
ログとはリスト
のレイアウトは「全体」
1000でログの横スクロール幅設定
Aとはタイマー
終了ボタンとはボタン
のレイアウトは「上」
のクリックした時は
 Aを停止
 #退室
 「」と「session={セッション}&ticket={チケット}」を「http://www.lingr.com/api/room/exit」へHTTPポスト
 セッションのLINGRセッション破棄
 終わる
母艦の閉じる時は
 終了ボタンのクリックした時

APIキーでLINGRセッション取得
セッションはそれ

#入室
「」と「session={セッション}&id={ルームID}」を「http://www.lingr.com/api/room/enter」へHTTPポスト
リザルトはそれ
リザルトから改行&改行まで切り取る
リザルトから「response/ticket」の階層タグ切り出ししてタグ削除
チケットはそれ
リザルトから「response/max_observe_time」の階層タグ切り出ししてタグ削除
最大監視時INT(それ)
リザルトから「response/room/counter」の階層タグ切り出ししてタグ削除
カウンタはそれ

もし最大監視時が0ならば
 終わる
Aの隔は最大監視時
Aの時満ちた時は〜
 自身停止
 エラー監視
  #「」を「http://www.lingr.com/api/room/observe/?session={セッション}&ticket={チケット}&counter={カウンタ}」へHTTPゲット
  「」を「http://www.lingr.com/api/room/get_messages/?session={セッション}&ticket={チケット}&counter={カウンタ}」へHTTPゲット
 エラーならば
  自身→開始
  戻る
 それを「utf8」から「sjis」へ文字コード変換
 リザルトはそれ
 リザルトから改行&改行まで切り取る
 リザルトから「response/counter」の階層タグ切り出ししてタグ削除
 カウンタはそれ
 リザルトから「response/messages」の階層タグ切り出し
 全メッセージはそれ
 もし全メッセージがでなければ
  1の
   全メッセージの「」から「」まで範囲内切り取る
   もしそれが「」ならば
    抜ける
   メッセージはそれ
   メッセージから「type」のタグ切り出ししてタグ削除
   もしそれが「user」ならば
    メッセージから「nickname」のタグ切り出ししてタグ削除
    HTMLエンティティ復号
    ニックネームはそれ
    メッセージから「text」のタグ切り出ししてタグ削除
    HTMLエンティティ復号
    テキストはそれ
    テキストで1から「{\10}」をバイト検索
    もしそれが0でなければ
     「 」をニックネームのバイト数+3だけリフレイン
     テキストの「{\10}」を「{\10}」それ置換
     テキストはそれ
    ログのアイテムはログのアイテムニックネーム「 - 」テキスト
  ログにメッセージ送信($0197,(ログのアイテムの要素数)-1,0)
  音声ファイルをWAV再生
 自身→開始
カウンタ=「-20」
Aの時満ちた時

LINGRセッション取得(キーで)
 「」と「api_key={キー}」を「http://www.lingr.com/api/session/create」へHTTPポスト
 リザルトはそれ
 リザルトから改行&改行まで切り取る
 リザルトから「response/session」の階層タグ切り出ししてタグ削除

LINGRセッション破棄(セッションIDの|セッションIDで)
 「」と「session={セッションID}」を「http://www.lingr.com/api/session/destroy」へHTTPポスト
 リザルトはそれ
 リザルトから改行&改行まで切り取る
 リザルトから「response/status」の階層タグ切り出ししてタグ削除