diff --git a/slack/channels.py b/slack/channels.py index 9b8787d..792ce2a 100644 --- a/slack/channels.py +++ b/slack/channels.py @@ -3,6 +3,8 @@ # from . import api from . import auth +from . import users +from datetime import datetime class Channel: @@ -16,10 +18,10 @@ class Channel: self.__last_ts = json.get("last_read", None) def __str__(self): - return "" % (self.__id, self.__name, self.__member) - - def __repr__(self): - return self.__str__() + topic="" + if self.__topic != "": + topic = "\nTopic: %s" % self.__topic + return "%s: %s%s" % (self.__name, self.__purpose, topic) def fetch_info(self): json = info(self.__id) @@ -44,18 +46,15 @@ class Channel: class Message: def __init__(self, json): - self.__time = json["ts"] - self.__user = json["user"] + self.__time = datetime.fromtimestamp(float(json["ts"])) + self.__user = users.info(json["user"]) self.__text = json["text"].encode("utf-8").decode("latin-1") def __lt__(self, other): return self.__time < other.__time def __str__(self): - return "" % (self.__time, self.__user, self.__text) - - def __repr__(self): - return self.__str__() + return "%s %s: %s" % (self.__time.time(), self.__user.name(), self.__text) @@ -76,7 +75,6 @@ def info(channel): return None return ret["channel"] - def list(): ret = api.call("channels.list", token = auth.token()) if ret["ok"] == False: diff --git a/slack/users.py b/slack/users.py new file mode 100644 index 0000000..44cf2f2 --- /dev/null +++ b/slack/users.py @@ -0,0 +1,34 @@ +# +# Copyright 2015 (c) Anna Schumaker +# +from . import api +from . import auth + + +__USERS = dict() + +class User: + def __init__(self, json): + self.__user = json.get("name", "") + self.__first = json["profile"].get("first_name", "") + self.__last = json["profile"].get("last_name", "") + + def name(self): + if self.__first == "" and self.__last == "": + return self.__user + return "%s %s" % (self.__first, self.__last) + + + +def info(user): + ret = __USERS.get(user, None) + if ret: + return ret + + ret = api.call("users.info", token = auth.token(), user = user); + if ret["ok"] == False: + return None + + ret = User(ret["user"]) + __USERS[user] = ret + return ret diff --git a/slackmail.py b/slackmail.py index 1c80761..f874863 100644 --- a/slackmail.py +++ b/slackmail.py @@ -13,7 +13,10 @@ for channel in slack.channels.list(): continue if channel.unread_count() == 0 or channel.unread_count() == None: continue - print(channel.read()) + print(channel) + for message in channel.read(): + print(message) + print() #def _write_message(fout, user, message): # dt = datetime.fromtimestamp(float(message["ts"]))