Switch to full style
Thema gesperrt

Queste direkt aus Wiki in AOQML-Editor einlesen

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:
#!/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:
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:
~/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

Re: Queste direkt aus Wiki in AOQML-Editor einlesen

Mi 10 Jun, 2009 16:56

Und andersherum (ohne Header und Footer der Wiki-Seite):
Code:
#!/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:
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.
Thema gesperrt