formatter.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. import time
  2. import math
  3. def time_formatter(seconds):
  4. minutes, seconds = divmod(seconds, 60)
  5. hours, minutes = divmod(minutes, 60)
  6. days, hours = divmod(hours, 24)
  7. tmp = (
  8. ((str(days) + " day(s), ") if days else "")
  9. + ((str(hours) + " hour(s), ") if hours else "")
  10. + ((str(minutes) + " minute(s), ") if minutes else "")
  11. + ((str(seconds) + " second(s), ") if seconds else "")
  12. )
  13. return tmp[:-2]
  14. def time_parser(start, end):
  15. time_end = end - start
  16. month = time_end // 2678400
  17. days = time_end // 86400
  18. hours = time_end // 3600 % 24
  19. minutes = time_end // 60 % 60
  20. seconds = time_end % 60
  21. times = ""
  22. if month:
  23. times += "{} month, ".format(month)
  24. if days:
  25. times += "{} days, ".format(days)
  26. if hours:
  27. times += "{} hours, ".format(hours)
  28. if minutes:
  29. times += "{} minutes, ".format(minutes)
  30. if seconds:
  31. times += "{} seconds".format(seconds)
  32. if times == "":
  33. times = "{} miliseconds".format(time_end)
  34. return times
  35. def time_parser_int(time_end):
  36. month = time_end // 2678400
  37. days = time_end // 86400
  38. hours = time_end // 3600 % 24
  39. minutes = time_end // 60 % 60
  40. seconds = time_end % 60
  41. times = ""
  42. if month:
  43. times += "{} month, ".format(month)
  44. if days:
  45. times += "{} days, ".format(days)
  46. if hours:
  47. times += "{} hours, ".format(hours)
  48. if minutes:
  49. times += "{} minutes, ".format(minutes)
  50. if seconds:
  51. times += "{} seconds".format(seconds)
  52. if times == "":
  53. times = "{} miliseconds".format(time_end)
  54. return times[:-2] if times[-2:] == ", " else times
  55. def get_readable_time(seconds: int) -> str:
  56. count = 0
  57. ping_time = ""
  58. time_list = []
  59. time_suffix_list = ["s", "m", "h", "days"]
  60. while count < 4:
  61. count += 1
  62. if count < 3:
  63. remainder, result = divmod(seconds, 60)
  64. else:
  65. remainder, result = divmod(seconds, 24)
  66. if seconds == 0 and remainder == 0:
  67. break
  68. time_list.append(int(result))
  69. seconds = int(remainder)
  70. for x in range(len(time_list)):
  71. time_list[x] = str(time_list[x]) + time_suffix_list[x]
  72. if len(time_list) == 4:
  73. ping_time += time_list.pop() + ", "
  74. time_list.reverse()
  75. ping_time += ":".join(time_list)
  76. return ping_time
  77. def convert_size(size_bytes):
  78. if size_bytes == 0:
  79. return "0B"
  80. size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
  81. i = int(math.floor(math.log(size_bytes, 1024)))
  82. p = math.pow(1024, i)
  83. s = round(size_bytes / p, 2)
  84. return "%s %s" % (s, size_name[i])
  85. def extract_time(time_val):
  86. if not any(time_val.endswith(unit) for unit in ("m", "h", "d")):
  87. return False
  88. unit = time_val[-1]
  89. time_num = time_val[:-1] # type: str
  90. if not time_num.isdigit():
  91. return False
  92. if unit == "d":
  93. bantime = int(time.time() + int(time_num) * 24 * 60 * 60)
  94. elif unit == "h":
  95. bantime = int(time.time() + int(time_num) * 60 * 60)
  96. elif unit == "m":
  97. bantime = int(time.time() + int(time_num) * 60)
  98. else:
  99. return False
  100. return bantime
  101. def extract_time_set(time_val):
  102. if not any(time_val.endswith(unit) for unit in ("m", "h", "d")):
  103. return False
  104. unit = time_val[-1]
  105. time_num = time_val[:-1] # type: str
  106. if not time_num.isdigit():
  107. return False
  108. if unit == "d":
  109. bantime = int(int(time_num) * 24 * 60 * 60)
  110. elif unit == "h":
  111. bantime = int(int(time_num) * 60 * 60)
  112. elif unit == "m":
  113. bantime = int(int(time_num) * 60)
  114. else:
  115. return False
  116. return bantime
  117. def escape_invalid_curly_brackets(text, valids): # sourcery skip
  118. new_text = ""
  119. idx = 0
  120. while idx < len(text):
  121. if text[idx] == "{":
  122. if idx + 1 < len(text) and text[idx + 1] == "{":
  123. idx += 2
  124. new_text += "{{{{"
  125. continue
  126. else:
  127. success = False
  128. for v in valids:
  129. if text[idx:].startswith("{" + v + "}"):
  130. success = True
  131. break
  132. if success:
  133. new_text += text[idx: idx + len(v) + 2]
  134. idx += len(v) + 2
  135. continue
  136. else:
  137. new_text += "{{"
  138. elif text[idx] == "}":
  139. if idx + 1 < len(text) and text[idx + 1] == "}":
  140. idx += 2
  141. new_text += "}}}}"
  142. continue
  143. else:
  144. new_text += "}}"
  145. else:
  146. new_text += text[idx]
  147. idx += 1
  148. return new_text