diff options
author | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2020-12-21 13:48:51 -0500 |
---|---|---|
committer | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2020-12-21 13:48:51 -0500 |
commit | ba02bab54366ef4a90eb9405e4d64a9e33c3fd82 (patch) | |
tree | dd9956e3aaf37347479ae59c4be4c33db606bbc0 /b4/mbox.py | |
parent | 855249595ee15894d2c407457b77780611969f9d (diff) | |
download | b4-ba02bab54366ef4a90eb9405e4d64a9e33c3fd82.tar.gz |
Add -f to "b4 mbox" to filter dupes
When saving to a maildir, add option to filter out dupes. Note, that
this requires going through the entire maildir to collect message-ids,
so it's not going to be a great experience on large maildirs.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
Diffstat (limited to 'b4/mbox.py')
-rw-r--r-- | b4/mbox.py | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -549,9 +549,16 @@ def main(cmdargs): and os.path.isdir(os.path.join(cmdargs.outdir, 'cur')) and os.path.isdir(os.path.join(cmdargs.outdir, 'tmp'))): mdr = mailbox.Maildir(cmdargs.outdir) + have_msgids = set() + added = 0 + if cmdargs.filterdupes: + for emsg in mdr: + have_msgids.add(b4.LoreMessage.get_clean_msgid(emsg)) for msg in mbx: - mdr.add(msg) - logger.info('Added to maildir %s', cmdargs.outdir) + if b4.LoreMessage.get_clean_msgid(msg) not in have_msgids: + added += 1 + mdr.add(msg) + logger.info('Added to %s messages to maildir %s', added, cmdargs.outdir) mbx.close() os.unlink(threadfile) return |