Gibt es ein Befehlszeilenprogramm zum Rendern von Markdown mit GitHub-Geschmack?


414

Ich frage mich, ob es ein Befehlszeilenprogramm gibt, mit dem eine Markdown- Datei mit GitHub-Geschmack in HTML gerendert werden kann.

Ich verwende ein GitHub-Wiki, um Website-Inhalte zu erstellen. Ich habe das Repository auf meinem Server geklont und möchte es dann zu normalem HTML verarbeiten. Es ist mir wichtig, dass auf GitHub genau so angezeigt wird, wie es für meine Website aussehen soll. Ich würde auch gerne die eingezäunten Blöcke mit verwenden ~~~, daher würde ich lieber nicht nur die Standard-Markdown-Syntax verwenden.

Ich habe ein bisschen in die JavaScript-Live-Vorschau geschaut und gedacht, ich könnte sie in Node.js einbinden, aber sie sagen, dass sie veraltet ist. Ich habe mir das Redcarpet-Repository angesehen, aber es sieht nicht so aus, als hätte es eine Befehlszeilenschnittstelle.

Ich habe jedoch meine eigene Lösung entwickelt, da hier keine Lösung eindeutig besser ist als die anderen, lasse ich die Frage ohne eine ausgewählte Antwort.


2
RE: UPDATE: Wenn ich ein --outArgument zum Rendern in eine HTML-Datei anstelle des Browsers hinzufügen würde, wäre das akzeptabel?
Joe

@ Joe bitte füge diese Option hinzu!
Bguiz

@McLeopold @bguiz hat gerade die --exportOption bereitgestellt , mit der GFM und seine Stile in einer einzigen Datei dargestellt werden. Beantwortet dies die Frage?
Joe

3
@McLeopold, Joe hat dies aus dem Park geworfen, indem er eine einfache wiederverwendbare Lösung geschaffen hat. Vielleicht möchte er ihm die Antwort geben.
James McMahon

1
Github selbst benutzt Sundown . Siehe stackoverflow.com/a/7694931/632951
Pacerier

Antworten:


447

Ich habe eine kleine CLI in Python geschrieben und GFM-Unterstützung hinzugefügt. Es heißt Grip (Github Readme Instant Preview) .

Installieren Sie es mit:

$ pip install grip

Und um es zu benutzen, einfach:

$ grip

Besuchen Sie dann localhost:5000, um die readme.mdDatei an diesem Speicherort anzuzeigen .

Sie können auch Ihre eigene Datei angeben:

$ grip CHANGES.md

Und Port wechseln:

$ grip 8080

Und natürlich speziell GitHub-Flavored Markdown rendern, optional mit Repository-Kontext:

$ grip --gfm --context=username/repo issue.md

Bemerkenswerte Eigenschaften:

  • Rendert Seiten so, dass sie genau wie auf GitHub aussehen
  • Eingezäunte Blöcke
  • Python-API
  • Navigieren Sie zwischen verknüpften Dateien (danke, vladwing !) , Die in 2.0 hinzugefügt wurden
  • Export in eine einzelne Datei (danke, iliggio !) In 2.0 hinzugefügt
  • Neu: Aus 3.0 lesen stdinund exportierenstdout

Hoffe das hilft jemandem hier. Schau es dir an .


1
Funktioniert sehr gut und die Installation von Pythonistas ist unschlagbar!
RichVel

29
Dies sollte ein erster Treffer für "Github Markdown Preview" sein. Alles andere ist kompliziert, funktioniert nicht oder macht nicht alle GitHub-Funktionen. gripfunktioniert sofort.
Bluu

1
@Houdini Dieses Problem ist veraltet. Flask unterstützt 3.3, siehe flask.pocoo.org/docs/python3 . Hier ist ein neuerer Github-Thread zum Thema github.com/mitsuhiko/flask/issues/587 . Wenn eine andere Abhängigkeit aktualisiert werden muss, können Sie ein Problem oder eine Pull-Anfrage öffnen.
Joe

3
Es ist zu beachten, dass für dieses Paket eine aktive Internetverbindung und Ihre Github-Authentifizierungsdaten (über die Befehlszeile angegeben) erforderlich sind, wenn Sie mehr als 60 Aktualisierungen pro Stunde durchführen.
Leo

