slackmail/slackmail.py

66 lines
1.8 KiB
Python
Raw Normal View History

#!/usr/bin/python
# Copyright 2015 (c) Anna Schumaker.
import os
import slack
import sys
from datetime import datetime
for channel in slack.channels.list():
if not channel.is_member():
continue
if channel.unread_count() == 0 or channel.unread_count() == None:
continue
print(channel, channel.unread_count())
sys.exit(0)
def read_channel(id, ts):
args = { "channel" : id, "oldest" : ts }
call = call_method_auth("channels.history", args)
if call["ok"] == True:
messages = call["messages"]
messages.reverse()
for message in messages:
yield message
def _write_message(fout, user, message):
dt = datetime.fromtimestamp(float(message["ts"]))
text = message["text"].encode("utf-8").decode("latin-1")
fout.write("%s %s: %s\n" % (str(dt), user, text))
def write_message(fout, message):
call = call_method_auth("users.info", {"user" : message["user"]})
if call["ok"] == False:
name = message["user"]
else:
first = call["user"]["profile"].get("first_name", "")
last = call["user"]["profile"].get("last_name", "")
name = "%s %s" % (first, last)
if first == "" and last == "":
name = call["user"]["name"]
_write_message(fout, name, message)
tmp_dir = "/tmp/%s" % team
if not os.path.exists(tmp_dir):
os.mkdir(tmp_dir)
for id in list_channel_ids():
channel = find_channel_info(id)
if not channel["is_member"]:
continue
if channel["unread_count"] == 0:
continue
fout = open("%s/%s" % (tmp_dir, channel["name"]), 'w')
fout.write(channel["purpose"]["value"].encode("utf-8").decode("latin-1"))
fout.write("\n")
for message in read_channel(id, channel["last_read"]):
write_message(fout, message)
fout.close()