generate.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. import base64
  4. import argparse
  5. import hashlib
  6. from zipfile import ZipFile
  7. import dmp_message_pb2 # 由pb文件生成的python代码, 使用Protocol Buffer2
  8. TYPES = {
  9. 'IMEI': dmp_message_pb2.IdItem.IMEI_MD5,
  10. 'OAID': dmp_message_pb2.IdItem.OAID_MD5,
  11. 'IDFA': dmp_message_pb2.IdItem.IDFA
  12. }
  13. def generate_valid_file(filename, type, md5):
  14. dataType = TYPES[type]
  15. target_filename = './' + type
  16. target_file = open(target_filename, 'w')
  17. count = 0
  18. dmp_data = dmp_message_pb2.DmpData()
  19. with open(filename) as file:
  20. for line in file:
  21. count += 1
  22. reset = count % 10000 == 0
  23. if (reset):
  24. binary_string = dmp_data.SerializeToString()
  25. result_string = base64.b64encode(binary_string).decode()
  26. target_file.write(result_string)
  27. target_file.write('\n')
  28. dmp_data = dmp_message_pb2.DmpData()
  29. if (md5):
  30. line = hashlib.md5(line.strip().encode('utf-8')).hexdigest()
  31. item = dmp_data.idList.add()
  32. item.dataType = dataType
  33. item.id = line.lower().strip()
  34. if count % 10000 > 0:
  35. binary_string = dmp_data.SerializeToString()
  36. result_string = base64.b64encode(binary_string).decode()
  37. target_file.write(result_string)
  38. target_file.write('\n')
  39. target_file.close()
  40. with ZipFile('./' + type + '.zip', 'w') as zip:
  41. zip.write(target_filename)
  42. if __name__ == '__main__':
  43. parser = argparse.ArgumentParser()
  44. parser.add_argument('filename')
  45. parser.add_argument('-t', '--type', required=True)
  46. parser.add_argument('-m', '--md5', action='store_true')
  47. args = parser.parse_args()
  48. # print(args)
  49. generate_valid_file(args.filename, args.type, args.md5)