12
Wie bereits erwähnt, halte ich dies nicht für eine besonders gute Lösung, da alles, was es tut, an Github geht und Github dazu bringt, Ihren Markdown zu rendern. Es erfordert eine funktionierende Internetverbindung mit Zugriff auf Github. Wenn Github stirbt, funktioniert dieses Tool nicht mehr. Ich hätte lieber eine komplett Offline-Lösung.
Jez

114

Ich habe keine schnelle und einfache Methode für Markdown mit GitHub-Geschmack gefunden, aber ich habe eine etwas allgemeinere Version gefunden - Pandoc . Es konvertiert von / in eine Reihe von Formaten, einschließlich Markdown, Rest, HTML und anderen.

Ich habe auch eine entwickelt Makefile, um alle .md-Dateien in .html zu konvertieren (größtenteils zum Beispiel bei Writing, Markdown und Pandoc ):

# 'Makefile'
MARKDOWN = pandoc --from gfm --to html --standalone
all: $(patsubst %.md,%.html,$(wildcard *.md)) Makefile

clean:
    rm -f $(patsubst %.md,%.html,$(wildcard *.md))
    rm -f *.bak *~

%.html: %.md
    $(MARKDOWN) $< --output $@

4
Ich habe "watch pandoc ..." verwendet, um eine Markdown-Datei kontinuierlich in HTML zu konvertieren, und die Chrome-Erweiterung "live reload", um in Echtzeit die Funktion "Bleiben, wo ich auch gescrollt habe" zu erhalten, und sie funktioniert hervorragend . chrome.google.com/webstore/detail/livereload/…
Brad Parks

1
Pandoc liest GFM einwandfrei, generiert jedoch nicht den gleichen HTML-Code wie GitHub. Wenn Sie beispielsweise ein mehrzeiliges <pre/>Tag in Ihrer GFM-Quelle haben, fügt Pandoc <br/>Tags für die Zeilenumbrüche ein, während GitHubs Renderer dies tut es entfernt führende Leerzeichen, scheint sonst den Inhalt in Ruhe zu lassen.
David Moles

1
Wie kann man das resultierende HTML schön stylen? Meine Ausgabe wird zum Beispiel immer noch mit Times New Roman gerendert.
Ganzheitlicher Entwickler

Anweisungen zur Installation von Pandoc finden Sie hier . Auf macOS:brew install pandoc
Master of Ducks

1
Weder das gfmnoch das markdown_githubEingabeformat rendern Dinge wie Codeblöcke korrekt.
user5359531

29

Vielleicht könnte das helfen:

gem install github-markdown

Es gibt keine Dokumentation, aber ich habe sie aus der Gollum- Dokumentation erhalten. Wenn Sie sich rubydoc.info ansehen , können Sie Folgendes verwenden:

require 'github/markdown'  
puts GitHub::Markdown.render_gfm('your markdown string')

in Ihrem Ruby-Code. Sie können dies einfach in ein Skript einbinden, um es in ein Befehlszeilenprogramm umzuwandeln:

#!/usr/bin/env ruby

# render.rb
require 'github/markdown'

puts GitHub::Markdown.render_gfm File.read(ARGV[0])

Führen Sie es mit aus ./render.rb path/to/my/markdown/file.md. Beachten Sie, dass dies für die Verwendung in der Produktion ohne Desinfektion nicht sicher ist.


1
Vielen Dank, Jim, aufgrund praktisch nicht vorhandener Beispiele war ich beim erforderlichen Schritt festgefahren (das Ersetzen des Bindestrichs durch einen Schrägstrich hat es geschafft) ..;)
plesatejvlk

Dies ist großartig, wenn Sie bereits NPM verwenden. Ich musste es verwenden, da DOxygen mir ständig Probleme mit dem Markdown + Export nach HTML mit speziellem Github-Geschmack verursachte.
KayleeFrye_onDeck

Wird dies lokal ausgeführt oder werden Daten an die GitHub-API gesendet?
user5359531

28
pip3 install --user markdown
python3 -m markdown readme.md > readme.html

Es behandelt keine GitHub-Erweiterungen, ist aber besser als nichts. Ich glaube, Sie können das Modul erweitern, um die GitHub-Ergänzungen zu handhaben.


