Я новичок в clojure. Я пытаюсь получить потоковые твиты через clojure. Я использую библиотеку twitter-api для получения потоковых твитов, а фрагмент кода - следующий.Как получить потоковые твиты, используя twitter-api в clojure?
(ns hello-twitter
(:use
[twitter.oauth]
[twitter.callbacks]
[twitter.callbacks.handlers]
[twitter.api.streaming])
(:require
[clojure.data.json :as json]
[http.async.client :as ac])
(:import
(twitter.callbacks.protocols AsyncStreamingCallback)))
(def my-creds (make-oauth-creds "app consumer key"
"app consumer secret"
"user-access-token"
"user-access-token-secret"))
(def ^:dynamic
*custom-streaming-callback*
(AsyncStreamingCallback. (comp println #(:text %) json/read-json #(str %2))
(comp println response-return-everything)
exception-print))
(statuses-filter :params {:track "Cricket"}
:oauth-creds my-creds
:callbacks *custom-streaming-callback*)
The body part in return json предполагается постоянно обновлять. Я получаю значение: тело похоже на <[email protected]: :pending>
, и я не могу понять, как получить твиты.
Как установить непрерывное соединение, чтобы получить потоковые твиты в качестве вывода?
Promise возвращаются обратно. Я не могу получить твиты только разыгрывая обещание. Итак, как выполнить обещание, чтобы получить потоковые твиты? – sammy
Извините, теперь я вижу. Я полагаю, что если это бесконечный поток, тогда обещание никогда не будет иметь конечной стоимости. Возможно, вам нужно использовать «доза» по разыменованному обещанию для выполнения побочного эффекта при каждом появлении твита? – TheQuickBrownFox