1w6 - Ein Würfel System - Einfach saubere, freie Rollenspiel-Regeln

Zufällige Namen aus dem Onomastikon holen (mit GNU/Linux)

Bild von Drak

Einleitung

Das Onomastikon von Kate Monk ist meine Lieblingsquelle für Namen aller Art. Es bietet eine riesige Liste von Namen aus unserer Welt, sortiert nach Region und Ursprung der Namen.

Damit ist es problemlos möglich, sich für eine beliebige Region in fast jeder Fantasy-Welt und für viele Science-Fiction-Welten passende Namen zu suchen.

Was aber fehlt ist die Möglichkeit, schnell zufällige Namen zu wählen. Daher habe ich ein kleines Skript geschrieben, um den Mangel zu beheben :)

Das Skript

Die Ausgabe enthält den Namen zusammen mit der Datei, aus der er stammt, so dass ich einfach ähnliche Namen finden kann, wenn der Hintergrund des entsprechenden NSCs wichtig werden sollte.

Das Skript ist nicht hundertprozentig poliert, so dass dann und wann Begriffe auftauchen, die mit drin hängen, aber keine Namen sind. Der Grund dafür ist, dass das Onomastikon selbst urheberrechtlich geschützt ist, so dass ich hier keine aufgeräumte Liste hochladen kann, in der die Namen stehen.

Stattdessen kannst du dir mit dem Skript hier selbst so eine Liste erstellen :) (sich das Onomastikon runterzuladen und privat zu bearbeiten ist urheberrechtlich erlaubt). Du kannst es starten via

sh zufaellige-namen-aus-dem-onomastikon.sh

Damit das funktioniert brauchst du ein GNU/Linux System wie Kubuntu (Ein *BSD oder MacOSX könnte auch gehen, ungetestet) und Python (in den meisten Distros standardmäßig installiert).

Funktionsweise

Das Skript lädt erst mit wget eine Kopie des Onomastikons runter, holt dann alle Namen raus, strukturiert die Zeilen um (Namen vorne, Pfad hinten) und filtert raus, was keine Namen sind.

Danach hast du die Datei "alle-namen-vorne.txt", aus der du mit

cat alle-namen-vorne.txt | shuf | head -n 12

zwölf zufällige Namen holen kannst. Hinter den Namen steht dabei jeweils, aus welcher Datei sie kommen, also wo du weitere ähnliche Namen findest.

Nebenbei hast du, nachdem du das Skript genutzt hast, auch noch eine lokale Kopie des Onomastikons auf deinem Rechner :)

Ich hoffe, die Namen helfen dir!

Das Skript im Detail

Teil 1: Onomastikon laden: wget

wget -m -np http://tekeli.li/onomastikon/  
cd tekeli.li/onomastikon/

Teil 2: Namen extrahieren: grep und sed

grep \<td\> -r */ |sed "s/<td>//" | sed "s/<\/td>//" > alle-namen.txt

Teil 3: Liste aufräumen: Python

def is_good_line(l):  
    return l.split(":")[1:] and (
    not "Male" in l and  
    not "Female" in l and  
    not ".html" in l and  
    not "nbsp" in l and  
    not "href" in l and  
    not "Surname" in l and  
    not ".shtml" in l and  
    not "Sources.htm" in l and  
    not "/" in l.split(":")[1] and  
    not "+" in l.split(":")[1] and  
    not "-" in l.split(":")[1] and  
    not "son of " in l.split(":")[1] and  
    not l.split(":")[2:]
    )

with open("alle-namen.txt") as namen: 
    names = [(j,i) for i,j in [line.split(":")  
             for line in namen if is_good_line(line)]]

with open("alle-namen-vorne.txt", "w") as f:  
    for i,j in names:  
        k = i[:-2] + "      " + j + "\n"  
        f.write(k.lstrip())

Teil 4: Namen aus der Liste holen: cat, shuf und head

cat alle-namen-vorne.txt | shuf | head -n 12

Das ergibt dann z.B. etwas wie

Zacheriu      England-Firstnames/Variants/Biblical-Prophets.htm
Liu A      Orient/China/Rulers.htm
Alvitus, Bishop of Leon d106      Saints/Calendar/September.htm
C8t      Saints/Alphabet/Saints-A.htm
Faustyn      Europe-Eastern/Poland/Latin.htm
Cerneu      Saints/Alphabet/Saints-C.htm
Axe      Europe-Scandinavia/Sweden/Biblical.htm
Hemalat      India/Hindu-Names/Nature.htm
Ranji      India/Sikh/Sikh.htm
Emily Luc      England-Colonies/Pitcairn.htm
Paul the Apostle (Conversion      Saints/Calendar/January.htm
monk of Ripo      Saints/Alphabet/Saints-E.htm

Du siehst auch z.B. bei ‚C8t‘, wo das Skript noch nicht ganz sauber aufräumt, aber die Mehrzahl der Namen sind sinnvoll nutzbar, und sie geben sofort Ideen (zumindest mir :) ).

Abschluss

Jetzt viel Spaß beim Spielen!

Und wenn dir dieser Tipp beim Leiten hilft, dann schreib uns doch einen Kommentar. Wir freuen uns über Rückmeldung!

