Field Notes (Fortsetzung)

Hier geht es um die Programmierung von Opencaching.de - User mit Erfahrungen im Bereich PHP, MySQL, HTML, JavaScript, CSS werden hier ständig gesucht
Antworten
Benutzeravatar
mic@
Vereinsmitglied
Vereinsmitglied
Beiträge: 6623
Registriert: 04.12.2009, 00:31

Auf Wunsch von Thomas wird der alte Thread
https://forum.opencaching.de/http://loc ... ic.php?t=0
hier im Entwicklerforum fortgeführt.
Da ich leider keine passenden Mod-Rechte habe, wiederhole
ich mal das letzte Posting (s.u.) und hoffe, daß die Ursache
des Problems nun endlich gefunden wird, damit ich die email
Anfrage des Users beenden kann:

---------------------------------------------------------------------------------------------------------
Mir scheint, der Algorithmus lässt sich von einem anderen Zeichensatz auf die Bretter legen.

Die Datei fieldnotes_good.txt (kurz A) lässt sich laden.
Die Datei fieldnotes_mica.txt (kurz B) meldet zwei Fehler.
Beide Dateien haben aber den gleichen Inhalt.

Wenn man aber ein Differenztool (z.B. WinMerge) drüber laufen lässt,
dann ist A in iso-10646-ucs-2 BOM kodiert und damit lesbar,
dagegen ist B in windows-1252 kodiert (nicht lesbar).

Ich habe mir erlaubt, für diesen Bug ein Ticket aufzumachen:
https://opencaching.atlassian.net/browse/RED-1252
---------------------------------------------------------------------------------------------------------
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von mic@ am 27.06.2020, 10:27, insgesamt 1-mal geändert.
Benutzeravatar
ClanFamily (Mirco)
Administrator
Administrator
Beiträge: 1409
Registriert: 03.09.2012, 21:55

hey Mica, danke für die Analyse.

Ich frage mich gerade wie es zu dem Windows Charset kommt?
Hast Du die Datei irgendwie bearbeitet? Sowas kann zu einem entsprechenden Fehler führen.
Wenn ich meine Garmin Datei direkt hochlade ist es kein Problem.
Mit feudalen Grüßen,
Mirco aka Clanfamily
- Vorstand -

MeetMe | OC YouTube | OC Talk
Benutzeravatar
mic@
Vereinsmitglied
Vereinsmitglied
Beiträge: 6623
Registriert: 04.12.2009, 00:31

[quote="ClanFamily (Mirco)"]Ich frage mich gerade wie es zu dem Windows Charset kommt?
Hast Du die Datei irgendwie bearbeitet?[/quote]

Nein, ich habe sie 1:1 so vom User bekommen.
Er schrieb in seiner email dazu noch folgendes:

# Meine originalen bzw. bearbeiteten Fieldnotes hast Du hoffentlich auch noch zur Verfügung - sie
# stammen von meinem Android-Handy entweder direkt aus c:geo oder mit Texteditor  bearbeitet.
# Falls Du bzw. der Entwickler noch Unterstützung benötigt, gib Bescheid.
Benutzeravatar
teiling88
Vereinsmitglied
Vereinsmitglied
Beiträge: 694
Registriert: 06.12.2015, 14:15

Ist gefixed und funktioniert nun online.
Benutzeravatar
mic@
Vereinsmitglied
Vereinsmitglied
Beiträge: 6623
Registriert: 04.12.2009, 00:31

[quote="teiling88"]Ist gefixed und funktioniert nun online.[/quote]

Also ich erlebe den Fehler immer noch.
Wenn ich die im Thread angegebene Datei "fieldnotes_mica.txt" hochlade, dann kommt:

# Die hochgeladene Datei ist keine Field Notes Datei.
# Ein unbekannter Fehler ist aufgetreten!
icho40
Beiträge: 1
Registriert: 30.09.2018, 15:43

Ich bekomme beim Hochladen von Locus Fieldnotes dieselbe Meldung

# Die hochgeladene Datei ist keine Field Notes Datei.
# Ein unbekannter Fehler ist aufgetreten!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
hxdimpf
Nano
Nano
Beiträge: 16
Registriert: 14.12.2020, 12:11

fieldnotes, die von cgeo erstellt werden, koennen nicht prozessiert werden. cgeo erzeugt zugegebener massen ein "strange" format"

Code: Alles auswählen