1
/ usr / bin / python: Markdown ist ein Paket und kann nicht direkt ausgeführt werden
Kazimieras Aliulis

2
Einfache HTML-Ausgabe ohne ausgefallene Tags.
Halil Kaskavalci

23

Wahrscheinlich nicht das, was Sie wollen, aber da Sie Node.js erwähnt haben: Ich konnte kein gutes Tool finden, um eine Vorschau der Dokumentation zu GitHub Flavored Markdown auf meinem lokalen Laufwerk anzuzeigen, bevor ich sie an GitHub festschrieb. Deshalb habe ich heute eines erstellt, das auf Node.js basiert: https : //github.com/ypocat/gfms

Vielleicht können Sie die showdown.js daraus für Ihr Wiki wiederverwenden, wenn Ihre Frage noch aktuell ist. Wenn nicht, werden vielleicht andere Leute, die mit dem gleichen Problem wie ich konfrontiert sind (genau wie ich), diese Frage und diese Antwort darauf finden.


Gut gemacht, Mann. Spart mir, beim Schreiben einer Knotenanwendung auf Ruby oder Python zurückgreifen zu müssen, was großartig ist.
jedd.ahyoung

19

Um eine README.md-Datei im Terminal zu lesen, verwende ich:

pandoc README.md | lynx -stdin

Pandoc gibt es im HTML-Format aus, das Lynx in Ihrem Terminal rendert.

Es funktioniert großartig: Es füllt mein Terminal, Verknüpfungen werden unten angezeigt, ich kann durchblättern und die Links funktionieren! Es gibt zwar nur eine Schriftgröße, aber die Farben + Einrückung + Ausrichtung machen das wieder wett.

Installation:

sudo apt-get install pandoc lynx

1
Die Frage bezieht sich speziell auf die Verwendung der Befehlszeile. Probieren Sie dies aus, bevor Sie Ihr eigenes Ruby-Skript (oder Ihren egad-Knotenserver) schreiben.
Cora Middleton

Genau das funktioniert in Ihrem Terminal. Oder wenn Ihr Lieblingsbrowser (Desktop?) Auf diesen Ordner zugreifen kann, verwenden Sie ihn pandoc readme.md -o readme.md.htmlund öffnen Sie die resultierende Datei.
Barry Staes

@ baerry-staes Ja, sorry, ich hoffe es war klar, dass deine meine bevorzugte Antwort war.
Cora Middleton

@ JustinMiddleton Ja, das habe ich, danke. Mein Kommentar war nur, um ein paar zusätzliche Informationen für Desktop-Benutzer hinzuzufügen. Ich dachte, jemand, der dies eines Tages liest, könnte es nützlich finden.
Barry Staes

1
Ich habe ungefähr 5-6 andere Konsolen-MD-Reader ausprobiert und dies war bei weitem die beste Lösung. Ich habe meiner Konfiguration gerade die grundlegendste Funktion hinzugefügt, um die Verwendung etwas zu beschleunigen. function md { pandoc $@ | lynx -stdin }
Russ Brown

17

GitHub verfügt über eine Markdown-API, die Sie verwenden können.


5
jq --slurp --raw-input '{"text": "\(.)", "mode": "markdown"}' < README.md | curl --data @- https://api.github.com/markdown > README.html
Vebjorn Ljosa

@VebjornLjosa * das * oder grip... Du hast gewählt. : P
yyny

13

Verwendung markiert . Es unterstützt GitHub Flavored Markdown, kann als Node.js-Modul und über die Befehlszeile verwendet werden.

Ein Beispiel wäre:

$ marked -o hello.html
hello world
^D
$ cat hello.html
<p>hello world</p>

1
Ich habe festgestellt, dass dies keine Funktionen wie Syntaxhervorhebung für Codeblöcke und neuere Funktionen wie Checklisten unterstützt. Aber hey, es geht meistens!
Bguiz

Sehr schön, das einzige, was mir fehlt, sind einige Ränder für die Tische. Nun, zumindest kann ich sie überhaupt rendern, das ist ziemlich genau das, was ich brauche. Pipe in der GFM, Pipe out HTML :)
Xandaros

Ich bin verwirrt über dieses Beispiel, was ist ^D?
Matthew

10

