dump-html.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/env python2
  2. # -*- coding: UTF-8 -*-
  3. # File: dump-html.py
  4. # Date: Wed Mar 25 17:44:20 2015 +0800
  5. # Author: Yuxin Wu <[email protected]>
  6. import sys
  7. if len(sys.argv) != 6:
  8. sys.exit("Usage: {0} <path to decoded_database.db> <avt_db> <path to resource> <name> <output html>".format(sys.argv[0]))
  9. from common.textutil import ensure_unicode
  10. from wechat.parser import WeChatDBParser
  11. from wechat.res import Resource
  12. from wechat.render import HTMLRender
  13. db_file = sys.argv[1]
  14. avt_db = sys.argv[2]
  15. resource_dir = sys.argv[3]
  16. name = ensure_unicode(sys.argv[4])
  17. output_file = sys.argv[5]
  18. parser = WeChatDBParser(db_file)
  19. res = Resource(resource_dir, avt_db)
  20. try:
  21. msgs = parser.msgs_by_talker[name]
  22. except:
  23. sys.stderr.write(u"Valid Contacts: {}\n".format(u'\n'.join(parser.msgs_by_talker.keys())))
  24. sys.stderr.write(u"Couldn't find that contact {}.".format(name));
  25. sys.exit(1)
  26. render = HTMLRender(parser, res)
  27. htmls = render.render_msgs(msgs)
  28. if len(htmls) == 1:
  29. with open(output_file, 'w') as f:
  30. print >> f, htmls[0].encode('utf-8')
  31. else:
  32. for idx, html in enumerate(htmls):
  33. with open(output_file + '.{}'.format(idx), 'w') as f:
  34. print >> f, html.encode('utf-8')