12345678910111213141516171819202122232425262728293031323334353637383940 |
- #!/usr/bin/env python3
- # -*- coding: UTF-8 -*-
- import logging
- from wechat.parser import WeChatDBParser
- from wechat.common.textutil import safe_filename
- import sys, os
- logger = logging.getLogger("wechat")
- if __name__ == '__main__':
- if len(sys.argv) != 3:
- sys.exit("Usage: {0} <path to decrypted_database.db> <output_dir>".format(sys.argv[0]))
- db_file = sys.argv[1]
- output_dir = sys.argv[2]
- try:
- os.mkdir(output_dir)
- except:
- pass
- if not os.path.isdir(output_dir):
- sys.exit("Error creating directory {}".format(output_dir))
- parser = WeChatDBParser(db_file)
- for chatid, msgs in parser.msgs_by_chat.items():
- name = parser.contacts[chatid]
- if len(name) == 0:
- logger.info(f"Chat {chatid} doesn't have a valid display name.")
- name = str(id(chatid))
- logger.info(f"Writing msgs for {name}")
- safe_name = safe_filename(name)
- outf = os.path.join(output_dir, safe_name + '.txt')
- if os.path.isfile(outf):
- logger.info(f"File {outf} exists! Skip contact {name}")
- continue
- with open(outf, 'w') as f:
- for m in msgs:
- f.write(str(m))
- f.write("\n")
|