14

Samuel L. Jackson LIVE

Posted in Internet by practicalize 2868 days ago

Read Samuel L. Jackson's most recent quotable tweet on your desktop.

In celebration of Mr. Jackson's recent arrival to the Tweetosphere, this simple variation on the Latest Tweet as a Quote submission from dozdozdoz lets you focus more of your attention on this great cultural icon.

This Latest Tweet as a Quote variation can be easily modified for your favorite tweeting quote-smith. You can replace Mr. Jackson's username and spelled out name where they each appear once near the bottom of the script.

I must admit there's probably a better way to go about this, like parsing the RSS feed on his Twitter profile page. But this way was fun for me as a <24 hour Geektool user and beginner programmer.

Installation

  1. Get your API details from Twitter. Twitter has a set of documentation that walks you through this process. Fill in the form on the Twitter developer site and you will receive a CONSUMERKEY, CONSUMERSECRET, ACCESSKEY and ACCESSSECRET.

  2. Add these details into the text below where they are requested and copy/paste the script into Notepad.

  3. Save as JacksonQuote.py. Make a note of the path.

  4. Load Terminal and type: 'easy_install tweepy' without the quotes. (tweepy powers this script, if this install fails then you may need to install setuptools for Python)

  5. Add the following as a GeekTool shell command

'python /Users..[insert full file path here]../TweetQuote.py'

Script

import tweepy, os, sys, re

# Declare OAuth varibles.
CONSUMER_KEY = '...'
CONSUMER_SECRET = '...'
ACCESS_KEY = '...'
ACCESS_SECRET = '...'
keyfile = "authkeys.dat"
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)

# Break string into multiple lines
def para(text):
    return reduce(lambda line, word, width=50: '%s%s%s' %(line, ' \n'[(len(line)-line.rfind('\n')-1
    + len(word.split('\n',1)[0]) >= 50)], word), text.split(' '))

# Convert html entities into Unicode
def unescape(text):
    def fixup(m):
        text = m.group(0)
        if text[:2] == "&#":
            try:
                if text[:3] == "&#x":
                    return unichr(int(text[3:-1], 16))
                else:
                    return unichr(int(text[2:-1]))
            except ValueError:
                pass
        else:
            try:
                text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
            except KeyError:
                pass
        return text
    return re.sub("&#?\w+;", fixup, text)

# Script
type = api.user_timeline(screen_name="samuelljackson",count=30)
for result in type:
                if result.text.find('@')==-1 and result.text.find('http://')==-1:
                        twtt = result.text
                        print para(unescape(twtt)) + "\n" + "\n- " + "Samuel L. Jackson"
                        break

Comments

User Avatar
laurencerussell 2845 days ago
Hi, I'm new to this but would be really keen to get hold of this. I've tried to get hold of my API details off the developers website but I'm struggling so I was wondering if you could help me out.

Log in to comment or register here.