]> jfr.im git - z_archive/twitter.git/commitdiff
Dump the full documentation into the README and markdownify it.
authorMike Verdone <redacted>
Thu, 10 May 2012 22:14:17 +0000 (00:14 +0200)
committerMike Verdone <redacted>
Thu, 10 May 2012 22:14:17 +0000 (00:14 +0200)
README
twitter/__init__.py
twitter/api.py

diff --git a/README b/README
index 3d6b1806f9efb54889b70990c4bce6a1ff707151..a54c88b14484e642803a7e2b2d7f2e0ab0a559d8 100644 (file)
--- a/README
+++ b/README
@@ -18,9 +18,9 @@ For more information, after installing the `twitter` package:
  * visit http://mike.verdone.ca/twitter for more info
 
 
-The Command-Line Tool
-=====================
+
+twitter - The Command-Line Tool
+-------------------------------
 
 The command-line tool currently supports the following things:
 
@@ -31,13 +31,13 @@ The command-line tool currently supports the following things:
  * view tweets from lists
  * various output formats for tweet information
  * read your username and password from a config file
+
 The bottom line: type `twitter`, receive tweets.
 
 
 
-The IRC Bot
-===========
+twitterbot - The IRC Bot
+------------------------
 
 The IRC bot is associated with a twitter account (either your own account or an
 account you create for the bot). The bot announces all tweets from friends
@@ -45,9 +45,8 @@ it is following. It can be made to follow or leave friends through IRC /msg
 commands.
 
 
-
 twitter-log
-===========
+-----------
 
 `twitter-log` is a simple command-line tool that dumps all public
 tweets from a given user in a simple text format. It is useful to get
@@ -55,4 +54,172 @@ a complete offsite backup of all your tweets. Run `twitter-log` and
 read the instructions.
 
 
+Programming with the Twitter api classes
+========================================
+
+
+The Twitter and TwitterStream classes are the key to building your own
+Twitter-enabled applications.
+
+
+The Twitter class
+-----------------
+
+The minimalist yet fully featured Twitter API class.
+
+Get RESTful data by accessing members of this class. The result
+is decoded python objects (lists and dicts).
+
+The Twitter API is documented at:
+
+  http://dev.twitter.com/doc
+
+
+Examples::
+
+    twitter = Twitter(
+        auth=OAuth(token, token_key, con_secret, con_secret_key)))
+
+    # Get the public timeline
+    twitter.statuses.public_timeline()
+
+    # Get a particular friend's timeline
+    twitter.statuses.friends_timeline(id="billybob")
+
+    # Also supported (but totally weird)
+    twitter.statuses.friends_timeline.billybob()
+
+    # Send a direct message
+    twitter.direct_messages.new(
+        user="billybob",
+        text="I think yer swell!")
+
+    # Get the members of a particular list of a particular friend
+    twitter.user.listname.members(user="billybob", listname="billysbuds")
+
+
+Searching Twitter::
+
+    twitter_search = Twitter(domain="search.twitter.com")
+
+    # Find the latest search trends
+    twitter_search.trends()
+
+    # Search for the latest News on #gaza
+    twitter_search.search(q="#gaza")
+
+
+Using the data returned
+-----------------------
+
+Twitter API calls return decoded JSON. This is converted into
+a bunch of Python lists, dicts, ints, and strings. For example::
+
+    x = twitter.statuses.public_timeline()
+
+    # The first 'tweet' in the timeline
+    x[0]
+
+    # The screen name of the user who wrote the first 'tweet'
+    x[0]['user']['screen_name']
+
+
+Getting raw XML data
+--------------------
+
+If you prefer to get your Twitter data in XML format, pass
+format="xml" to the Twitter object when you instantiate it::
+
+    twitter = Twitter(format="xml")
+
+The output will not be parsed in any way. It will be a raw string
+of XML.
+
+
+The TwitterStream class
+-----------------------
+
+The TwitterStream object is an interface to the Twitter Stream API
+(stream.twitter.com). This can be used pretty much the same as the
+Twitter class except the result of calling a method will be an
+iterator that yields objects decoded from the stream. For
+example::
+
+    twitter_stream = TwitterStream(auth=UserPassAuth('joe', 'joespassword'))
+    iterator = twitter_stream.statuses.sample()
+
+    for tweet in iterator:
+        ...do something with this tweet...
+
+The iterator will yield tweets forever and ever (until the stream
+breaks at which point it raises a TwitterHTTPError.)
+
+The `block` parameter controls if the stream is blocking. Default
+is blocking (True). When set to False, the iterator will
+occasionally yield None when there is no available message.
+
+Twitter Response Objects
+------------------------
+
+Response from a twitter request. Behaves like a list or a string
+(depending on requested format) but it has a few other interesting
+attributes.
+
+`headers` gives you access to the response headers as an
+httplib.HTTPHeaders instance. You can do
+`response.headers.getheader('h')` to retrieve a header.
+
+Authentication
+--------------
+
+You can authenticate with Twitter in three ways: NoAuth, OAuth, or
+UserPassAuth. Get help() on these classes to learn how to use them.
+
+OAuth is probably the most useful.
+
+
+Working with OAuth
+------------------
+
+Visit the Twitter developer page and create a new application:
+
+    https://dev.twitter.com/apps/new
+
+This will get you a CONSUMER_KEY and CONSUMER_SECRET.
+
+When users run your application they have to authenticate your app
+with their Twitter account. A few HTTP calls to twitter are required
+to do this. Please see the twitter.oauth_dance module to see how this
+is done. If you are making a command-line app, you can use the
+oauth_dance() function directly.
+
+Performing the "oauth dance" gets you an ouath token and oauth secret
+that authenticate the user with Twitter. You should save these for
+later so that the user doesn't have to do the oauth dance again.
+
+read_token_file and write_token_file are utility methods to read and
+write OAuth token and secret key values. The values are stored as
+strings in the file. Not terribly exciting.
+
+Finally, you can use the OAuth authenticator to connect to Twitter. In
+code it all goes like this::
+
+    MY_TWITTER_CREDS = os.path.expanduser('~/.my_app_credentials')
+    if not os.path.exists(MY_TWITTER_CREDS):
+        oauth_dance("My App Name", CONSUMER_KEY, CONSUMER_SECRET,
+                    MY_TWITTER_CREDS)
+
+    oauth_token, oauth_secret = read_token_file(MY_TWITTER_CREDS)
+
+    twitter = Twitter(auth=OAuth(
+        oauth_token, oauth_token_secret, CONSUMER_KEY, CONSUMER_SECRET))
+
+    # Now work with Twitter
+    twitter.statuses.update('Hello, world!')
+
+
+
+License
+=======
+
 Python Twitter Tools are released under an MIT License.
