表題の通りのものを作りましたよ(`・ω・´)まぁもちろんscalaで。
ちなみに、PartakeっていうのはATNDに似てるけど、なんか色々改良したものらしいです。
最近、すこしpartakeで募集されてる勉強会参加することがあったので
def getUsers( eventId:String ):List[String] = { val userElem = """(<a href="/users/)([a-z\d\-]+)""" r getHtml( "http://partake.in/events/" + eventId ) match {// この前つくったhtmlを全部取得のメソッド使ってる case Some( html ) => userElem.findAllIn( html ).map{ case userElem( _ , userId ) => userId } toList case None => Nil } }
で、ついでにtwitterIDも抜き出せるじゃんヽ(´ー`)ノとかおもったけど、partakeって、ほとんどの人がtwitterのidと、partakeの同じだから大して意味なくね? orz
def userId2twitterId(userId:String):Option[String] = { val twitterLink = """(<a href="http://twitter.com/)([a-zA-Z\d_]+)""" r getHtml("http://partake.in/users/" + userId ) match { case Some( html ) => twitterLink.findFirstIn( html ) match { case Some( twitterLink( _ , twitterId )) => Some( twitterId ) case None => None } case None => None } }
もちろんこの前書いたatndと違ってAPIとか使ってるわけではなく*1、htmlを正規表現だけで無理やり検索してるだけなので、明日にでも動かなくなる可能性がありますよ(´ー`)
あと、はてなさん、ダブルクォート3つのStringリテラルのなかにダブルクォートあったりすると、シンタックスハイライト崩れるんですけど・・・