Queste direkt aus Wiki in AOQML-Editor einlesen

Queste direkt aus Wiki in AOQML-Editor einlesen

Beitragvon Lowlander » Sa 06 Jun, 2009 13:58

Moin Moin,

ich habe mal ein kleines Script geschrieben, welches ein Quest aus dem Wiki anhand der Wiki-URL in AOQML-Szenen-XML-Dateien umwandelt. Es braucht wget, bash und ein paar GNU-Tools wie sed, tr und awk. Es ist außerdem nur unter Linux getestet, aber wer sich etwas mit Batch-Jobs und solchen Tools auskennt, kann es bestimmt auch unter Windows zum Laufen bringen.

wiki2aoqml (bash-Wrapper-Script)
Code: Alles auswählen
#!/bin/bash

function printHelp() {
  echo
  echo "Syntax:   wiki2aoqml QUEST-VERZEICHNISPFAD WIKI-URL"
  echo "Beispiel: wiki2aowml quests/eliasores http://wiki.antamar-community.de/index.php?title=Der_Weg_nach_Eliasores"
  echo
}

if [ -z "$1" ]; then
  echo "FEHLER: Quest Verzeichnispfad fehlt" >&2
  printHelp
  exit 1
fi
if [ -z "$2" ]; then
  echo "ERROR: Wiki URL fehlt" >&2
  printHelp
  exit 1
fi

html=$(tempfile).html
wget -O- "$2" | tr -d '\r' | sed -e 's/<div [^>]*>/\n/g' -e 's/<[^>]*>//g' >$html

test ! -d "$1" && mkdir "$1"
cd "$1"

awk -f ~/bin/wiki2aoqml.awk <$html
echo rm $html


wiki2aoqml.awk (eigentliches awk-Script)
Code: Alles auswählen
BEGIN {
  foundScene=""
  inScene=""
}
 
{
  gsub( /&lt;/, "<" )
  gsub( /&gt;/, ">" )
  gsub( /&quot;/, "\"" )
  gsub( /^&nbsp;$/, "" )
  if ( inScene>"" ) {
    print $0 >>inScene
  }
}

/^.*\.xml$/ {
  foundScene=$0
} Der_Weg_nach_Eliasore

/<scene/ {
  if ( foundScene == "" ) {
    print "FEHLEr: '<scene...>' ohne vorausgehendes '*.xml'"
    exit 1
  }
  inScene=foundScene

  print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" >inScene
  print $0 >>inScene
}

/<\/scene/ {
  inScene=""
}


Der Aufruf
Code: Alles auswählen
~/bin/wiki2aoqml quests/eliasores http://wiki.antamar-community.de/index.php?title=Der_Weg_nach_Eliasores
erzeugt also ein Verzeichnis quests/eliasores, lädt das Quest "Der_Weg_nach_Eliasore" aus dem Wiki herunter und speichert die Szenen im Verzeichnis quests/eliasores, das man dann direkt mit dem AOQML-Editor öffnen kann.

Grüße
... Lowlander
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Queste direkt aus Wiki in AOQML-Editor einlesen

Beitragvon Lowlander » Mi 10 Jun, 2009 16:56

Und andersherum (ohne Header und Footer der Wiki-Seite):
Code: Alles auswählen
#!/bin/bash

function wrapScene() {
    sceneFile=$1
    echo ""
    echo "'''$sceneFile'''"
    echo "<code xml n>"
    cat $sceneFile
    echo "</code>"
}

wikiFile=`tempfile -s .wiki`
wikiFileNames=`tempfile -s .files`
echo "" >$wikiFile

if [ -n "$2" ]; then
  wget -O- "$2" | grep '<b>.*xml</b>' | sed 's/^.*<b>\(.*xml\)<\/b>/\1/g' >$wikiFileNames
fi

cd $1
for f in `cat $wikiFileNames`; do
    if [ -f "$f" ]; then
      echo "updating $f"
      wrapScene $f >>$wikiFile
    else
      echo "deleting $f"
    fi
done

for f in `find . -name '*.xml'`; do
    f=${f:2}
    alreadyDone=`grep "^$f\$" $wikiFileNames`
    if [ -z "$alreadyDone" ]; then
      echo "adding $f"
      wrapScene $f >>$wikiFile
    else
      echo "skipping $f"
    fi
done

gedit $wikiFile
rm $wikiFile $wikiFileNames



Aufruf z.B:
Code: Alles auswählen
vim ~/bin/aoqml2wiki quests/eliasores/ "http://wiki.antamar-community.de/index.php?title=Der_Weg_nach_Eliasores"


Dann einfach die geneierten Seite in das Wiki kopieren (dort den Header und Footer beibehalten!). Die Reihenfolge vorhandener Szenen bleibt erhalten, neue werden hinten angehängt.

Wieder nur als Muster gedacht, weil nur auf Linux getestet und Tools verwendet wurden, die selbst unter Linux evtl. nicht jeder installiert hat.
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh


Zurück zu Antamar®-Archiv



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste

cron