Dies ist hauptsächlich eine Fortsetzung der Antwort von @ barry-staes für die Verwendung von Pandoc . Homebrew hat es auch, wenn Sie auf einem Mac sind:

brew install pandoc

Pandoc unterstützt GFM als Eingabeformat über den markdown_githubNamen.

Ausgabe in Datei

cat foo.md | pandoc -f markdown_github > foo.html

In Lynx öffnen

cat foo.md | pandoc -f markdown_github | lynx -stdin # To open in Lynx

Öffnen Sie im Standardbrowser unter OS X.

cat foo.md | pandoc -f markdown_github > foo.html && open foo.html # To open in the default browser on OS X`

TextMate-Integration

Sie können die aktuelle Auswahl oder das aktuelle Dokument jederzeit an einen der oben genannten weiterleiten, wie dies bei den meisten Editoren möglich ist. Sie können die Umgebung auch einfach so konfigurieren, dass sie pandocden vom Markdown- Bundle verwendeten Standard-Markdown-Prozessor ersetzt .

Erstellen Sie zunächst ein Shell-Skript mit den folgenden Inhalten (ich werde es nennen ghmarkdown):

#!/bin/bash
# Note included, optional --email-obfuscation arg
pandoc -f markdown_github --email-obfuscation=references

Sie können dann die TM_MARKDOWNVariable (unter Einstellungen → Variablen) auf /path/to/ghmarkdowneinstellen und sie ersetzt den Standard-Markdown-Prozessor.


10

Ich habe ein Tool erstellt, das der Vorschau-Funktion von Atom ähnelt, jedoch als eigenständige Anwendung. Ich bin mir nicht sicher, ob Sie danach suchen, aber es könnte hilfreich sein. - https://github.com/yoshuawuyts/vmd

vmd


Ihr unterstützt das immer noch? Ich habe heute versucht, mit NPM zu installieren, aber keine Würfel. > Herunterladen von Electron-v0.36.9-win32-x64.zip> Fehler: Selbstsigniertes Zertifikat
KayleeFrye_onDeck

1
Ja, das sind wir! Auf welcher Version von npm / node haben Sie dies ausgeführt? - Fühlen Sie sich frei, ein Thema zu GH zu eröffnen, und wir werden uns das ansehen. Vielen Dank!
Yoshua Wuyts

8

pandocmit browserfunktioniert gut für mich.

Verwendungszweck: cat README.md | pandoc -f markdown_github | browser

Installation (Vorausgesetzt, Sie verwenden Mac OSX):

  • $ brew install pandoc

  • $ brew install browser

Oder auf Debian / Ubuntu: apt-get install pandoc browser


1
apt-get isntall pandocreicht aus, keine Notwendigkeit, unsichere, lokale Sachen wie Brauen zu verwenden.
Dominik George

1
@ DominikGeorge gibt es einen Tippfehler, es ist installiert , nicht installiert
Federico Tomassetti

11
@DominikGeorge es gibt kein apt-get auf macOS.
Richrad

6

Siehe auch https://softwareengineering.stackexchange.com/a/128721/24257 .


Wenn Sie daran interessiert sind, wie wir [Github] Markdown-Dateien rendern, sollten Sie sich Redcarpet ansehen , unsere Ruby-Schnittstelle zur Sundown-Bibliothek.

Ruby-Skript, das Redcarpet verwendet , ist das "Befehlszeilenprogramm", wenn Sie über lokales Ruby verfügen


Ich habe keine Ideen - ich schreibe kein Ruby und ich habe keine Redcarpet-Quellen gelesen
Lazy Badger

@LazyBadger, Sundown ist der eigentliche Parser (geschrieben in C). Roter Teppich wird nicht benötigt.
Pacerier

6

Aufbauend auf diesem Kommentar habe ich einen Einzeiler geschrieben, um die Github Markdown API mit curlund zu erreichen jq.

Fügen Sie diese Bash-Funktion in die Befehlszeile oder in Folgendes ein ~/.bash_profile:

mdsee(){ 
    HTMLFILE="$(mktemp -u).html"
    cat "$1" | \
      jq --slurp --raw-input '{"text": "\(.)", "mode": "markdown"}' | \
      curl -s --data @- https://api.github.com/markdown > "$HTMLFILE"
    echo $HTMLFILE
    open "$HTMLFILE"
}

