Philadelphia Python Workshop/Projects/Twitter

Project
Use the Twitter API to write the basic parts of a Twitter client. See what your friends are tweeting, get trending topics, search tweets, and more!

Goals

 * Have fun playing with data from Twitter.
 * See how easy it is to programmatically gather data from social websites that have APIs.
 * Get experience with command line option parsing and passing data to a Python script.
 * Get experience reading other people's code.

1. Read through and understand

 * 1) Open a terminal and navigate to the directory where you extracted [(http://web.mit.edu/jesstess/www/BostonPythonWorkshop6/Twitter.zip Twitter.zip)]. If you need a reminder for how to open a terminal and navigate to a directory, follow the [|navigation setup goal] from Friday.
 * 2) The directory you navigate to should contain twitter_api.py and twitter_functions.py.
 * 3) Use your text editor to open twitter_api.py and twitter_functions.py.
 * 4) Use the command line to run   with various search terms, e.g.
 * 5) Use the text editor to read through the   function in.
 * 6) Trace through the logic in   that turns the   command line option into a call to.
 * 7) Find   in the Twitter library code at http://code.google.com/p/python-twitter/source/browse/twitter.py. What other options could we have used with  ?
 * 1) Trace through the logic in   that turns the   command line option into a call to.
 * 2) Find   in the Twitter library code at http://code.google.com/p/python-twitter/source/browse/twitter.py. What other options could we have used with  ?

Check your understanding: What does  return?

2. Read through and understand

 * 1) Use the command line to run
 * 2) Use the text editor to read through the   function in.
 * 3) Trace through the logic in   that turns the   command line option into a call to.
 * 4) Find   in the Twitter library code at http://code.google.com/p/python-twitter/source/browse/twitter.py. How many trending topics does that method return?

Check your understanding: What are the differences between the   logic for   and  ? You could refer to the  module for parsing command-line options: http://docs.python.org/library/optparse.html

3. Implement
 Using the  and   functions as a reference, implement   in.

This function should print recent tweets by the username provided on the command line.

You may find the  function | helpful.

Currently, the code in  is empty, with only a comment, and a   statement that allows us to define this function without actually doing anything.

def userTweets(username): """   Print recent tweets by `username`.

You may find the twitter.Api function  GetUserTimeline helpful.

To test this function, at the command line run: python twitter_api.py -u For example, python twitter_api.py -u bostonpython """   pass

 We've already written some  logic for   in. Read through that logic. In what ways is it the same/different from the logic for ? Test your function. You can do this with:

python twitter_api.py -u

For example,

python twitter_api.py -u Orbitz or, python twitter_api.py -u zoro_tools 

You should see 20 tweets by the provided username. If you have a Twitter account, try running it on yourself, tweeting something new, and running it again! 

Check your understanding: What are the two ways to pass command line arguments for ?

4. Implement
 Using the  and   functions as a reference, implement   in.

This function should print a couple of recent tweets from each of the currently trending topics.

We've already written some  logic for   in. Read through that logic. In what ways is it the same/different from the logic for ? Test your function. You can do this with:

python twitter_api.py -w 

You should see recent tweets from all of the currently trending topics. Depending on how you implemented your function, you might see a chunk of tweets from each trending topic in turn, or tweets from each topic interleaved. 

Check your understanding: What is the purpose of  in  ?

Bonus exercises
If you have time, try out some of these extra exercises.

1. Customize how tweets are printed by
The tweets printed by  could look much nicer and have more useful metadata!

Customize how tweets are displayed. Look at the  and   classes in http://code.google.com/p/python-twitter/source/browse/twitter.py for inspiration; options include displaying:
 * the sender of the tweet
 * the URL for the tweet
 * how many followers the sender has
 * the location of the sender
 * if it was a retweet

and more!

2. Print trending topics by location
Extend  so that a Yahoo! Where On Earth ID (WOEID) can be specified on the command line and trending topics for that location will be displayed instead of using the hardcoded  to only display results for Chicago.

You can look up WOEIDs by location at http://sigizmund.info/woeidinfo/

Congratulations!
You've read, modified, and added code to a software project that makes it easy to get useful information from Twitter. Keep practicing!