【问题标题】:Need help, accessing more levels of a json/twitter search需要帮助,访问更多级别的 json/twitter 搜索
【发布时间】:2013-04-12 10:09:25
【问题描述】:

我正在使用来自 @diegolparra 的示例进行 twitter 搜索和/或流式传输。

package controllers

import play.api.mvc.{WebSocket, Action, Controller}
import play.api.libs.functional.syntax._
import play.api.libs.json._
import play.api.libs.concurrent.Execution.Implicits.defaultContext
import play.api.libs.ws.WS
import play.api.libs.iteratee.{Iteratee, Concurrent, Enumerator}
import play.api.libs.oauth.{OAuthCalculator, RequestToken, ConsumerKey}

case class Tweet(from: String, text: String)

object Tweets extends Controller {
  implicit val tweetReads = (
    (__ \ "from_user_name").read[String] and
    (__ \ "text").read[String]
    )(Tweet)

  def tweetList(query: String) = Action {
    Async {
      val results = 50
      val responsePromise =
        WS.url("http://search.twitter.com/search.json")
          .withQueryString("q" -> query, "rpp" -> results.toString).get

      responsePromise.map {
        response =>
          val tweets = Json.parse(response.body).\("results").as[Seq[Tweet]]
          Ok(views.html.tweetlist(tweets))
      }
    }
  }

  val consumerKey =         ConsumerKey("EBcP4MM9VnI64L8RZLO7g","SVi7XyyNpWzidR2Zx2HVNZ7kZTwFGxpqGKqhOeA")

  val accessToken = RequestToken("1228081488-sLSztNAm0ST2kssCkBNRyhSsmk8SP5dtcbX1ZE2", "GxHUymXdyTYRZxw4bbTbgN8Xh53jKxC1KwvgsVwUU")

  def stream(keywords: String) = WebSocket.using[String] { request =>
    val out: Enumerator[String] = Concurrent.unicast[String](onStart = pushee => {
      def twitterIteratee = Iteratee.foreach[Array[Byte]]{ ba =>
        val msg = new String(ba, "UTF-8")
        pushee.push(msg)
        println(msg)
      }
      WS.url("https://stream.twitter.com/1.1/statuses/filter.json?track=" + keywords)
        .sign(OAuthCalculator(consumerKey, accessToken))
        .get(headers=> twitterIteratee)
    })

    val in = Iteratee.ignore[String]
    (in, out)
  }
}

此示例从 twitter 搜索结果中获取字段,from_user_name 和文本。现在我需要访问 created_at 日期和另一个级别(节点用户)以从用户获取:profile_image_url 和 lang。

请帮忙?

谢谢。

【问题讨论】:

    标签: json twitter playframework-2.1 iterate


    【解决方案1】:

    在 Devoxx France,Guillaume Bort 展示了一个通过推文获取一些“深层”信息的示例。你可以在这里找到代码:https://github.com/adericbourg/devoxxfr2013/blob/master/app/controllers/Application.scala

    它没有显示您需要的属性,但使用该示例和 Twitter API 文档,您可能会设法获得所需的内容。

    希望这会有所帮助,所以。

    【讨论】:

      猜你喜欢
      • 2011-09-28
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 2020-08-03
      • 2014-05-20
      • 1970-01-01
      • 2017-06-07
      • 2020-06-06
      相关资源
      最近更新 更多