···
1
+
import datetime, random
6
+
A class representing a TID.
9
+
time (datetime.datetime): The time of a TID.
10
+
clockIdentifier (int): what it said.
14
+
self, time: datetime.datetime | None = None, clockIdentifier: int | None = None
17
+
Initalizes an TID object.
20
+
time (datetime.datetime): The time of a TID.
21
+
clockIdentifier (int): what it said.
24
+
self.timestamp = datetime.datetime.now()
26
+
self.timestamp = time
27
+
if clockIdentifier == None:
28
+
self.clockIdentifier = random.randrange(0, 1024)
30
+
self.clockIdentifier = clockIdentifier
34
+
Convert the TID to integer.
36
+
timestamp = int(self.timestamp.timestamp() * 1000000)
37
+
return timestamp * 1024 + self.clockIdentifier
41
+
Convert the TID to base32-sortable integer.
44
+
binary = f"{integer:065b}"
47
+
"234567abcdefghijklmnopqrstuvwxyz"[int(binary[i : i + 5], base=2)]
48
+
for i in range(0, len(binary), 5)
53
+
def importTIDfromInteger(value: int | None = None):
55
+
This function imports from Integer to TID.
58
+
value (int): The integer.
61
+
TID: The TID of given integer.
65
+
clockIdentifier = value % 1024
66
+
timestamp = (value >> 10) / 1000000
67
+
return TID(datetime.datetime.fromtimestamp(timestamp), clockIdentifier)
70
+
def importTIDfromBase32(value: str | None = None):
72
+
This function imports from Integer to TID.
75
+
value (int): The integer.
78
+
TID: The TID of given integer.
82
+
b32s = "234567abcdefghijklmnopqrstuvwxyz"
83
+
return importTIDfromInteger(
86
+
b32s.find(value[i]) * (32 ** (len(value) - i - 1))
87
+
for i in range(len(value))