Compare commits

...

4 Commits

Author SHA1 Message Date
klemens 3e1a6d979b Add more neuter nouns 2026-01-13 16:01:54 +01:00
klemens f15d810394 Add parameter to exclude usernames 2026-01-13 15:50:30 +01:00
klemens 66eeb9ed67 Add a few new nouns and an adjective 2026-01-13 15:50:11 +01:00
klemens 548c9d8d9b Add support for neuter nouns 2026-01-13 15:49:43 +01:00
5 changed files with 71 additions and 7 deletions
+2 -1
View File
@@ -47,4 +47,5 @@ tiefe
hohe
geniale
sanfte
vokale
vokale
bunte
+22 -4
View File
@@ -12,11 +12,18 @@ from reportlab.graphics import renderPDF
from svglib.svglib import svg2rlg
from urllib.parse import urljoin
def generate_random_username(female_nouns, male_nouns, adjectives, used_usernames):
def generate_random_username(female_nouns, male_nouns, neuter_nouns, adjectives, used_usernames):
random_username = None
while True:
nouns = choice([female_nouns, male_nouns])
random_username = f"{adjectives[randrange(len(adjectives)-1)]}{'' if nouns is female_nouns else 'r'}-{nouns[randrange(len(nouns)-1)].lower()}"
nouns = choice([female_nouns, male_nouns, neuter_nouns])
adjektive_suffix = ""
if nouns is male_nouns:
adjektive_suffix = "r"
elif nouns is neuter_nouns:
adjektive_suffix = "s"
random_username = f"{adjectives[randrange(len(adjectives))]}{adjektive_suffix}-{nouns[randrange(len(nouns))].lower()}"
if random_username not in used_usernames:
used_usernames.add(random_username)
print(random_username)
@@ -30,12 +37,14 @@ if __name__ == "__main__":
parser.add_argument("-s", "--size", type=int, help="Ticket height, defaults to 150.", default=150)
parser.add_argument("-m", "--margin", type=int, help="Margin (depends on printer), defaults to 0.", default=0)
parser.add_argument("-g", "--gap", type=int, help="Gap between tickets, defaults to 0.", default=0)
parser.add_argument("--exclude-usernames-from", action="append", help="File with usernames that should not be used.", default=[])
args = parser.parse_args()
adjectives = set()
female_nouns = set()
male_nouns = set()
neuter_nouns = set()
with open('adjektive-weiblich.txt', 'r') as file:
for line in file:
adjectives.add(line.strip())
@@ -45,13 +54,22 @@ if __name__ == "__main__":
with open('nomen-maennlich.txt', 'r') as file:
for line in file:
male_nouns.add(line.strip())
with open('nomen-neutrum.txt', 'r') as file:
for line in file:
neuter_nouns.add(line.strip())
adjectives = list(adjectives)
female_nouns = list(female_nouns)
male_nouns = list(male_nouns)
neuter_nouns = list(neuter_nouns)
pdf = canvas.Canvas(args.output, pagesize=A4)
page_width, page_height = A4
used_usernames = set()
for exclude_usernames_file in args.exclude_usernames_from:
with open(exclude_usernames_file, 'r') as file:
for line in file:
used_usernames.add(line.strip())
ticket_height = args.size
qr_code_size = ticket_height/1.5
@@ -94,7 +112,7 @@ if __name__ == "__main__":
for y in range(codes_per_col):
for x in range(codes_per_row):
url = urljoin(args.url, generate_random_username(female_nouns, male_nouns, adjectives, used_usernames))
url = urljoin(args.url, generate_random_username(female_nouns, male_nouns, neuter_nouns, adjectives, used_usernames))
qr_code = QrCodeWidget(url)
bounds = qr_code.getBounds()
+2 -1
View File
@@ -37,4 +37,5 @@ Schnee
Bonsai
Berg
Blitz
Garten
Garten
Luftballon
+41
View File
@@ -0,0 +1,41 @@
Mikrofon
Klavier
Auge
Wort
Auto
Fahrrad
Ohr
Lama
Brot
Feuerwerk
Huhn
Boot
Cello
Schlagzeug
Herz
Geheimnis
Pferd
Geraet
Konzert
Bier
Schiff
Keyboard
Krokodil
Schaf
Wetter
Klima
Radio
Programm
Buch
Flugzeug
Spiel
Hobby
Leben
Experiment
Gesetz
Dorf
Spielzeug
Geschenk
Signal
Stroh
Gewitter
+4 -1
View File
@@ -38,4 +38,7 @@ Zwiebel
Waffel
Limonade
Zeit
Tomate
Tomate
Erbse
Rakete
Pause