def _refresh_messages(self):
latest_archive = next(self.iter_archives(reverse=True), None)
latest_ts = 0
if latest_archive:
msgs = self.load_messages(latest_archive)
latest_ts = msgs[-1]["ts"] if msgs else 0
slack = getattr(self.slack, self.attr)
while True:
resp = self._get_list(slack, latest_ts)
assert_successful(resp)
msgs = resp.body["messages"]
msgs.sort(key=lambda m: m["ts"])
if msgs and not self.path.exists():
self.path.mkdir()
for day, day_msgs in groupby(msgs, key=lambda m: ts2ymd(m["ts"])):
day_msgs = list(day_msgs)
day_archive = self.path / (day + ".json")
cur = (
self.load_messages(day_archive)
if day_archive.exists() else []
)
cur.extend(day_msgs)
print "%s: %s new messages in %s (saving to %s)" %(
self.pretty_name, len(day_msgs), self.pretty_name, day_archive,
)
for msg in day_msgs:
if "file" in msg or "attachments" in msg:
self.downloader.add_message(msg)
with open_atomic(str(day_archive)) as f:
json.dump(cur, f)
if float(day_msgs[-1]["ts"]) > float(latest_ts):
latest_ts = day_msgs[-1]["ts"]
if not resp.body["has_more"]:
break
评论列表
文章目录