Erstellen Sie einen fehlerhaften XKCD-Browser


75

Herausforderung

Geben Sie unter Berücksichtigung der Nummer eines XKCD-Comics den Titel des Comics aus (den Mouseover-Text).

Das Programm muss jedoch einen Fehler auslösen, wenn die Zahlen 859oder angegeben werden 404.

Regeln

Die angegebene Nummer ist immer ein vorhandener Comic (außer 404).

Ihr Programm darf für keine anderen Zahlen als 859oder einen Fehler auslösen 404.

Als Referenz existiert Comic 404nicht und 859ist:

Brains aside, I wonder how many poorly-written xkcd.com-parsing scripts will break on this title (or ;;"''{<<[' this mouseover text."

URL-Shorter sind nicht erlaubt. Sie können das Internet verwenden, um den Titeltext zu erhalten.

Beispiele

Input > Output
1642 > "That last LinkedIn request set a new record for the most energetic physical event ever observed. Maybe we should respond." "Nah."
1385 > ::PLOOOOSH:: Looks like you won't be making it to Vinland today, Leaf Erikson.
1275 > If replacing all the '3's doesn't fix your code, remove the 4s, too, with 'ceiling(pi) / floor(pi) * pi * r^floor(pi)'. Mmm, floor pie.
1706 > Plus, now I know that I have risk factors for elbow dysplasia, heartworm, parvo, and mange.

Kopfgeld

Ich werde eine Prämie für die kürzeste Antwort vergeben, die auf Comic 859 fehlschlägt, weil sie schlecht geschrieben ist, anstatt nach der Nummer zu suchen.

Ihr Programm kann bei anderen Alternativtexten (z. B. 744) unterbrochen werden, sofern diese nicht übereinstimmende Klammern, Anführungszeichen usw. enthalten.

Gewinnen

Kürzester Code in Bytes gewinnt.


2
Ist es in Ordnung, wenn ein Programm auch bei anderen Comics mit skriptbrechenden Alternativtexten anhält (siehe 744 )?
Totalhuman

8
@totallyhuman Du hättest eine leichte NSFW-Warnung hinzufügen sollen: P
HyperNeutrino

11
Widerspruch in der Herausforderung: "darf keinen Fehler für andere Zahlen als 859oder werfen 404" und "darf auf anderen Alternativtexten brechen".
Aschepler

3
@taschepler Letzteres gilt nur für das Kopfgeld
Beta Decay

4
@ Kzqai Gute Frage, aber ich denke, Sie unterschätzen vielleicht etwas, wie viel Verkehr in einem DDOS steckt und wie viel Verkehr xkcd.com bereits hat. Ich würde nicht erwarten, dass der Verkehr, der aus Antworten generiert wird, im Vergleich zu beiden signifikant ist.
Trichoplax

Antworten:


107

Python 2.7 + xkcd , 55 Bytes

xkcd ist ein Python-Paket eines Drittanbieters. In Python gibt es ein Paket für alles !

lambda n:[xkcd.getComic(n).altText][n==859]
import xkcd

Für 404: urllib2.HTTPError: HTTP Error 404: Not Found

Für 859: IndexError: list index out of range


89
Das Paket wurde vor dieser Herausforderung geschrieben und wurde nicht speziell geschrieben für diese Herausforderung, es endet nur sein bis sehr angemessen.
Draco18s

4
Wow, Python ist jetzt noch attraktiver!
Nat

14

6
Zufälligerweise unterstützt Python in der Tat import'ing antigravity.
Noch ein Benutzer

39
Hat Python gerade diese Herausforderung Mathematica?
Arcturus

22

Python 2 + Requests , 104 102 95 94 Bytes

-2 Bytes dank Erik dem Outgolfer. -1 Byte danke an Jonathan Allan.

lambda n:[get('http://xkcd.com/%d/info.0.json'%n).json()['alt']][n==859]
from requests import*

Obligatorisch:

import antigravity

Schlecht geschriebenes Skript, 98 Bytes

Schlechte Skripte zu schreiben ist also absichtlich schwierig ... Dies bricht auch bei anderen Comics ab, da sie Anführungszeichen enthalten und nicht sicher sind, ob das in Ordnung ist.

from requests import*
exec'print "%s"'%get('http://xkcd.com/%d/info.0.json'%input()).json()['alt']

4
Ich denke, Sie können entfernen ,a.
Erik der Outgolfer

1
Sie können ändern , n in[404,859]zu n==859, weil der JSON - Decoder für nicht 404sowieso.
musicman523

7
... http://kann auch hier verwendet werden, denke ich.
Jonathan Allan

1
Wie führt man das eigentlich mit einem Parameter aus? Wie läuft ein namenloser Lambda ab?
MrZander

1
@MrZander Die erste Zeile ist ein anonymes Lambda, das einer auszuführenden Variablen zugewiesen werden kann. Zum Beispiel werden beide f = lambda n: n * 2; print f(2)oder (lambda n: n * 2)(2)4.
totalhuman

18

Python 2 + xkcd, 82 Bytes

Schlecht geschriebenes Skript

lambda n:eval("'''%s'''"%xkcd.getComic(n).altText.replace(';;',"'''"))
import xkcd

Anhängen und Voranstellen ''', die, sofern der Text '''nichts anderes enthält , auch bei anderen Anführungszeichen nicht abbrechen. Das heißt, es sei denn, der Text enthält ;;, der durch '''(eliminieren re) ersetzt wird. Dies gilt nur für 859und somit bricht dieser Code weiter 859. : P

Außerdem sollte man niemals evalzufällige Internetinhalte verwenden, da dies in xkcd.getComic(n).altTextirgendeiner Form '''+__import__('os').system('rm -rf / --no-preserve-root')+'''dazu führen würde, dass viele schlimme Dinge passieren. Es würde nämlich alles löschen, auf das Nicht-Sudo auf dem Computer zugreifen kann, es sei denn, Sie führen Codegolf-Programme in Sudo aus (ebenfalls nicht empfohlen): P


1
Schlecht geschrieben und scheitert für diesen Testfall 859? Jemand wird Kopfgeld bekommen, nehme ich an ...
Mr. Xcoder

12
Ah, der Schrecken, zufällige Inhalte aus dem Internet auszuwerten - Bravo! : P
Luke Briggs

@ LukeBriggs Es sollte theoretisch sicher sein ... Ich meine, mein Computer ist ( noch ) nicht explodiert, also sollte es in Ordnung sein, oder? : P Aber alternativ können Sie __import__('ast').literal_evalanstelle von verwenden, evalwenn Sie wirklich wollten: P
HyperNeutrino

Bricht es auf 744?
Draco18s

@ Draco18s Sollte es nicht, denn die dreifachen Anführungszeichen kümmern sich nicht um die nicht übereinstimmenden Anführungszeichen, und es gibt keine ;;.
HyperNeutrino

11

Wolfram Language / Mathematica, 118 117 Bytes

Dank numbermanic wurde ein Byte gespeichert

If[ImportString[#,"HTML"]===#,#,$Failed]&@Import[StringTemplate["http://xkcd.com/``/info.0.json"]@#,"RawJSON"]@"alt"&

Erläuterung:

Verwenden Sie StringTemplatediese Option , um die URL aus der Eingabe zu bilden.

Import[..., "RawJSON"]Importiert das JSON-Objekt und analysiert es in ein Assocation.

Wählen Sie den Wert für den Schlüssel "alt".

Nehmen Sie dieses Ergebnis und versuchen Sie, den String als HTML ( Import[#,"HTML"]) zu interpretieren . Wenn dies nichts ändert, lassen Sie das Ergebnis durch, wenn es zurückkehrt $Failed. Das fängt 859 an weil

ImportString[
 "Brains aside, I wonder how many poorly-written xkcd.com-parsing 
  scripts will break on this title (or ;;\"''{<<[' this mouseover text.\"","HTML"]

Ergebnisse in:

Brains aside, I wonder how many poorly-written xkcd.com-parsing 
scripts will break on this title (or ;;"''{

404 schlägt fehl, weil

If[
 ImportString[$Failed["alt"], "HTML"] === $Failed["alt"], 
 $Failed["alt"],
 $Failed]

Ergebnisse in $Failed.


Welche Version benutzt du? Ich komme The Import element "RawJSON" is not present when importing as JSONauf 10.0.1.
Julian Wolf

@totallyhuman Nun, es muss wahrscheinlich nicht auf 859 geprüft werden. (Siehe die Kopfgeldbedingung in der Frage)
Beta Decay

@ JulianWolf Ich benutze 11.1.0. Ich denke, "RawJSON" -Unterstützung wurde in 10.2 hinzugefügt.
Chuy

4
@totallyhuman Es wird keine explizite Überprüfung durchgeführt, aber ImportString[#,"HTML"]darum geht es in diesem Teil.
Chuy

1
@numbermaniac In der Tat kann ich. Ich kann nicht glauben, dass ich das verpasst habe, danke!
Chuy

8

Java 8, 255 176 Bytes

Vielen Dank an @ OlivierGrégoire, dass ich mich wie ein Idiot gefühlt habe und 79 Bytes weg bin. ;)

i->new java.util.Scanner(new java.net.URL("http://xkcd.com/"+i+"/info.0.json").openStream()).useDelimiter("\\a").next().replaceFirst(".*\"alt\": \"","").replaceFirst("\".*","")

Das fühlt sich viel zu schwer an ... Immer noch schwer, aber "okay" für Java ...

Erläuterung:

  • i->{...} Lambda das funktioniert wie String <name>(int i) throws Exception
  • new java.util.Scanner(...).setDelimiter("\\a").next() Lesen Sie alles aus dem gegebenen InputStream
    • new java.net.URL("http://xkcd.com/"+i+"/info.0.json").openStream()Dadurch wird ein InputStreamText erstellt, der auf den Antworttext verweist, der http://xkcd.com/{comic_id}/info.0.jsondie Infoseite des gewünschten Comics enthält
    • replaceFirst(".*\"alt\": \"","").replaceFirst("\".*","") Entfernt alles außer dem Alt-Text (bis zum ersten doppelten Anführungszeichen)
  • implizite Rückkehr

Alternativer kürzerer Ansatz, Java + json.org, 150

i->i==859?new Long(""):new org.json.JSONObject(new org.json.JSONTokener(new java.net.URL("http://xkcd.com/"+i+"/info.0.json").openStream())).get("alt")

Dies ist nicht meine Lösung, daher möchte ich dies nicht als erste veröffentlichen. Alle Credits gehören @ OlivierGrégoire.


1
Ihre Importe fehlen! . Es gibt auch fast keinen Versuch, diese Antwort
Olivier Grégoire

Hinzugefügt. Knapp unter 2 ^ 8. Mindestens die Größe meines Programms passt in ein Byte :)
Roman Gräf

i->new java.util.Scanner(new java.net.URL("http://xkcd.com/"+i+"/info.0.json").openStream()).useDelimiter("\\a").next().replaceFirst(".*\"alt\": \"","").replaceFirst("\".*","")(176 Bytes, vorsichtig mit den Kommentar-Cutter-Zeichen des SO) Und ich habe hier kaum etwas golfen.
Olivier Grégoire

Oh! Ich dachte, die Scanner#useDelimiterRücksendung ist ungültig ... Lies besser das nächste Mal die Dokumentation;)
Roman Gräf

1
Ich habe gerade bemerkt, dass Sie Ihre eigene FunctionKlasse erstellen können , mit der Sie Exception werfen können. Heute ist nicht mein Tag.
Roman Gräf

7

PHP, 89 86 85 Bytes

<?=($a=$argv[1])==859?_:@json_decode(file("http://xkcd.com/$a/info.0.json")[0])->alt;

Gibt null für 404 und 859 zurück

Als xkcd.php speichern und mit der Comic-Nummer ausführen ...

$ php xkcd.php 386

verwenden $argnstatt $argv[1], _stattNULL
Jörg Hülsermann

@ JörgHülsermann Danke! Ich wusste nichts über _. $ argn scheint jedoch nicht zu funktionieren.
Jared Mellentine

php.net/manual/en/features.commandline.options.php $argn ist verfügbar , wenn Sie PHP auf der Kommandozeile mit der Option -Roder der -FOption
Jörg Hülsermann

_ist nicht gleichbedeutend mit NULLin PHP. Dieses Skript gibt den Fehler aus, _dass es sich um eine undefinierte Konstante handelt.
Andy

@ Andy Wenn ein Hinweis nicht erlaubt ""ist, ist eine bessere Alternative, da NULLJared hier ein Beispiel für $argn codegolf.stackexchange.com/questions/114146/…
Jörg

5

PHP 5.3, 280 268 262 261 180 Bytes


1. 11 dank einiger Vorschläge von Roman Gräf
gespeichert 2. 1 Byte mithilfe von http-Link anstelle von https
gespeichert 3. Weitere 6 Byte dank Kevin_Kinsay gespeichert
4. Weitere 1 Byte mit Andys Vorschlag gespeichert
5. Eine größere Überarbeitung:

  • Fehler mit @ unterdrücken, statt zu ändern libxml_use_internal_errors
  • verwendet implode(0,file(""))anstelle von file_get_contents("")(2 Bytes)
  • verschob die $xDefinition innerhalb derif
  • Verwenden, throw 0anstatt eine Ausnahme auszulösen (das Programm stürzt ab)
  • bei der kann @ich jetzt das comicLinkersetzen weglassen .


Mein erster Versuch, Golf zu spielen.

Das DOMDocument bricht ab, wenn es auf dobule ID comicLinks stößt, daher musste ich diese entfernen. Es gibt wahrscheinlich einen schöneren Weg, das zu tun.

Abstürze beim Versuch, nein zu bekommen. 859;)

<?php if(($x=$argv[1])==859)throw 0;$a=new DOMDocument;$b=@$a->loadHTML(implode(0,file("http://xkcd.com/$x")));echo $a->getElementsByTagName('img')->item(1)->getAttribute('title');

2
Willkommen bei PPCG! Ich denke, Sie können den Test entfernen, ob $x==404der andere Code bei der 404-Antwort fehlschlägt ... Sie können ihn auch throw new Exceptiondurch einen dieAufruf ersetzen und die Klammern um throw new Exception("")/ entfernen, dieda es sich nur um eine einzelne Anweisung handelt
Roman Gräf

1
Vielen Dank! Ich war mir nicht sicher, ob die () als "einen Fehler werfen" gelten würde;)
Ezenhis

1
Verwenden Sie "1" anstelle von "true" für libxml_use_internal_errors. Sie können wahrscheinlich 0 an die Ausnahme übergeben und ein Zitatäquivalent speichern. Schließen?> Sollte optional sein.
Kevin_Kinsey

Variablen werden in doppelten Anführungszeichen interpoliert, sodass ein Byte gespart werden "http://xkcd.com/".$xkann "http://xkcd.com/$x":)
Andy

Übrigens, +1 für die Verwendung von "richtigen" Parsing-Technik (XML-Parser) im Gegensatz zu meinem hässlichen Regex-Hack;)
Kevin_Kinsey

5

Python + xkcd , 54 Bytes

import xkcd
lambda n:xkcd.getComic(*{n}-{859}).altText

Nachprüfung

>>> import sys
>>> sys.tracebacklimit = 0
>>>
>>> import xkcd
>>> f = lambda n:xkcd.getComic(*{n}-{859}).altText
>>>
>>> print f(149)
Proper User Policy apparently means Simon Says.
>>>
>>> f(404)
urllib2.HTTPError: HTTP Error 404: Not Found
>>>
>>> f(859)
TypeError: getComic() takes at least 1 argument (0 given)

Ich habe das gerade erst bemerkt. Schönes Golf!
Beta Decay

5

Die Python hat man schon gewonnen, aber egal ...

bash + curl + sed; 88 ~ 91 heh Bytes

printf "$(curl -s https://xkcd.com/2048/info.0.json|sed 's/.*"alt": "//;s/", "img":.*//')\n"

Yay für Regex-JSON-Parsing!

EDIT NoLongerBreathedIn bemerkt (648 Tage in die Zukunft!) , Dass diese auf Pfosten 2048 scheiterte wegen eines unerwarteten \"in diesem Eintrag des JSON. Der reguläre Ausdruck wurde oben aktualisiert. früher war es so sed 's/.*alt": "\([^"]\+\).*/\1/').

Der printfWrapper handhabt ordentlich die Tatsache, dass Unicode-Zeichen in der \unnnnNotation dargestellt werden:

$ printf "$(curl -s https://xkcd.com/1538/info.0.json | sed 's/.*"alt": "//;s/", "img":.*//')\n"
To me, trying to understand song lyrics feels like when I see text in a dream but it𝔰 hอᵣd t₀ ᵣeₐd aกd 𝒾 canٖt fཱྀcu༧༦࿐༄

 

Dies schlägt mit den Pfosten 404 und 859 fehl:

404

$ printf "$(curl -s https://xkcd.com/404/info.0.json | sed 's/.*alt": "\([^"]\+\).*/\1/')\n"
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

859

$ printf "$(curl -s https://xkcd.com/859/info.0.json | sed 's/.*alt": "\([^"]\+\).*/\1/')\n"
Brains aside, I wonder how many poorly-written xkcd.com-parsing scripts will break on this title (or ;;\n$

Das $am Ende der Ausgabe ist meine Eingabeaufforderung und das \nunmittelbar vor der Ausgabe gedruckte Wort ist Teil der printf-Zeichenfolge.

Ich habe absichtlich verwendet, printfweil es Unicode analysieren und auf diesen bestimmten Beitrag schrecklich fallen würde .


Auch Barfs auf 2048. Ich denke, es Barfs auf doppelte Anführungszeichen?
NoLongerBreathedIn

Schöner Fang. Beitrag aktualisiert. Wenn Sie sich das sedBit ansehen, können Sie sehen, dass es gesucht und alt": "dann gelesen hat, bis es einen gefunden hat ". Woops, anscheinend ... (Ich frage mich, wie viele dieser Lösungen einen Unit-Test von e ofv̲͕̲̪er̲̺̗̱̬y̶͎ ͖̙̝̦s͖̙̝̦i҉̟̜n͓͜g̡l̸e͎̠̹̪͈͉͚͟ ̴͎͉̳̮a̴͎͉̳̮l̢͕t̯̦̮̥̺̱̤ ͕̮̪̙̬̲̪͘t͕̮̪̙̬̲̪͘ex̰͙̘̪̼ͅt̺͕͍͔̠̮ͅ ?: P nicht bestehen würden)
i336_

4

Python 2 , 115 106 Bytes

-8 bytes dank ovs. -1 Byte danke an Jonathan Allan.

Ich dachte nur, ich würde eine Standardbibliotheksantwort da draußen veröffentlichen.

lambda n:[json.load(urllib.urlopen('http://xkcd.com/%d/info.0.json'%n))['alt']][n==859]
import urllib,json

1
lambda n:[json.load(urllib.urlopen('https://xkcd.com/%d/info.0.json'%n))['alt']][n==859]für -8 Bytes.
Ovs

1
Sollte mit einem http://zu sparenden Byte funktionieren .
Jonathan Allan

4

Bash + Curl + JQ: 73 66 Bytes

Kürzeste Antwort, die keine xkcd-spezifische Bibliothek verwendet. jq ist ein Tool zum Manipulieren von json-Objekten in der Shell und wird mit einer Parsing-Sprache geliefert, die dies ermöglicht.

curl -Ls xkcd.com/$1/info.0.json|jq -r 'if.num==859then.num.a else.alt end'

curl -Ls xkcd.com/$1/info.0.json|jq -r '(.num!=859//.[9]|not)//.alt'

Erweiterung unten:

curl -Ls - Fragen Sie nach, aber leiten Sie sie gerne weiter (in diesem Fall zur https-Site), und geben Sie keine nicht verwandten Ausgaben aus.

xkcd.com/$1/info.0.json - Schamlos von einer anderen Antwort gestohlen.

|jq -r- Führen Sie jqden folgenden Befehl im Modus "Raw-Ausgabe" aus.

if .num == 859 then .num.a # This fails because you can't get the key 'a' from a property that's an integer else .alt # And this pulls out the 'alt' key from our object. end

Jetzt hat das Skript überarbeitet worden zu verwenden , //welche das Äquivalent ist a or bin Python, und wir verwenden ein |notjeder wahre Wert machen falsch betrachtet werden, so dass der zweite //kann drucken.alt


2

JavaScript (ES6), 177 bis 175 Byte

p=(x)=>{eval(`console.log("${x.alt}")`)};f=(y)=>{var d=document,e=d.createElement("script");e.src=`//dynamic.xkcd.com/api-0/jsonp/comic/${y}?callback=p`;d.body.appendChild(e)}}

Fügen Sie dies in Ihre Browserkonsole ein und führen Sie dann f(859)oder f(404)usw. aus. Diese beiden Fehler sollten in der Konsole auftreten, obwohl sie nicht fest codiert sind. Die anderen werden angezeigt.

Erster Beitrag seit einiger Zeit, sorry wenn es nicht ganz den Regeln entspricht ...!


Verwenden Sie x=>anstelle von (x)=>.
User75200

2

PHP, 160 Bytes

<? preg_match_all('/(tle=\")(.+)(\")\sa/',join(0,file('http://xkcd.com/'.$argv[1])),$a);echo(strstr($c=$a[2][0],'Brains asid'))?$b:html_entity_decode($c,3);

Moment mal ... das entspricht nicht der Spezifikation. Fixing ...
Kevin_Kinsey

Fest. Musste allerdings ungefähr 50 Bytes hinzufügen ... :(
Kevin_Kinsey

1
Sie können 7 Zeichen entfernen, indem Sie das Echo entfernen und die Zuweisung $ c innerhalb des Substrats verschieben
Einacio

1
@BetaDecay, weil keine Überprüfung der eingegebenen Nummer zusätzliche Punkte gibt
Einacio

1
@BetaDecay na ja, ein Skript, das vom Inhalt abhängt, scheint mir schlecht geschrieben zu sein. Jeder andere Titel, der so anfängt, würde ihn brechen. Kevin_Kinsey Sie können ENT_QUOTES durch seinen Wert = 3 ersetzen
Einacio

1

Perl, 129 167 Bytes

use LWP::Simple;use HTML::Entities;print decode_entities($1)if(get("http://www.xkcd.com/$ARGV[0]")=~m/text: ([^<]*)\}\}<\/div>/)

EDIT: Psyche ist es eigentlich

use LWP::Simple;use HTML::Entities;$x=$ARGV[0];if($x==404||$x==859){die}else{print decode_entities($1)if(get("http://www.xkcd.com/$x")=~m/text: ([^<]*)\}\}<\/div>/)}

Importieren Sie die HTML-Dekodierung und den HTTP-Zugriff und drucken Sie dann die Gruppe aus, die der (...) in entspricht

{{Title text: (...)}}</div>

(Ein wenig sparen durch Weglassen {{Title der Abfrage)

Für 404 und 859 Tod.


Was meinst du mit "richtig behandelt 859"?
Beta Decay

@BetaDecay Gibt den aktuellen Alt-Text aus
archaephyrryx

1
the program must throw an error when given the numbers 859 or 404
Beta Decay

Was bedeutet "Fehler auslösen"?
Archaephyrryx

NVM dieist kurz genug
Archaephyrryx

1

BASH, 111 108 Bytes

a = $ (cat) curl -s https://xkcd.com/ $ a / | grep -oP '(? <= Titeltext:) ([^}}] *)' [$ a = 404] && echo "$ a nicht gefunden"

a=#;curl -s https://xkcd.com/$a/ |grep -oP '(?<=Title text:)([^}}]*)';[ $a = 404 ] && echo "$a not found"


Zum Ausführen:
Ändern Sie # in Nummer des Comics. Führen Sie von der Befehlszeile aus.

Danke @ Ale für den Vorschlag!


Warum mit cat von der Standardeingabe lesen, anstatt nur $ 1 über die Befehlszeile zu verwenden? Es würde einige Bytes sparen ...
Ale

1

Javascript (ES6), 118 96 94 Bytes

f=n=>fetch(`//xkcd.com/${n}/info.0.json`).then(x=>x.json()).then(y=>eval(`alert('${y.alt}')`))

Sie können das in Ihre Browserkonsole einfügen und ausführen f(123). Tun Sie dies jedoch auf einer Seite, die sich bereits auf xkcd.com befindet, andernfalls wird ein CORS-Fehler angezeigt.

Bei 404 schlägt dies fehl mit:

Nicht abgefangene (in Aussicht gestellte) SyntaxError: Unerwartetes Token <in JSON an Position 0

Bei 859 schlägt dies fehl mit:

Nicht erfasster (in Versprechung) Syntaxfehler: fehlt) nach Argumentliste

Update: Die neueste Version überprüft den Alternativtext ordnungsgemäß, anstatt nur nach 859 und Rasuren von weiteren 2 Bytes zu suchen.


Leider schlägt dies bei jedem Titeltext fehl, der einen Apostroph enthält (z. B. 1084).
ETHproductions
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.