00000000: 4700 4300 3200 5400 4d00 4a00 3200 2c00  G.C.2.T.M.J.2.,.
Waere es meoglichm, den parser so zu anzupassen, dass er dieses Format ebenfalls akzeptiert. Es ist ein unuebliches UTF-16 Format.

Vielleicht ist folgendes jetzt echt ne dumme Frage, ich stelle sie trotzdem, weil ich bisher noch nicht viel mit OC gearbeitet habe: Was passiert, wenn ich ein fieldnotes file hoch lade, wird das sofort online gelogged oder habe ich irgendwo die Moeglichkeit, die Logtexte noch zu editieren? In GC.com nennen die das "draft" logs und man kann die Texte noch editieren, bevor man sie "abschiesst". Ich kann das gerade leider nicht ausprobieren, da ich kein fieldnotes file zur Hand habe, das akzeptiert wird.
hxdimpf
Nano
Nano
Beiträge: 16
Registriert: 14.12.2020, 12:11

Der Screenshot ist natuerlich irritierend, weil ein GC-Code gezeigt wird. Es tut jedoch auch nicht wenn in den fieldnotes ausschliesslich OC-codes drin sind.

Ich wuerde den Parser uebrigens so bauen, dass wenn ein fieldnotes file kommt in dem sowohl OC als auch GC codes drin sind, die GC logs einfach ignoriert werden. So koennte ich ein und dasselbe fieldnotes file einfach in beide Plattformen importieren. geocaching.com kann ein derartiges file mit beiderlei codes handhaben, indem es die OC einfach ignoriert.

Anbei, falls jemand von den Entwicklern den Parser aendern moechte, hier ist der code wie ich die fieldnotes behandle. Ich gehe davon aus das fieldnotes aus folgenden Quellen kommen koennen:

cgeo
Garmin
Locus Map
Looking4Cace (uninteressant fuer OC)

Schlussendlich konvertiere ich allesin utf-8 encoding. Ich mache das bereits im Browser, damit der upload zum server mit utf-8 erfolgen kann:

Code: Alles auswählen

async function process(file, name, index) {
  let v;
  try {
    v = await readFileAsync(file); // returns a UInt8Array
  } catch(err) {
    addLine(`${shortName} : read() failed`);
    return;
  }
  const t16le = new TextDecoder("utf-16le");
  const t16be = new TextDecoder("utf-16be");
  const t8    = new TextDecoder();

  let fileContent;

  if (v[0] === 0xEF && v[1] === 0xBB && v[2] === 0xBF) {
    console.log("processing UTF-8 file (with BOM!)");
    fileContent = t8.decode(v);
  } else if (v[0] === 0xFE && v[1] === 0xFF) {
    console.log("processing UTF-16BE file");
    fileContent = t16be.decode(v);
  } else if (v[0] === 0xFF && v[1] === 0xFE) {
    console.log("processing UTF-16LE file");
    fileContent = t16le.decode(v);
  } else if(v[1] === 0x00) {// this is a strange case as we should find a 0xFE here but this case exists!
    console.log("processing UTF-16LE file");
    fileContent = t16le.decode(v);
  } else {
    console.log("processing UTF-8 file");
    fileContent = t8.decode(v);
  }
  const options = {
    method  : 'POST',
    headers : {'Content-Type' : 'application/json'},
    body    : JSON.stringify({
      filename   : name,
      fieldnotes : fileContent
    })
  }
  let result = await fetch('{{base_path}}/fieldnotes', options})
  
Tungmar
Nano
Nano
Beiträge: 32
Registriert: 04.07.2013, 01:21

Hallo hxdimpf

Vielen Dank für deinen Input und Testdaten (hier und im Chat). Das hat da schon mal gut weiter geholfen beim verbessern des Imports für Fieldnots! Neben der Kodierung scheint es noch anderes zu geben was angepasst werden muss, da bin ich noch dran.

Der Import funktioniert so das er eine Fehlermeldung ausgibt für Wegpunkte die nicht bekannt sind. Dabei werden neben den OC Wegpunkten auch GC Wegpunkte berücksichtigt wen die Caches auch als OC veröffentlicht sind und den entsprechenden GC Wegpunkt hinterlegt haben.

Nach dem Hochladen der Fieldnotes Datei kriegt man eine Liste mit den entsprechenden Einträgen und kann dann von da aus die Caches logen. Es wird kein Log automatisch gemacht.
Antworten