]> jfr.im git - z_archive/twitter.git/commitdiff
Stream example and some fixes for py27. Breaks in py3 probably.
authorMike Verdone <redacted>
Mon, 28 Mar 2011 22:30:10 +0000 (00:30 +0200)
committerMike Verdone <redacted>
Mon, 28 Mar 2011 22:30:10 +0000 (00:30 +0200)
setup.py
twitter/stream.py
twitter/stream_example.py [new file with mode: 0644]

index 4fda4fed6166f2180c7fa123e9536ce8aa7c1092..d87928d1be6931e64e5d22ae6cf7a4d2b4095030 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -41,5 +41,6 @@ setup(name='twitter',
       twitter=twitter.cmdline:main
       twitterbot=twitter.ircbot:main
       twitter-log=twitter.logger:main
+      twitter-stream-example=twitter.stream_example:main
       """,
       )
index 5cb700892f804dd84b6c7b52ba8e04da83bb816b..68ec018ff934d2f112b1004a860590efc594d7cc 100644 (file)
@@ -18,7 +18,7 @@ class TwitterJSONIter(object):
     def __iter__(self):
         while True:
             # This might need better py3 IO
-            self.buf += self.handle.read(1024).decode('utf8')
+            self.buf += self.handle.read(1024)
             try:
                 res, ptr = self.decoder.raw_decode(self.buf)
                 self.buf = self.buf[ptr + 2:] # +2 is for \r\n
diff --git a/twitter/stream_example.py b/twitter/stream_example.py
new file mode 100644 (file)
index 0000000..dd4fffe
--- /dev/null
@@ -0,0 +1,33 @@
+"""
+Example program for the Stream API. This prints public status messages
+from the "sample" stream as fast as possible.
+
+USAGE
+
+  twitter-stream-example <username> <password>
+
+"""
+
+from __future__ import print_function
+
+import sys
+
+from .stream import TwitterStream
+from .auth import UserPassAuth
+from .util import printNicely
+
+def main(args=sys.argv[1:]):
+    if not args[1:]:
+        print(__doc__)
+        return 1
+
+    # When using twitter stream you must authorize. UserPass or OAuth.
+    stream = TwitterStream(auth=UserPassAuth(args[0], args[1]))
+
+    # Iterate over the sample stream.
+    tweet_iter = stream.statuses.sample()
+    for tweet in tweet_iter:
+        # You must test that your tweet has text. It might be a delete
+        # or data message.
+        if tweet.get('text'):
+            printNicely(tweet['text'])