• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Vorstellung: Greasemonkey Skripte - GCTour und GcBBCode

t31

Geowizard
Also bei mir klappt es mit dem GPX-File, sowohl GPSmapEdit als auch Mapsource laden die Datei anstandlos. Eventuell sind Sonderzeichen bei, dann scheitert es. (Am besten auch mal die GC-Nummern mit angeben, wenn es klemmt.)

Beliebt ist das & und das kommt auch bei Unicode vor (Ӓ), diese und andere störende Zeichen müssen raus, einiges wirft die letzte elseif-Anweisung raus, aber nicht alles.

Suche mal nach:
Code:
	var str = new XMLSerializer().serializeToString(gpxDom);
	var length = str.length;
	// replace all char that greater than ascii! e.g. ä,ö,ž,ý
	var i = 0
	for(  ; i<length;i++){
		if( str.charAt(i) == "ä"){
			str = str.substr(0,i) + 'ae' + str.substr(i+1);
			length += 1;
		}else if( str.charAt(i) == "ö"){
			str = str.substr(0,i) + 'oe' + str.substr(i+1);
			length += 1;
		}else if( str.charAt(i) == "ü"){
			str = str.substr(0,i) + 'ue' + str.substr(i+1);
			length += 1;
		}else if( str.charAt(i) == "ß"){
			str = str.substr(0,i) + 'ss' + str.substr(i+1);
			length += 1;
		}else if( str.charAt(i) >= "}"){
			str = str.substr(0,i) + ' ' + str.substr(i+1);
		}
	}
	return (str);

und schreibe vor for ...
Code:
str = str.replace(new RegExp("´","g"),"'");
str = str.replace(new RegExp("`","g"),"'");
str = str.replace(new RegExp("&#[0-9]{1,4};","g"),'?');
str = str.replace(new RegExp("&","g")," und ");
str = str.replace(new RegExp("  ","g")," ");
 
OP
M

madd.in

Geocacher
Also wenn der Regex geht, dann werde ich in bald in die aktuelle Version einfügen und dann veröffentlichen .... :)

Grüße, Maddin
 

t31

Geowizard
ich sehe gerade, das auch die großen ÄÖÜ ersetzt werden müssten.

Beispiel für Unicode-Sonderzeichen wären:
http://www.geocaching.com/seek/cache_details.aspx?wp=GC1E78P
Eurozeichen €

http://www.geocaching.com/seek/cache_details.aspx?wp=GC1JCAM
das Kreuz †

Weil das & selbst auch zum Fehler führt, muß man erst die Sonderzeichen irgendwie ersetzen - hier mit ? - und erst dann das & - hier mit und, + wäre auch möglich.
Die falschen Apostrophen werden oben durch das ' ersetzt
Die letzte Zeile wirft doppelte Leerzeichen raus. das könnte man eleganter mit:
Code:
str = str.replace(new RegExp("[\s]{2,}","g")," ");
machen (muß mich auch erst an die regex gewöhnen).


//edit: ich sehe gerade das das & als & vorkommt:
für
Code:
str = str.replace(new RegExp("&","g")," und ");
nun
Code:
str = str.replace(new RegExp("(\&amp\;)|&","g")," und ");
oder
Code:
str = str.replace(new RegExp("(\&amp\;)|&","g"),"+");
 

friederix

Geoguru
t31 schrieb:
Also bei mir klappt es mit dem GPX-File, sowohl GPSmapEdit als auch Mapsource laden die Datei anstandlos. Eventuell sind Sonderzeichen bei, dann scheitert es. (Am besten auch mal die GC-Nummern mit angeben, wenn es klemmt.)

Beliebt ist das & und das kommt auch bei Unicode vor (Ӓ), diese und andere störende Zeichen müssen raus, einiges wirft die letzte elseif-Anweisung raus, aber nicht alles.

Suche mal nach: ....

Tut mir leid, da bin ich leider hoffnungslos überfordert. Meine Programmier-Kenntnisse tendieren eher gegen Null.
Hatte nur meine Probleme bei der Anwendung geschildert, allerdings das GPX unter Mapsource noch nicht probiert.
Das Addon ist ja auch vorzugsweise für Nicht-PMs gedacht. Deswegen sehe ich Moment für mich noch keinen dringenden Handlungsbedarf. Mit PQ und GSAK war bisher alles gut zu realisieren.
Dachte nur, dass es evtl. von Interesse sein könnte, dass das GPX nicht immer und bei jedem auf Anhieb funktioniert.

Trotzdem große Anerkennung an den Entwickler, der da bestimmt ne Menge Arbeit herein gesteckt hat, und diese dann auch selbstlos der Allgemeinheit zur Verfügung stellt. :respekt:

Für meine Dummheit kann ja keiner was. ;)

Aber danke für das Hilfe-Angebot!

Gruß,
friederix
 

Einnorder

