将推文存入Mongodb

时间:2013-03-11 02:40:28

标签: mongodb scala playframework twitter

要求在Twitter上跟踪某些网址。

1)是否可以在Twitter Track参数中指定部分URL模式?例如如果我想搜索包含http://abc.co/的所有网址,其中包含http://abc.co/122http://abc.co/456等。这可以通过Twitter Stream API实现吗?

2)将所有推文存储到MongoDB的有效方法是什么?推文将用于分析目的。

我正在使用Scala 2.10和MongoDB

更新:好的,在深入了解了一些Iteratee概念之后,我已经进行了快速测试,如下所示

WS.url("https://stream.twitter.com/1.1/statuses/filter.json?track=" + term)
  .sign(OAuthCalculator(Twitter.KEY, tokens))
  .get(_ => printingIteratee)


 def printingIteratee = Iteratee.foreach[Array[Byte]] { chunk =>
   val json = Json.parse(new String(chunk))
   val user = (json \ "user" \ "screen_name").as[String]
   val content = (json \ "text").as[String]

   println("user " + user)
   println("content " + content)

 }

以上Iteratee用于测试副作用并且不返回任何内容。

我试图想出一个Iteratee,它接受Array [Byte]并创建一个存储在MongoDB中的对象。快速浏览一下Iteratee.fold和一些方法,但仍然不太确定如何创建一个带有Array [Byte]的Iteratee并生成一个可以存储到MongoDB的对象(比如case类Tweet)。任何创建此类Iteratee的指针都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

The documentation州:

  

为了匹配的目的,URL被视为单词,这意味着整个域和路径必须包含在包含要匹配的URL的Tweet的轨道查询中。

它还包含一个表格:

example.com将与Someday I will visit example.com匹配,但与There is no example.com/foobarbaz

不匹配

据我所知,无法使用所有子域跟踪域名。