Und dann, um zu sehen, wie das gerenderte HTML im Browser ausgeführt wird:

mdsee readme.md

Ersetzen Sie open "$HTMLFILE"durch, lynx "$HTMLFILE"wenn Sie eine reine Terminallösung benötigen.


4

GitHub hat (seitdem) einen schönen modularen Texteditor namens Atom entwickelt (basierend auf Chromium und verwendet Node.js- Module für Pakete).

Mit einer standardmäßigen vorinstallierten Paket- Markdown-Vorschau können Sie Ihre Vorschau mit Ctrl+ Shift+ auf einer separaten Registerkarte anzeigen M.

Ich habe die vollständige Syntax nicht getestet, aber da sie von GitHub stammt, wäre ich sehr überrascht, wenn sich die Syntax der Vorschau von ihrer unterscheidet (eingezäunte Blöcke mit ~~~Arbeit).

Obwohl es technisch nicht befehlszeilenbasiert ist, verwendet es Node.js und gibt es an einen DOM- basierten Renderer aus. Dies kann jedem helfen, der versucht, GitHub-Syntax-basiertes HTML auf einem Node.js-basierten Webserver zu rendern oder sie einfach zu bearbeiten / seine README.md offline.


1
In Atom können Sie ein Paket namens gfm-pdf ( atom.io/packages/gfm-pdf ) installieren , das Ihr Markdown-Dokument in ein HTML- und / oder PDF-Dokument exportiert. Die Bibliothek wkhtmltopdf ist erforderlich.
spren9er


3

Es gibt ein wirklich schönes und einfaches Tool zum Durchsuchen von GFM Markdown-Dokumenten:

GFMS - Markdown-Server mit Github-Geschmack

Es ist ein einfacher und leichter HTTP-Server (keine Konfiguration erforderlich), den Sie in jedem Verzeichnis mit Markdown-Dateien starten können, um sie zu durchsuchen.

Eigenschaften:

  • Volle Unterstützung für GFM Markdown
  • Hervorhebung der Quellcode-Syntax
  • Durchsuchen von Dateien und Verzeichnissen
  • Gut aussehende Ausgabe (und konfigurierbare CSS-Stylesheets)
  • In PDF exportieren

3

Ich habe es geschafft, ein einzeiliges Ruby-Skript für diesen Zweck zu verwenden (obwohl es in einer separaten Datei gespeichert werden musste). Führen Sie diese Befehle zunächst einmal auf jedem Clientcomputer aus, von dem aus Sie Dokumente übertragen:

gem install github-markup
gem install commonmarker

Installieren Sie als Nächstes dieses Skript in Ihrem Client-Image und rufen Sie es auf render-readme-for-javadoc.rb:

require 'github/markup'

puts GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, File.read('README.md'))

Rufen Sie es schließlich so auf:

ruby ./render-readme-for-javadoc.rb >> project/src/main/javadoc/overview.html

ETA: Dies wird Ihnen bei StackOverflow-Markdown nicht helfen, was bei dieser Antwort anscheinend fehlschlägt.


Ich denke, dies ist die Antwort "am nächsten an der Quelle" von allen, da diese Tools von Github verwendet werden.
Memoselyk

3

Ich benutze Pandoc mit der Option --from=gfmfür GitHub Flavored Markdown wie folgt:

$ pandoc my_file.md   --from=gfm -t html -o my_file.html

Mit pandoc 1.16.0.2 unter Linux Mint 18 erhalte ich eine Fehlermeldung : pandoc: Unknown reader: gfm. Mit 2.2.1 wird dies behoben.
Kidmose

Ich habe es mit Pandoc 2.1.2 getestet.
Asme nur

Wie installiere ich 2.2.1 auf Ubuntu?
Alexander Mills

@AlexanderMills Hast du es versucht sudo apt install pandoc?
Asme Just

2

Verbesserung der Lösung von @ barry-stae. Stecke dieses Snippet in ~ / .bashrc

function mdviewer(){
  pandoc $* | lynx -stdin
}

Dann können wir die Datei schnell über die Befehlszeile anzeigen. Funktioniert auch gut über SSH / Telnet-Sitzungen.

mdviewer README.md

2

Späte Hinzufügung, aber showdownjs verfügt über ein CLI-Tool, mit dem Sie MD in HTML analysieren können.