Geocacher
Ich habe noch eine Anmerkung/Anfrage zu GCTour:
Ich cache mit dem GPSTuner. Der GPX Import klappt auch problemlos. Jetzt wäre es schön, dass der GPSTuner auch die passenden Icons zu den Caches nimmt. Die Icons müssen den gleichen Namen haben wie die Waypointtypen. Nun enthalten die GCTour-Waypointtypen leider alle das "|". Dies lässt Windows in den Iconnamen nicht zu. Könnte man da nicht stattdessen ein "-" nehmen?
 

holy grail

Geocacher
Geniale Sache, darauf habe ich schon immer gewartet.

Gibt es vielleicht eine Möglichkeit, dass gpx File direkt über das Internet aufs Iphone downzuloaden? Ich habe auf dem Iphone das Igeocacher Tool installiert und dort kann man nur über eine Inet-Adresse das GPX runterladen. Ich könnte natürlich den Umweg gehen "GPX downloaden -> auf eigenen Webserver uploaden -> mit Iphone das GPX wieder downloaden" aber das ist zu umständlich.

Gruß
Robert
 
OP
M

madd.in

Geocacher
Hallo Robert,

also mir fällt spontan nichts ein, wie man das geschickt lösen kann, ohne die GPX immer auf meinem Server zu speichern (immoment wird nur einen Anfrage gestellt, die die GPX zum Download zur verfügen stellt) - das könnte man aber machen, in so fern, dass die Datei dann einen Tag per URL zu erreichbar ist.
Alternativ setz die einfach nen lighttpd auf deinem Rechner auf und speicher die GPX einfach dort - dann kannste mit deinem IPhone auf http://rechnerIp/CacheTour.gpx die GPX laden.
Außerdem: Kann man sein IPhone nicht auch mit Kabel beladen??

Gruß
maddin
 

holy grail

Geocacher
Hi Maddin,

genau dass ist das Problem. Ich brauche eine Wifi Verbindung, ansonsten bekommt man auf die Kiste nix drauf. Man könnte es natürlich hacken, um auf das Filesystem zugreifen zu können, aber da dieses Igeocacher Tool das nicht unterstützt, besteht diese Möglichkeit leider nicht. Ich kann nur über Inet das GPX laden bzw. wird das gpx gelesen und in eine Datenbank geschrieben. Das ist ein riesiger Nachteil von dem Iphone. Man hätte einfach einen Bereich für eigene Files freigeben sollen, damit wären einige Probleme sofort gelöst.

Gruß
Robert
 

Surrogard

Geonewbie
t31 schrieb:
Weil das & selbst auch zum Fehler führt, muß man erst die Sonderzeichen irgendwie ersetzen - hier mit ? - und erst dann das & - hier mit und, + wäre auch möglich.

//edit: ich sehe gerade das das & als & vorkommt:
für
Code:
str = str.replace(new RegExp("&","g")," und ");
nun
Code:
str = str.replace(new RegExp("(\&amp\;)|&","g")," und ");
oder
Code:
str = str.replace(new RegExp("(\&amp\;)|&","g"),"+");

Vorsicht mit dem "&", das zu ersetzen zerstört auch alle bisherigen HTML-Entities die bereits in der richtigen Form ("&***;") sind.
Das einzige was ich mir hier vorstellen könnte wäre ein Regex der alle "&" ersetzt die nicht bereits Entity sind.
Aber auch nach längerem rumprobieren hab ich den nicht hinbekommen...

EDIT: "&" und Konsorten sind übrigens erlaubt und werden auch von den meisten Programmen (die sich an die XML-Konventionen halten) vernünftig eingelesen und dargestellt. Schwierig sind nur die "&" die nicht zu einer Entity gehören. Unter PHP gibts ne Methode die das Umschreiben bewerkstelligt, unter JavaScript hab ich noch nichts dergleichen gefunden...

EDIT2: Vorsicht ist auch bei der "Leerzeichenrauswurfzeile" geboten, denn das "\s" findet nicht nur Leerzeichen sondern alle sogenannten "White space character" welche da wären: das Leerzeichen, den Seitenvorschub, den Zeilenvorschub, Wagenrücklauf, und vertikalen und Horizontalen Tab.
 

t31

Geowizard
Nee, alle & egal wie führen zum Fehler wenn das gpx-File in Mapsource geladen werden soll und nicht nur MS hat damit Probleme, also auch & oder
deshalb müssen diese raus. Man könnte jetzt eine Liste machen oder eben so wie oben einfach alles mit einem Zeichen ersetzen.
Derweil hat sich gezeigt, wenn UTF8 verwendet wird, können Sonderzeichen wie äöü€ drin bleiben. Aber die & müssen noch immer raus, dies betrifft dann auch die <> im Text die reserviert sind (xml-Struktur) und daher als < oder < und > oder > codiert würden, auch hier wäre wieder das störende & drin. Darum mein Vorschlag alle & und & (2 bis 7 Buchstaben) ; sowie alle &# ( 1 bis 4 Zahlen) ; wie auch schlußendlich das einzelne & ersetzen.
 
OP
M

madd.in

Geocacher
Hallo an alle,

