Philadelphia Python Workshop 9/Projects/Twitter

From OpenHatch wiki
Jump to navigation Jump to search
Twitter.png


Project[edit]

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[edit]

  • 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.

Project steps[edit]

1. Read through and understand search[edit]

  1. Open a terminal and navigate to the directory where you extracted the Twitter files. If you need a reminder for how to open a terminal and navigate to a directory, follow the [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 python twitter_api.py --search with various search terms, e.g.
    • python twitter_api.py --search=Python
    • python twitter_api.py --search="Red Sox"
  5. Use the text editor to read through the search function in twitter_functions.py.
  6. Trace through the logic in twitter_api.py that turns the --search command line option into a call to search.
  7. Find GetSearch 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 GetSearch?

Check your understanding: What does api.GetSearch return?

2. Read through and understand trendingTopics[edit]

  1. Use the command line to run python twitter_api.py --trending-topics
  2. Use the text editor to read through the trendingTopics function in twitter_functions.py.
  3. Trace through the logic in twitter_api.py that turns the --trending-topics command line option into a call to search.
  4. Find GetTrendsWoeid 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 optparse logic for --search and --trending-topics? You could refer to the optparse module for parsing command-line options: http://docs.python.org/library/optparse.html

3. Implement userTweets[edit]

  1. Using the search and trendingTopics functions as a reference, implement userTweets in twitter_functions.py. This function should print recent tweets by the username provided on the command line. You may find the twitter.Api() function GetUserTimeline() helpful. Currently, the code in twitter_functions.py is empty, with only a comment, and a pass 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 <username>
        For example,
            python twitter_api.py -u bostonpython
        """
        pass
  2. We've already written some optparse logic for userTweets in twitter_api.py. Read through that logic. In what ways is it the same/different from the logic for search?
  3. Test your function. You can do this with:
    python twitter_api.py -u <username>

    For example,

    python twitter_api.py -u Orbitz

    or,

    python twitter_api.py -u zoro_tools
  4. 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 userTweets?

4. Implement trendingTweets[edit]

  1. Using the search and trendingTopics functions as a reference, implement trendingTweets in twitter_functions.py. This function should print a couple of recent tweets from each of the currently trending topics.
  2. We've already written some optparse logic for trendingTweets in twitter_api.py. Read through that logic. In what ways is it the same/different from the logic for search?
  3. Test your function. You can do this with:
    python twitter_api.py -w
  4. 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 BOSTON_WOEID in twitter_functions.py?

Bonus exercises[edit]

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

1. Customize how tweets are printed by search[edit]

The tweets printed by search could look much nicer and have more useful metadata!

Customize how tweets are displayed. Look at the Status and User 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[edit]

Extend trendingTopics 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 CHICAGO_WOEID to only display results for Chicago.

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

Congratulations![edit]

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

Fireworks.png Balloons.png