Morsecode-API
Vier lesende Endpunkte über HTTPS. Kein Konto, kein Schlüssel, kein Anmeldeformular - nur eine Adresse, die JSON zurückgibt.
Kein Schlüssel, aber nicht unbegrenzt. Aufrufe werden je Adresse und je
Endpunkt gezählt. Die Antworten tragen einen Cache-Control-Kopf - wer ihn beachtet,
kommt der Grenze nie nahe, denn dieselbe Frage hat immer dieselbe Antwort.
Kodieren
Text nach Morse. Wörter trennt ein Schrägstrich.
GET https://www.morse-code.info/api/encode?text=HALLO
{
"ok": true,
"text": "HALLO",
"morse": ".... .- .-.. .-.. ---",
"unbekannt": []
}
unbekannt nennt die Zeichen, für die es keinen Morsecode gibt. Sie fehlen im
Ergebnis, aber du erfährst davon - ein stillschweigend verschwundenes Emoji würde aus einer
falschen Eingabe eine scheinbar richtige Antwort machen.
Dekodieren
Morse zurück nach Text. Als Worttrenner gelten der Schrägstrich und drei Leerzeichen.
GET /api/decode?morse=....%20.-%20.-..%20.-..%20---
{
"ok": true,
"morse": ".... .- .-.. .-.. ---",
"text": "HALLO",
"unbekannt": []
}
Eine Folge ohne Bedeutung wird im text zum Fragezeichen und steht zusätzlich in
unbekannt. So bleibt die Stelle erhalten, und du weißt trotzdem, was daneben war.
Alles außer Punkt, Strich, Schrägstrich und Leerraum wird mit 400 abgewiesen statt wohlwollend
ausgelegt.
Zeiten
Wie lange ein Text dauert und wie lang die einzelnen Bestandteile sind. Das Tempo folgt PARIS: 50 Einheiten je Bezugswort, eine Einheit sind 1,2/WpM Sekunden.
GET /api/timing?text=PARIS&wpm=20
{
"dit_ms": 60,
"dah_ms": 180,
"pause_zeichen_ms": 180,
"pause_wort_ms": 420,
"dauer_s": 2.58,
"einheiten": { "punkte": 10, "striche": 4, "zeichen": 5, "woerter": 1 }
}
Mit &effektiv= kommt Farnsworth dazu: Zeichen bleiben im vollen Tempo, die
Pausen dazwischen werden länger. effektiv wird auf wpm begrenzt -
Farnsworth dehnt Pausen, es kürzt keine Zeichen.
dauer_s misst vom ersten bis zum letzten Ton. Eine abschließende Wortpause zählt
nicht mit, deshalb kommt PARIS bei 20 WpM auf 43 Einheiten und nicht auf 50.
Alphabet
Eine vollständige Codetabelle. Sechs Sätze stehen bereit: international (die
Voreinstellung), american, wabun (Japanisch), thai,
hangul (Koreanisch) und russisch (Kyrillisch).
GET /api/alphabet?set=international
Die Antwort trennt drei Dinge: zeichen enthält die Zeichengruppen,
zeit die Zeitverhältnisse, sofern der Satz eigene festlegt, und hinweise
die Quelle samt Anmerkungen. Jede Tabelle auf dieser Seite ist aus einer benannten Quelle geparst,
und diese Angabe reist mit den Daten mit.
Grenzen, CORS und Fehler
- Häufigkeit: 120 Aufrufe je Minute und Adresse für Kodieren, Dekodieren und
Zeiten; 30 für das Alphabet, denn eine Antwort ist einige Kilobyte groß und ändert sich fast
nie. Über der Grenze kommt 429 mit einem
Retry-After-Kopf. - CORS: offen.
Access-Control-Allow-Origin: *, du kannst also direkt aus dem Browser aufrufen. Hier liegen öffentliche Nachschlagedaten und keine Nutzerdaten - es gibt nichts, was eine fremde Seite im Namen eines Besuchers holen könnte. - Methoden: GET und OPTIONS. Ein POST bekommt 405, statt still angenommen zu werden.
- Fehler sind ebenfalls JSON, nie eine HTML-Fehlerseite:
{"ok": false, "fehler": "text-fehlt"}. - Länge: 1000 Zeichen je Aufruf, 200 bei den Zeiten.
Wer das offline oder in größerem Umfang braucht: die JavaScript-Bibliothek rechnet dasselbe im Browser, ganz ohne Aufrufe - und es ist derselbe Code, der auch hier läuft.
Häufige Fragen
-
Brauche ich einen Schlüssel?
Nein. Es gibt keine Anmeldung und keinen Schlüssel. Die Bremse arbeitet je Adresse, und das genügt für einen Dienst, der nur rechnet und nichts speichert.
-
Darf ich das in einem kommerziellen Produkt einsetzen?
Ja, innerhalb der Grenze und ohne den Eindruck zu erwecken, diese Seite stünde hinter deinem Produkt. Liegt dein Bedarf höher, nimm die JavaScript-Bibliothek - sie läuft auf deiner Seite und hat gar keine Grenze.
-
Warum sind die Feldnamen deutsch?
Weil der Code durchgehend deutsch geschrieben ist. Die Felder nur an der Außenkante umzubenennen, ergäbe zwei Vokabulare für dieselbe Sache.
-
Gibt es einen Endpunkt für Audio?
Über die Schnittstelle nicht. Das Dekodieren von Ton läuft im Browser, in einem Worker, am laufenden Signal. Tondateien an einen Server zu schicken wäre langsamer, schlechter - und hieße, Aufnahmen zu verarbeiten, die uns nichts angehen.