convert.py 806 B

123456789101112131415161718192021222324252627282930
  1. from collections import Counter
  2. import re
  3. def remove_extra_lines(s:str):
  4. # Alternatively: os.linesep.join([line for line in s.splitlines() if line])
  5. return re.sub('\n+', '\n', s)
  6. def remove_email_extra(s:str):
  7. s = remove_extra_lines(s)
  8. return s.replace("=20", "").replace('"3D', "").replace("=\n", "")
  9. def payloads_to_dict(*parts):
  10. data = {}
  11. for part in parts:
  12. payload = part.get_payload()
  13. key = part.get_content_type()
  14. if key in data:
  15. new_key = key
  16. n = 0
  17. while new_key in data:
  18. n += 1
  19. new_key = key + f"_{n}"
  20. key = new_key
  21. if isinstance(payload, str):
  22. data[key] = payload
  23. else:
  24. data[key] = payloads_to_dict(*payload)
  25. return data