When it’s ready.

出来るまで出来ない

Ustreamの現在の放送状況をTwitterのサーチ結果から取得しチャンネル名を特定する

Ustreamのサーチには、言語指定がない。どれくらい人気があるかは取れるが英語のチャンネルだらけ。
日本の方が大勢みているチャンネルをMultiUstreamViewer(http://ustview.appspot.com/multi)で利用するためにスクリプトを書いてみた。

GAE上ではたぶん動かないと思う。必要なのは、feedparserモジュール

Twitterのサーチを使って、TL上のUst短縮URLをひっかけてAtomをもらってくる。
http://search.twitter.com/search.atom?lang=ja&q=ustre Twitterサーチは言語指定が出来るので日本語を指定しておく。

あとは、feedparserでdescription抽出して本文中のUst短縮URLをゲットする。urllib2でustre.amに問い合せると本家UstreamFQDNが返ってくるのでそれをスプリットしてチャンネル名をゲットする。

以下ソース

#!/usr/bin/env python
# coding:utf-8

import feedparser, urllib2
import re

def expandUrl(url):
  req = urllib2.urlopen(url)
  ret = req.geturl()
  return ret

def main():
  feedUrl = "http://search.twitter.com/search.atom?lang=ja&q=ustre"
  atom = feedparser.parse(feedUrl)
  for i in atom.entries:
    m = re.search(r"http\:\/\/ustre.am\/[a-z|A-Z|0-9|:]*", i.description)
    print "shortUrl: %s"%m.group()
    realUrl = expandUrl(m.group()) 
    print "realUrl: %s"%realUrl
    print "channel: %s"%realUrl.split('/')[-1] 
    print '-' * 80

if __name__ == '__main__':
  main()

実行結果

shortUrl: http://ustre.am/8VsV
realUrl: http://www.ustream.tv/channel/zonbi
channel: zonbi
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/epC7
realUrl: http://www.ustream.tv/channel/broadcast-life
channel: broadcast-life
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/epC7
realUrl: http://www.ustream.tv/channel/broadcast-life
channel: broadcast-life
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/foPp
realUrl: http://www.ustream.tv/channel/ugtktv
channel: ugtktv
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/epC7
realUrl: http://www.ustream.tv/channel/broadcast-life
channel: broadcast-life
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/dmuc
realUrl: http://www.ustream.tv/channel/radionion
channel: radionion
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/dtJp
realUrl: http://www.ustream.tv/channel/throughtone
channel: throughtone
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/8VsV
realUrl: http://www.ustream.tv/channel/zonbi
channel: zonbi
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/eOlX
realUrl: http://www.ustream.tv/channel/solchibirecords
channel: solchibirecords
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/c1ZR
realUrl: http://www.ustream.tv/channel/bside
channel: bside
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/HiO
realUrl: http://www.ustream.tv/channel/crakka
channel: crakka
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/9Quu
realUrl: http://www.ustream.tv/channel/dj-taro-live-show
channel: dj-taro-live-show
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/4V2S
realUrl: http://www.ustream.tv/channel/mazdabeam
channel: mazdabeam
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/9Quu
realUrl: http://www.ustream.tv/channel/dj-taro-live-show
channel: dj-taro-live-show
--------------------------------------------------------------------------------
shortUrl: http://ustre.am/cBDN
realUrl: http://www.ustream.tv/channel/h2ospace-php
channel: h2ospace-php
--------------------------------------------------------------------------------

URL展開を待っているせいか意外と時間がかかる。
この結果をMultiUstreamViewer(http://ustview.appspot.com/multi)に組み込めばおしまい。