emoji-cache-tool.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import pickle
  4. import sys
  5. import os
  6. import imghdr
  7. import base64
  8. if __name__ == '__main__':
  9. if len(sys.argv) != 3:
  10. print("""\
  11. Usage:
  12. {} unpack output-dir
  13. {} pack input-dir
  14. """.format(sys.argv[0], sys.argv[0]))
  15. sys.exit(1)
  16. if sys.argv[1] == 'unpack':
  17. with open('emoji.cache', 'rb') as f:
  18. dic = pickle.load(f)
  19. outdir = sys.argv[2]
  20. assert os.path.isdir(outdir)
  21. for md5, img in dic.items():
  22. data = img[0]
  23. if not isinstance(data, bytes):
  24. data = data.encode('ascii')
  25. name = os.path.join(outdir, md5 + '.' + img[1].lower())
  26. print(name)
  27. with open(name, 'wb') as f:
  28. f.write(base64.decodebytes(data))
  29. elif sys.argv[1] == 'pack':
  30. ret = {}
  31. indir = sys.argv[2]
  32. files = os.listdir(indir)
  33. for fname in files:
  34. try:
  35. md5, format = fname.split('.')
  36. except:
  37. print("Unable to parse", fname)
  38. continue
  39. with open(os.path.join(indir, fname), 'rb') as f:
  40. b64 = base64.encodebytes(f.read()).decode('ascii')
  41. ret[md5] = (b64, format)
  42. with open('emoji.cache', 'wb') as f:
  43. pickle.dump(ret, f)