partakeのイベントのページから、userのidを抜き出す

表題の通りのものを作りましたよ(`・ω・´)まぁもちろん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リテラルのなかにダブルクォートあったりすると、シンタックスハイライト崩れるんですけど・・・

*1:現時点(2010年12月19日)ではpartakeってAPI無いよね?