Initial commit
This commit is contained in:
38
Crowdanki/guid.py
Normal file
38
Crowdanki/guid.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import hashlib, uuid, random, string, sys
|
||||
|
||||
def anki_guid1(text: str) -> str:
|
||||
#return hashlib.sha1(text.encode('utf-8')).hexdigest()[:10]
|
||||
guid = str(uuid.uuid4())[:10]
|
||||
return guid
|
||||
|
||||
#print(anki_guid1("jag och du"))
|
||||
|
||||
|
||||
def generate_guid():
|
||||
chars = string.ascii_letters + string.digits + "!#$%&()*+,-./:;<=>?@[]^_`{|}~"
|
||||
return ''.join(random.choices(chars, k=10))
|
||||
|
||||
|
||||
import hashlib
|
||||
|
||||
# Base91-Zeichensatz wie in Anki
|
||||
base91chars = (
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
|
||||
'0123456789!#$%&()*+,-./:;<=>?@[]^_`{|}~'
|
||||
)
|
||||
|
||||
def anki_guid(text: str) -> str:
|
||||
# SHA1-Hash des Front-Felds berechnen
|
||||
h = hashlib.sha1(text.encode('utf-8')).digest()
|
||||
x = int.from_bytes(h[:8], 'little') # Anki nimmt die ersten 8 Bytes, little-endian
|
||||
|
||||
# Kodierung in Base91-Zeichenkette (10 Zeichen)
|
||||
chars = []
|
||||
for _ in range(10):
|
||||
chars.append(base91chars[x % len(base91chars)])
|
||||
x //= len(base91chars)
|
||||
|
||||
return ''.join(chars)
|
||||
|
||||
|
||||
print(anki_guid(sys.argv[1]))
|
||||
Reference in New Issue
Block a user