PS: Das Skript wird aktualisiert, ohne dass die Beschreibungen hier aktualisiert werden. Für den aktuellen Code schau also in das Skript.

Dieser Text ist mir was wert: Flattr this ?
Bild von PiHalbe

Klingt super!

Das werde ich bei Zeiten mal ausprobieren. Vielen Dank für den Hinweis und das Skript.

Bild von Drak

Gern geschehen! ich hoffe,

Gern geschehen!

ich hoffe, es ist nützlich für dich!

Anpassungen

Hi Drak

Danke für das Skript. Der Download klappt auch mit Cygwin. Allerdings muss man erst noch Python 3 nachinstallieren (Windows, gibts für Cygwin leider noch nicht). Aber dann klappts auch mit der zufälligen-12-er-Namesliste. ;)

Gruss Marc

Bild von Drak

Freut mich! Viel Spaß mit

Freut mich!

Viel Spaß mit dem Namensgenerator :)

Danke für deine Rückmeldung!

Hi Arne, komme gerade von

Hi Arne,

komme gerade von deinem Artikel zum Technophob-Spielen und fand das Skript hier. Der Link oben im Artikel funktioniert nicht mehr, wirft leider einen 404. Ich hab' im Netz eine Kopie gefunden: http://tekeli.li/onomastikon

Viele Grüße

Thorsten

Bild von Drak

Danke! Das ist leider schon

Danke!

Das ist leider schon ein paar Mal passiert…

Ich habe den Link aktualisiert.

Geht nicht ...

Hi Arne

Also, Ubuntu, Python 3.3 ist drauf, download funktioniert teilweise (Es wird die ganze Seite runtergeladen, warum auch immer.

Die Datei "alle-namen" wird auch erstellt. Aber bei der Datei "alle-namen-vorne" scheitert es. Datei ist immer leer. Eine Idee woran das liegen könnte?

Das Skript hat Execute Rechte, was sonst noch nötig sein könnte wüsste ich nicht.

Probiere weiter. Aber wenn dir in der Zwischenzeit was einfällt, darfst du gerne mein Dunkel vertreiben. ;)

Danke und Gruss Marc

Bild von Drak

Danke für die Info! Ich

Danke für die Info!

Ich befürchte, dass die Dateisystemkodierung nicht passt.

Rufst du direkt das shellscript auf? (zufaellige-namen-aus-dem-onomastikon-01.sh)

Wenn ich die einzelnen Schritte von Hand durchgehe, funktioniert es. Ich schau mal, ob ich rausfinde, was kaputt ist.

PS: Dass die ganze Seite runtergeladen wird war ein Bug - gefixt durch -np in wget. Als ich das Skript geschrieben habe, waren auf der Seite vermutlich noch keine Links in andere Bereiche…

Schnell! :)

Hi Arne

Danke für die rasche Bearbeitung. Das mit wget hätte ich auch selber finden können/müssen. Asche auf mein Haupt.

Seltsam ist halt, dass die Datei Alle-Namen.txt angelegt wird, also die bei der der ganze HTML Code entfernt und die Namen mit den Informationen zeilenweise angeordnet sind.

Die zweite Datei ist aber leer.

Gerade ist mir aufgefallen, dass die erste Datei mit -> encoding="ISO-8859-15" und die zweite mit -> encoding="utf-8" erstellt wird. Warum das? Kann es sein, dass meine Probleme daher rühren?

Ich leider kein Programmierer (mehr), aber wenn es das nicht ist, dann weiss ich auch nicht was es sein könnte.

Danke nochmal und Gruss Marc

Bild von Drak

Die erste Datei wird mit

Die erste Datei wird mit ISO-8859-15 geöffnet, um Umlaute richtig zu erkennen. Eigentlich sollte das laufen - ich muss also noch prüfen, warum es nicht tut…

(und der Spamfilter ist immernoch zu aggressiv…)

Bild von Drak

zufällige Namen aus dem Onomastikon läuft wieder

Gefunden. Der Filter war zu aggressiv - ich habe ihn korrigiert und gleich noch schöne Debug-Ausgaben eingebaut. Die neue Version ist oben. Viel Spaß beim Spielen!

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
CAPTCHA
Bist du ein biologisches Wesen? (5 Zeichen, Groß- und Kleinschreibung zählt!)
Image CAPTCHA
Enter the characters shown in the image.
Inhalt abgleichen
Über 1w6
Downloads
GNU General Public License v3
GNU General Public License v3
Flattr this ?

Benutzeranmeldung

CAPTCHA
Bist du ein biologisches Wesen? (5 Zeichen, Groß- und Kleinschreibung zählt!)
Image CAPTCHA
Enter the characters shown in the image.

Kommentare



„Das Regelwerk meiner Träume zu diesem Zweck [eigene Rollenspielwelten] sollte… auf verschiedene Hintergründe und Welten anwendbar sein… einfache und überschaubare Regeln bieten… [und] frei sein… Und wer hätte das gedacht, das 1W6-System erfüllt alle diese Anforderungen.“
— RowC
    was Leute sagen…