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に問い合せると本家UstreamのFQDNが返ってくるのでそれをスプリットしてチャンネル名をゲットする。
以下ソース
#!/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)に組み込めばおしまい。