index ec19917bd8e2fd754bfa580b5a8d58b3ce5091ce..151f34666b3b43b0b20ccf80e606d2378f60d3a6 100644 (file)
@@ -19,27 +19,27 @@ from .oauth_dance import oauth_dance
 
 __doc__ += """
 The Twitter class
-=================
+-----------------
 """
 __doc__ += dedent(Twitter.__doc__)
 
 __doc__ += """
 The TwitterStream class
-=======================
+-----------------------
 """
 __doc__ += dedent(TwitterStream.__doc__)
 
 
 __doc__ += """
 Twitter Response Objects
-========================
+------------------------
 """
 __doc__ += dedent(TwitterResponse.__doc__)
 
 
 __doc__ += """
 Authentication
-==============
+--------------
 
 You can authenticate with Twitter in three ways: NoAuth, OAuth, or
 UserPassAuth. Get help() on these classes to learn how to use them.
@@ -48,7 +48,7 @@ OAuth is probably the most useful.
 
 
 Working with OAuth
-==================
+------------------
 """
 
 __doc__ += dedent(oauth_doc)
index 2a9f93556cd0bf60c87597752d5fb74547854b04..7611ebb9c82eeaa8159aad228431d9900360e8a0 100644 (file)
@@ -188,43 +188,43 @@ class Twitter(TwitterCall):
     Get RESTful data by accessing members of this class. The result
     is decoded python objects (lists and dicts).
 
-    The Twitter API is documented here:
+    The Twitter API is documented at:
 
       http://dev.twitter.com/doc
 
 
     Examples::
 
-      twitter = Twitter(
-          auth=OAuth(token, token_key, con_secret, con_secret_key)))
+        twitter = Twitter(
+            auth=OAuth(token, token_key, con_secret, con_secret_key)))
 
-      # Get the public timeline
-      twitter.statuses.public_timeline()
+        # Get the public timeline
+        twitter.statuses.public_timeline()
 
-      # Get a particular friend's timeline
-      twitter.statuses.friends_timeline(id="billybob")
+        # Get a particular friend's timeline
+        twitter.statuses.friends_timeline(id="billybob")
 
-      # Also supported (but totally weird)
-      twitter.statuses.friends_timeline.billybob()
+        # Also supported (but totally weird)
+        twitter.statuses.friends_timeline.billybob()
 
-      # Send a direct message
-      twitter.direct_messages.new(
-          user="billybob",
-          text="I think yer swell!")
+        # Send a direct message
+        twitter.direct_messages.new(
+            user="billybob",
+            text="I think yer swell!")
 
-      # Get the members of a particular list of a particular friend
-      twitter.user.listname.members(user="billybob", listname="billysbuds")
+        # Get the members of a particular list of a particular friend
+        twitter.user.listname.members(user="billybob", listname="billysbuds")
 
 
     Searching Twitter::
 
-      twitter_search = Twitter(domain="search.twitter.com")
+        twitter_search = Twitter(domain="search.twitter.com")
 
-      # Find the latest search trends
-      twitter_search.trends()
+        # Find the latest search trends
+        twitter_search.trends()
 
-      # Search for the latest News on #gaza
-      twitter_search.search(q="#gaza")
+        # Search for the latest News on #gaza
+        twitter_search.search(q="#gaza")
 
 
     Using the data returned
@@ -233,13 +233,13 @@ class Twitter(TwitterCall):
     Twitter API calls return decoded JSON. This is converted into
     a bunch of Python lists, dicts, ints, and strings. For example::
 
-      x = twitter.statuses.public_timeline()
+        x = twitter.statuses.public_timeline()
 
-      # The first 'tweet' in the timeline
-      x[0]
+        # The first 'tweet' in the timeline
+        x[0]
 
-      # The screen name of the user who wrote the first 'tweet'
-      x[0]['user']['screen_name']
+        # The screen name of the user who wrote the first 'tweet'
+        x[0]['user']['screen_name']
 
 
     Getting raw XML data
@@ -248,10 +248,10 @@ class Twitter(TwitterCall):
     If you prefer to get your Twitter data in XML format, pass
     format="xml" to the Twitter object when you instantiate it::
 
-      twitter = Twitter(format="xml")
+        twitter = Twitter(format="xml")
 
-      The output will not be parsed in any way. It will be a raw string
-      of XML.
+    The output will not be parsed in any way. It will be a raw string
+    of XML.
 
     """
     def __init__(