1

Ich habe eine Website gefunden, die dies für Sie erledigt : http://tmpvar.com/markdown.html . Fügen Sie Ihren Markdown ein und es wird für Sie angezeigt. Es scheint gut zu funktionieren!

Die Syntaxhervorhebungsoption für Code scheint jedoch nicht zu funktionieren. Das heißt, die ~~~rubyFunktion funktioniert nicht. Es wird nur "Rubin" gedruckt.


tmpvar scheint keine Verbesserungen der GFM-Version wie Tabellen vorzunehmen
Greg

0

Wenn Sie die Antworten von @ barry-stae und @Sandeep für reguläre Benutzer von elinks verbessern, fügen Sie .bashrc Folgendes hinzu:

function mdviewer() {
  pandoc $* | elinks --force-html
}

Vergessen Sie nicht, pandoc (und elinks) zu installieren.


0

Basierend auf Jim Lims Antwort habe ich das GitHub Markdown-Juwel installiert. Dazu gehörte ein Skript namens gfm, das einen Dateinamen in der Befehlszeile verwendet und den entsprechenden HTML-Code in die Standardausgabe schreibt. Ich habe das leicht geändert, um die Datei auf der Festplatte zu speichern und dann den Standardbrowser mit launchy zu öffnen:

#!/usr/bin/env ruby

HELP = <<-help
  Usage: gfm [--readme | --plaintext] [<file>]
  Convert a GitHub-Flavored Markdown file to HTML and write to standard output.
  With no <file> or when <file> is '-', read Markdown source text from standard input.
  With `--readme`, the files are parsed like README.md files in GitHub.com. By default,
  the files are parsed with all the GFM extensions.
help

if ARGV.include?('--help')
  puts HELP
  exit 0
end

root = File.expand_path('../../', __FILE__)
$:.unshift File.expand_path('lib', root)

require 'github/markdown'
require 'tempfile'
require 'launchy'

mode = :gfm
mode = :markdown if ARGV.delete('--readme')
mode = :plaintext if ARGV.delete('--plaintext')

outputFilePath = File.join(Dir.tmpdir, File.basename(ARGF.path))  + ".html"

File.open(outputFilePath, "w") do |outputFile |
    outputFile.write(GitHub::Markdown.to_html(ARGF.read, mode))
end

outputFileUri = 'file:///' + outputFilePath

Launchy.open(outputFileUri)

1
Ich habe es mit eingezäunten Blöcken für Ruby und Cucumber versucht. Während die Zäune (ruby, Gurken usw.) als Zäune erkannt zu werden scheinen (weil sie in Text mit fester Breite gerendert werden), gibt es keine Syntaxhervorhebung. Irgendeine Idee warum?
Keith Bennett

0

Ein "schneller und schmutziger" Ansatz besteht darin, die Wiki-HTML-Seiten mit dem wgetDienstprogramm herunterzuladen , anstatt sie zu klonen. So habe ich beispielsweise das Hystrix-Wiki von GitHub heruntergeladen (ich verwende Ubuntu Linux):

 $ wget -e robots=off -nH -E -H -k -K -p https://github.com/Netflix/Hystrix/wiki
 $ wget -e robots=off -nH -E -H -k -K -I "Netflix/Hystrix/wiki" -r -l 1 https://github.com/Netflix/Hystrix/wiki

Beim ersten Aufruf werden die Wiki-Einstiegsseite und alle ihre Abhängigkeiten heruntergeladen. Die zweite ruft alle Unterseiten auf. Sie können jetzt das Wiki durchsuchen, indem Sie es öffnen Netflix/Hystrix/wiki.1.html.

Beachten Sie, dass beide Aufrufe wgeterforderlich sind. Wenn Sie nur die zweite ausführen, werden Sie einige Abhängigkeiten übersehen, die erforderlich sind, um die Seiten richtig anzuzeigen.


-1

Ich habe kürzlich gemacht, was Sie wollen, weil ich Dokumentation aus Markdown-Dateien generieren musste und der GitHub-Stil ziemlich gut ist. Versuch es. Es ist in Node.js geschrieben.

gfm


Ich weiß, das Modul wurde seit 9 Monaten nicht mehr geprüft. Warum stimmen Sie einen alten Beitrag ab?
Gabriel Llamas
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.