#!/usr/bin/python
#encode=utf8

#print "TODO Bug Robert to implement Twitter-OAuth!"
#exit(1)
import sys

#sys.path.append("/usr/local/lib/")

import twitter, os, pwd

#os.getlogin = lambda: pwd.getpwuid(os.getuid())[0]

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", "")
	text = text.replace("a", "1")
	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("Z7f9npE5ixvZ0lMCHDZBOg", "8z0gyfOABar1HxKvqL6fYXLqRFUPLQ9OOzDFt7Q4F4", "139766258-94TGPvNsJ8tYVv68eZewfXOIyDvRCWdycNlUgHrs", "NRnDQZPCoLrDizFvakZkSWgoG4vgGuT3OOMChSfiI")

#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
		ilen = len(i.user.screen_name) + len(shorten(i.GetRelativeCreatedAt())) + 2 
		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 = " " * ilen
			
			tmp += " " + n
		if len(tmp) > ilen:	
			print parse(tmp).encode("utf8")