When it’s ready.

出来るまで出来ない

Ustreamer with SocialStream がなんとなく動きかけてきた。

昔はUstreamIRCクライアントですんでたけどどうやらSocialStreamと一緒に見た方がUstは楽しめるのでSocialStreamをインプリしてみた。力量不足でUstreamAPIからSocialStreamのエンベデットを抜き取ることが出来ない。今のところマニュアルでSocialStreamのタグを指定している(ダサすぎる・・)

http://ustview.appspot.com/multi

ボケボケだけど、ようつべに使ってるところを上げてみた。大きさを変えるスライダーもjQueryUI化してみた。

リクエストが有れば @atusi まで教えてください。

日本語のUstのチャンネルを3分間隔でひたすら取得してるんだけどとうやってランキング化して表示させるか考え中

GoogleAppEngine上で、短縮URLを展開する方法

Twitter上のUstreamのアドレスは短縮URLが使われているので展開する必要がある。
GAE上で上手くurllibが使えないのでurlfetchで行う

def expandUrl(url):
  req = urlfetch.fetch(url)
  ret = req.final_url
  return ret

これだけ、"final_url"に転送後のURLが入っているのでそれを使うことで取得出来た。

URLの展開で30秒の壁を超えるのでTaskQueueを使って避ける

TwitterのFeedからUstreamの短縮URLを抜いてきた後、展開するんだけど15個くらい展開するので1分弱かかる時がある。ほぼ確実に30秒を超えるので1展開毎にTaskQueueに登録する

class ExpandUrlHandler(webapp.RequestHandler):
  def get(self):
    feedUrl = "http://search.twitter.com/search.atom?lang=ja&q=ustre"
    atom = feedparser.parse(feedUrl)
    res = ""
    for i in atom.entries:
      m = re.search(r"http\:\/\/ustre.am\/[a-z|A-Z|0-9|:]*", i.description)
      res += "%s<br>"%(m.group())
      taskqueue.add(url='/addMapWorker', params={'url': m.group()})
    self.response.out.write(res)
 
class ExpandUrlWorker(webapp.RequestHandler):
  def post(self):
    url = self.request.get('url')
    longURL = expandUrl(url)
    saveUrlMap(url, longURL)