Code Monkey home page Code Monkey logo

ocaml-twitterstream's Introduction

Twitter streaming for OCaml

An interface to the Twitter streaming API for OCaml. The main interface is through an LWT stream and can thus be used in conjuction with other LWT code.

(**
 Convert a channel of bytes (eg. raw stream output) to a
 {!Lwt_stream.t} of stautses
 *)
val stream_of_channel : 
  Lwt_io.input Lwt_io.channel -> 
  Twitterstream_message.t Lwt_stream.t
 
(**
 Open a new stream
 @param reconnect_policy the reconnection policy
 @param auth a tuple of
 @param stream the stream to connect to.
 @return producer thread and a {!Lwt_stream.t} of statuses
 *)
val open_stream :
  ?reconnect_policy:reconnect_policy ->
  string * string -> 
  [ `Custom of string | `Firehose | `Sample ] -> 
  unit Lwt.t * Twitterstream_message.t Lwt_stream.t

The first form - stream_of_channel - yields an LWT stream from an arbitrary LWT channel (eg. a streaming dump on disk). The second form establishes a new HTTP stream using Cohttp.

Example stream counter.

open Lwt

let setup_logging () =
  let open Lwt_log in
  default := channel
    ~close_mode:`Keep
    ~channel:Lwt_io.stderr
    ();
  Section.set_level Section.main Debug

let () =
  setup_logging ();
 
  let t, stream =
    Twitterstream_stream.open_stream
      ~max_tries:2 ("username", "password") `Firehose in
 
  let count = ref 0 in
 
  let tt = for_lwt status in stream do
    let open Twitterstream_message in
    let orig, message = status in 
    match message with
      | Status status ->
          let user = status#user in
          Lwt_log.info_f "%s(%d): %s"
            user#screen_name user#followers_count
            status#text
      | Delete _ -> return ()
      | Parsefail -> Lwt_log.info_f "failed to parse %s" orig 
  done in
   
  Lwt_main.run (Lwt.join [t; tt])

There is also an example included (fetch.ml).

ocaml-twitterstream's People

Contributors

mariusae avatar

Stargazers

Ashish Shrestha avatar Travis Brady avatar furu avatar Vincent Bernardoff avatar Ryland Degnan avatar Siraaj Khandkar avatar Anton Lavrik avatar Roma Sokolov avatar Thomas Gazagnaire avatar David Sheets avatar Jake Donham avatar Anil Madhavapeddy avatar Joe Williams avatar  avatar Jan Varwig avatar Steve Jenson avatar Jeff Smick avatar

Watchers

 avatar Thomas Gazagnaire avatar James Cloos avatar  avatar

Forkers

dsheets vbmithr

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.