#!/usr/bin/python #encode=utf8 import sys, twitter sys.stderr = sys.stdout def shorten(text): text = text.replace("about ", "~") text = text.replace("an", "1") text = text.replace(" minutes", "m") text = text.replace(" minute", "m") text = text.replace(" hours", "h") text = text.replace(" hour", "h") text = text.replace(" seconds", "s") text = text.replace(" second", "s") text = text.replace(" days", "d") text = text.replace(" day", "d") text = text.replace(" weeks", "w") text = text.replace(" week", "w") text = text.replace(" years", "y") text = text.replace(" year", "y") text = text.replace(" ago", "") return text def parse(text): text = text.replace("\n","") t = text.split(" ") new = "" for piece in t: escape = "" if piece.startswith("@"): escape = "" if piece[1:].lower() == "shackspam" or piece[1:].lower() == "shackspace": escape = "" elif piece.startswith("#"): escape = "" elif piece.startswith("http://"): escape = "" if escape: new += escape + piece + " " else: new += piece + " " return new if len(sys.argv) > 1 and sys.argv[1] == "--help": print "read or post to the shackspam twitter timeline" if len(sys.argv) == 3 and sys.argv[2] == "--verbose": print "call without parameters to read" print "use /twitter [your tweet] to tweet something to the shackspam twitter timeline" exit() api = twitter.Api(username="shackspam", password="sh4ckit") #api.SetXTwitterHeaders("Shackspace UTTERANCE","","0.00.0.01.42") if len(sys.argv) > 1: tweet = u"" for t in sys.argv[1:]: tweet += t.decode("utf8") + u" " tweet = tweet[:-1] print u"Length: " + str(len(tweet)) + u"" if len(tweet) > 140: print u"Your Tweet must be shorter than 140 characters.\n" exit() status = api.PostUpdate(tweet) else: """print "\tshackspace tweets:" for i in api.GetUserTimeline(): i.text = parse(i.text) print ("" + i.user.screen_name + " " + i.GetRelativeCreatedAt() + " " + i.text).encode("utf8").replace("\n"," ") print "\n\tfriends tweets" """ a = api.GetFriendsTimeline() a.reverse() for i in a: text = i.text if i.user.screen_name.lower() == "shackspace" or i.user.screen_name.lower() == "shackspam": info = "" + i.user.screen_name + " " + shorten(i.GetRelativeCreatedAt()) + "" else: info = "" + i.user.screen_name + " " + shorten(i.GetRelativeCreatedAt()) + "" text = info + " " + parse(text) t = text.split(" ") tmp = "" for n in t: if ((len(tmp) + len(n)) > 80): print parse(tmp).encode("utf8") tmp = " " *( len(info)-15) tmp += " " + n if len(tmp) > (len(info)-15+1): print parse(tmp).encode("utf8")