ihr habt beide Recht - leider kann Mapsource mit &'s gar nicht umgehen und lädt die GPX nicht, wenn auch nur eins drin ist.
Anders sieht es aber bei GSAK aus . GSAK meckert zwar, wenn &'s an der falschen Stelle sind (bspw. "Owner & Owner2"), läd aber die Datei, wenn man diese entfernt hat.

Jetzt haben wir ein Problem: entweder ich ersetzt ALLE &'s was aber bedeuten würde, dass GSAK die Beschreibung nicht mehr in HTML anzeigen kann, oder ich ersetzt nur die falschen &'s dann streikt aber Mapsource.

Ich könnte mir einen Option in den Einstellungen vorstellen ( "Mapsource kompatible GPX" ) womit man das umstellen kann. Irgendwelche Einwände/Meinung, wenn nicht bastel ich das Ganze dieses Wochenende noch ....

Gruß,
madd.in
 

ZWILLIS

Geonewbie
Hi,
ersteinmal Respect für die sehr gute Arbeit :p :gott: :gott: :p
Ich komme mit der Lösung von t31 ( :p :p ) bisher in GSAK und in Mapsource klar.
Umlaute fehlen halt und andere Sachen sind ersetzt (& = +).

GSAK nimmt allerdings Stationen als Waypoints.

// replace all char that greater than ascii! e.g. ä,ö,ž,ý
var i = 0

// einfgefügt
str = str.replace(new RegExp("´","g"),"'");
str = str.replace(new RegExp("`","g"),"'");
str = str.replace(new RegExp("&#[0-9]{1,4};","g"),'?');
str = str.replace(new RegExp("&","g")," und ");
str = str.replace(new RegExp("(\&amp\;)|&","g"),"+");
// einfgefügt

for( ; i<length;i++){

Mit den GPX mit denen ich es bisher getestet habe hat es funktioniert. Mag sein, dass da noch nicht alle Möglichkeiten vorkamen

Nochmal besten Dank für euren Top Job

Zwillis
 

Einnorder

Geocacher
Kann mir jemand sagen, wie ich bei GCTour aus dem GPX-File das "|" Zeichen bei den Waypoints rausbekomme (Beispiel: Geocache|Unknown Cache)? Ich habe den Code bereits durchforstet, bin aber kein Java Crack und nicht fündig geworden :hilfe:
Es gibt natürlich den Weg via Suchen/Ersetzen mit dem Notepad, das ist aber nicht so richtig bequem. Wenn ich wüsste wo ich suchen müsste, würde ich mir das Script selbst modifizieren. Hat keiner einen Tipp für mich?
 

t31

Geowizard
Siehe oben, es ist selbige Stelle und du muß nur eine weitere Zeile anfügen.

str = str.replace(new RegExp("\|","g")," ");

ob "\|" oder "|" mußt du mal testen
"g" bleibt immer so und heißt nur wiederholtes (fortwährendes) Ersetzen bis zum Schluß
" " dein neues Zeichen (hier als Beispiel ein Leerzeichen), es könnte auch eine Zeichenfolge rein abcd, man darf nur keine > < & als Zeichen verwenden und bei , ; " muß man mit \ maskieren, also \, \; bzw. \"
 

Einnorder

Geocacher
@t31: vielen Dank für den Tipp! Da wäre ich wohl selbst nicht draufgekommen.
EinNorder
Edit: Habe jetzt fast 3h mit verschiedenen Varianten rumprobiert. Das "|" ist echt hartnäckig. Entweder es wurde nicht ersetzt oder der ganze Text wurde überbügelt. :kopfwand:
 

t31

Geowizard
Uff, tut mir leid, ich hatte gestern keine Zeit zum testen.

Hast du eine Lösung mit .replace gefunden?

Ich bisher nicht. :eek:ps: ... jedoch klappt folgendes:
Code:
var length = str.length;
for(var i=0;i<length;i++){
	if( str.charAt(i) == "|"){
		str = str.substr(0,i) + ' ' + str.substr(i+1);
	}
}

Dieser Code ist jedoch langsamer, wenn ich mehr Zeit finde, werde ich mir das nochmal ansehen, weil interessieren tuts mich auch.
 

Einnorder

Geocacher
Super!!! Hat gleich auf's erste mal geklappt! Vielen, vielen Dank! Ich hatte mich gestern im Internet durch die Regexp und Javaseitengewühlt, habe aber zum | nichts gefunden. Erschwerend kommt noch dazu, dass man bei Google irgendwie auch nicht nach dem Zeichen suchen kann.
Nochmals Danke! Mit GCTour macht die Cachevorbereitung richtig Spass, kein Tippen mit dem PDA Stift mehr!
EinNorder
 

Einnorder

Geocacher
Ein Hinweis vielleicht noch bezügl. GcBBCode:
Wenn man sich ein Template gemacht hat und das Log nach dem Speichern erneut editiert, wird das Template nochmals eingefügt.
Ist kein echtes Problem, ist ja schnell wieder gelöscht.
Vielen Dank für das Tool, auch das Loggen macht jetzt mehr Spass. Die AltGr-Taste darf ruhig einstauben... :roll:
EinNorder
 
Oben