47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
|
|
import argparse, mailbox, email
|
||
|
|
import archive.archive as archive
|
||
|
|
import config
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
|
||
|
|
p = argparse.ArgumentParser(description='Export mailinglists archives')
|
||
|
|
p.add_argument('name', metavar="name", help="name of the archive to export")
|
||
|
|
p.add_argument('--out', '-o', help="mbox output")
|
||
|
|
|
||
|
|
args = p.parse_args()
|
||
|
|
|
||
|
|
with archive.Archive(args.name, config=config.db) as a:
|
||
|
|
|
||
|
|
r = a.select_all()
|
||
|
|
|
||
|
|
if args.out:
|
||
|
|
|
||
|
|
mbox = mailbox.mbox(args.out)
|
||
|
|
|
||
|
|
for (from_, author_name_, to_, subject_, date_, content_type_, content_, url_) in r:
|
||
|
|
|
||
|
|
m = mailbox.mboxMessage()
|
||
|
|
m['To'] = to_
|
||
|
|
m['Subject'] = subject_
|
||
|
|
addr = from_.replace('{at}', '@')
|
||
|
|
if author_name_:
|
||
|
|
m['From'] = email.utils.formataddr((author_name_, addr))
|
||
|
|
else:
|
||
|
|
m['From'] = addr
|
||
|
|
m['Date'] = email.utils.format_datetime(date_)
|
||
|
|
m['Content-Type'] = content_type_
|
||
|
|
m.set_payload(content_)
|
||
|
|
|
||
|
|
mbox.add(m)
|
||
|
|
|
||
|
|
mbox.flush()
|
||
|
|
|
||
|
|
|
||
|
|
else:
|
||
|
|
|
||
|
|
for (from_, author_name_, to_, subject_, date_, content_type_, content_, url_) in r:
|
||
|
|
print(date_)
|
||
|
|
|
||
|
|
|
||
|
|
|