1
0
Fork 0

nntp: keep in memory latests news seen to avoid loop

This commit is contained in:
nemunaire 2019-11-29 15:54:01 +01:00
parent d56c2396c0
commit f17f8b9dfa
1 changed files with 12 additions and 2 deletions

View File

@ -50,6 +50,7 @@ def read_article(msg_id, **server):
servers_lastcheck = dict()
servers_lastseen = dict()
def whatsnew(group="*", **server):
fill = dict()
@ -64,6 +65,9 @@ def whatsnew(group="*", **server):
else:
date_last_check = datetime.now()
if idx not in servers_lastseen:
servers_lastseen[idx] = []
with NNTP(**fill) as srv:
response, servers_lastcheck[idx] = srv.date()
@ -73,8 +77,14 @@ def whatsnew(group="*", **server):
response, articles = srv.newnews(group, date_last_check)
for msg_id in articles:
response, info = srv.article(msg_id)
yield email.message_from_bytes(b"\r\n".join(info.lines))
if msg_id not in servers_lastseen[idx]:
servers_lastseen[idx].append(msg_id)
response, info = srv.article(msg_id)
yield email.message_from_bytes(b"\r\n".join(info.lines))
# Clean huge lists
if len(servers_lastseen[idx]) > 42:
servers_lastseen[idx] = servers_lastseen[idx][23:]
def format_article(art, **response_args):