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

GPX Dateien laden per Macro?

Roli_29

Geocacher
Hallo Zusammen!

Ich hab da mal eine Frage: Ist es möglich mit einem Macro von ausgewählten Caches online die GPX Dateien in einen Ordner zu laden?
Ich denk da an einen Automatismus, ohne viel "Handarbeit".

Gruß Roland
 

whitesun

Geowizard
Am besten die Funktion:" File/Get data via Email" benutzen.

Diese holt die GPXe von Deinem Account ab, legt sie in ein Verzeichnis Deiner Wahl und öffnet die GPX gleich in einer Datenbank von GSAK.

Sowas in der Art?

Gruß

Armin
 
OP
Roli_29

Roli_29

Geocacher
Eigentlich dachte ich eher daran, dass ich eine Liste von Caches in GSAK schon drin habe. Diese Liste wird von mir dann per Filter sortiert und von diesen will ich dann per Macro (automatischen abarbeiten der Liste) die GPX Dateien runterladen.

Speziell möchte ich somit eine Liste von archivierten Caches mir als GPX Dateien laden. Die Caches liegen mir aus einer LOC Datei schon in einer Datenbank vor, enthalten aber nicht alle Infos, die ich gerne hätte. Die archivierten Caches sind ja in den PQ´s nicht enthalten.

Gruß Roland
 

bsterix

Geowizard
Geht nicht, gibts nicht.

Ich kenn zwar z.Z. auch keine Lösung (wäre aber auch an einer interessiert). Die frage ist nur, wieviel Aufwand man betreiben möchte, bzw. evtl.ist ein externes programm notwendig. Ein kleines Perl-script würde vermutlich schon reichen.

Einfach die Cacheliste als GPX-exportieren. Das externe programm aufrufen, dieses zieht die einzelgpxe auf die Platte. Fertig.

Ich wollte soein Macro um nicht paperless-taugliche cache automatisch einzeln runterzuladen, da das "handgespeicherte" GPX mehr infos zu den addtitional Waypoints enthält, als die PQ
 

Vater und Sohn

Geomaster
@bsterix
Glaube mir, wenn das sooo einfach wäre, dann hätte ich (oder ein anderer) es schon für GSAK geschrieben.

Du kannst der Gemeinschaft aber den Gefallen tun und eben mal ein kleine Perlscript schreiben...
 
OP
Roli_29

Roli_29

Geocacher
Wenn man das Programm "Spoiler Synch" so umbauen könnte, daß es statt den Bildern die GPX Dateien lädt, wäre es genau richtig.

Gruß Roland
 

bsterix

Geowizard
Vater und Sohn schrieb:
@bsterix
Glaube mir, wenn das sooo einfach wäre, dann hätte ich (oder ein anderer) es schon für GSAK geschrieben.

Du kannst der Gemeinschaft aber den Gefallen tun und eben mal ein kleine Perlscript schreiben...

Wenn mir mal langweilig ist, probier ichs mal. Mein Eigenbedarf war zum Glück noch nicht akut, da die meisten Cachebeschreibungen "paperlesstauglich" sind. Und mein einziger Grund sowas zu schreiben, wäre solche Caches mit "untauglichen additional Waypoints" als einzel-GPXe nachzuladen.

Sobald ich aber was am laufen habe, melde ich mich.
 

bsterix

Geowizard
Wie versprochen hab ich mich mal an die Arbeit gemacht (nach ca. 45min kam folgendes raus) (s.u.)
Da ich es aus einem meiner anderen Perlscripte zusammengestückelt habe, ist noch etwas ballast drin, der noch raus kann.

Prinzipiell funktioniert es aber!

Anwendung:

In Gsak in GPX (z.b. liste.gpx) mit den gewünschten Wegpunkten erstellen (geht per Macro)

das Script mit

perl scriptname.pl username passwort liste.gpx

starten. (Muss auch per Macro gehen, falls nicht, eben von Hand aufrufen) Nach Kurzer Zeit sollte zu jedem der Caches in der Liste ein GCxxxx.gpx File im aktuellen Verzeichnis stehen (welches dann im Gegensatz zu den PQ-Query-Files auch alle Additional Wayponts in der long-description enthalten solte).

Außer GSAK ist natürlich noch ein Perl-interpreter (z.B. ActiveState-Perl und das Perlmodul WWW::Mechanize notwendig).



Code:
#!perl -w
$| = 1; #flush ???
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();

my @values;
my %option;

open GPXIN, "<$ARGV[2]" or die "kann $ARGV[2] nicht oeffnen";
open LOG, ">gpxgetter.log" or die "kann logfile nicht oeffnen";

my $user = $ARGV[0];
my $passwd=$ARGV[1];


my $id;
my $end;

$id="";

print "GPX-getter fuer $user ($passwd)\n";
$mech->get( 'http://www.geocaching.com/login/' );
  

#print $mech->content;
die $mech->res->status_line unless $mech->success();
print "-----------Startseite-------------------\n";

#print $mech->content;
print "--------------Log-In--------------------\n";

$mech->set_visible( $user, $passwd ) ;
$mech->click_button(number => 1);

#print $mech->content;
if($mech->content =~ /password combination does not match/m)
  {
    print "Falscher user/passwort\n";
    die "Falscher user/passwort\n";
  }

if($mech->content =~ /Welcome,/m ||
   $mech->content =~ /You are logged in as/m)
  {
    #    print $mech->content;
    print "-------------Eingeloggt-----------------\n";
  }
else
  {
    print LOG $mech->content;
    print LOG "unerwartetes Ergebis\n";
    die "?? Abruch wg. unerwarteter Antwort. Siehe logfile!\n";
  }

while(<GPXIN>)
{
  $name=$1 if(/<name>(.*)<\/name>/);
  $desc=$1 if(/<desc>(.*)<\/desc>/);
  $id=$1 if(/<groundspeak:cache id=\"([0-9]*)\"/);

  if(/<groundspeak:container>(.*)<\/groundspeak:container>/)
  {
    $size=$1;
    $cachedesc{$name}="$desc";
    $cachesize{$name}="$size";
    $cacheid{$name}=$id;
    print "$name $cachesize{$name} $cachedesc{$name}\n";
    
    $mech->get( "http://www.geocaching.com/seek/cache_details.aspx?id=$id");
    
    if($mech->content =~ /Click icon to download/m)
  {
    #    print $mech->content;
    print "-------------Cache-Seite geladen-----------------\n";
    
    $mech->click_button(name => "btnGPXDL");
    print "gpx geladen??\n";
    open GPXOUT, ">$name.gpx";	
    print GPXOUT $mech->content;
    close GPXOUT;
  }
else
  {
    print LOG $mech->content;
    print LOG "unerwartetes Ergebis\n";
    die "?? Abruch wg. unerwarteter Antwort. Siehe logfile!\n";
  }
  }
}
 

Carsten

Geowizard
bsterix schrieb:
(Code für ein praktisches Skript gesnippt)

WWW-Mechanize hab ich mir per ppm installiert. Funktionieren tut es leider trotzdem nicht. Hast du oder jemand anders einen Tipp?

Code:
Name "main::cacheid" used only once: possible typo at get_gpx.pl line 66.
GPX-getter fuer xxxxxxxx
-----------Startseite-------------------
--------------Log-In--------------------
Can't locate object method "click_button" via package "WWW::Mechanize" at get_gp
x.pl line 33.
 

Vater und Sohn

Geomaster
schild_respekt.gif



:oops:
 

bsterix

Geowizard
Carsten schrieb:
bsterix schrieb:
(Code für ein praktisches Skript gesnippt)

WWW-Mechanize hab ich mir per ppm installiert. Funktionieren tut es leider trotzdem nicht. Hast du oder jemand anders einen Tipp?

Code:
Name "main::cacheid" used only once: possible typo at get_gpx.pl line 66.
GPX-getter fuer xxxxxxxx
-----------Startseite-------------------
--------------Log-In--------------------
Can't locate object method "click_button" via package "WWW::Mechanize" at get_gp
x.pl line 33.

Evtl. hast du eine zu alte (oder falsche?) Version von Mechanize installiert. In der Doku
http://search.cpan.org/~petdance/WWW-Mechanize-1.20/lib/WWW/Mechanize.pm#$mech->title() ist "$mech->click_button( ... )" zumindest noch beschrieben.

Evtl. hab ich aber in meinem Perl irgendein Modul mal installiert, welcher von Mechanize benutzt wird (da müsstest du aber mal in der mechanize Doku nachlesen)

@Vater&Sohn: Hats bei dir/euch funktioniert?
 

bsterix

Geowizard
Ich hab bei mir (laut ppm) folgende Module installiert:
Code:
   1. ActivePerl-DocTools     [0.04] Perl extension for Documentation TOC Gene~
   2. ActiveState-Relocat~    [0.03] Relocate a Perl installation
   3. ActiveState-Rx          [0.60] Regular Expression Debugger
   4. Archive-Tar             [1.07] Manipulates TAR archives
   5. Class-Accessor          [0.27] Automated accessor generation
   6. Compress-Zlib           [1.22] Interface to zlib compression library
   7. Data-Dump               [1.01] Pretty printing of data structures
   8. Digest-HMAC             [1.01] Keyed-Hashing for Message Authentication
   9. Digest-MD2              [2.03] Perl interface to the MD2 Algorithm
  10. Digest-MD4               [1.1] Perl interface to the MD4 Algorithm
  11. Digest-Perl-MD5          [1.8] Perl Implementation of Rivest's MD5 algor~
  12. Digest-SHA1             [2.06] Perl interface to the SHA-1 Algorithm
  13. Email-Address          [1.871] RFC 2822 Address Parsing
  14. Email-MessageID         [1.35] Generate world unique message-ids
  15. Email-MIME               [1.8] Easy MIME message parsing.
  16. Email-MIME-ContentT~   [1.011] Parse a MIME Content-Type Header
  17. Email-MIME-Encodings     [1.1] A unified interface to MIME encoding and ~
  18. Email-MIME-Modifier    [1.440] Modify Email::MIME Objects Easily
  19. Email-Simple           [1.995] Simple parsing of RFC2822 message format ~
  20. File-CounterFile        [1.01] Persistent counter class
  21. Font-AFM                [1.18] Interface to Adobe Font Metrics files
  22. GD                      [2.28] Interface to Gd Graphics Library
  23. HTML-Parser             [3.34] HTML parser class
  24. HTML-Tagset             [3.03] Data tables useful in parsing HTML
  25. HTML-Tree               [3.18] build and scan parse-trees of HTML
  26. HTTP-Proxy              [0.20] A pure Perl HTTP proxy
  27. HTTP-Recorder           [0.05] record interaction with websites
  28. HTTP-Request-Params     [1.01] Retrieve GET/POST Parameters from HTTP Re~
  29. IO-Zlib                 [1.01] IO:: style interface to Compress::Zlib
  30. libwin32                [0.21] A collection of extensions that aims to p~
  31. libwww-perl             [5.75] Library for WWW access in Perl
  32. MD5                     [2.02] Perl interface to the MD5 Algorithm (obso~
  33. MIME-Types              [1.17] Definition of MIME types
  34. PadWalker                [1.0] play with other peoples' lexical variables
  35. PPM3                     [3.1] Perl Package Manager: locate, install, up~
  36. SOAP-Lite               [0.55] Library for Simple Object Access Protocol~
  37. Tk                   [800.024] A Graphical User Interface Toolkit
  38. URI                     [1.27] Uniform Resource Identifiers (absolute an~
  39. Win32-AuthenticateU~    [0.02] Win32 User authentication for domains
  40. WWW-Mechanize           [1.20] Handy web browsing in a Perl object
  41. XML-Parser              [2.34] A Perl module for parsing XML documents
  42. XML-Simple              [2.09] Easy API to read/write XML (esp config fi~

Welche nun für das Script unbedingt nötig sind, kann ich auch nicht sagen, aber ausser "#40" und "#27 (+das was dazu installiert wird" hab ich für meine GC-Perlprojekte nicht nachinstalliert.


Falls ihr das teil in größerem Unfang verwendet, sollte man evtl. in die "GPX-Holschleife" noch ein kleines "sleep" reinsetzten, das GC nicht unter der Last zusammenbricht :oops:
 
OP
Roli_29

Roli_29

Geocacher
Okay! Ich gebe zu: ich bin doof und habe mich noch nie mit Skripts beschäftigt.

Kann mir jemand mal Schritt für Schritt erklären, was ich instalieren muss (am besten mit Links) um das Skript, wie zum laufen zu bekommen?

Ich kann es gar nicht abwarten es zu testen!

Gruß Roland
 

bsterix

Geowizard
Roli_29 schrieb:
Okay! Ich gebe zu: ich bin doof und habe mich noch nie mit Skripts beschäftigt.

Kann mir jemand mal Schritt für Schritt erklären, was ich instalieren muss (am besten mit Links) um das Skript, wie zum laufen zu bekommen?

Ich kann es gar nicht abwarten es zu testen!

Gruß Roland
Das ActivePerl gibts hier:

http://www.activestate.com/Products/ActivePerl/

nachdem es installiert ist, sollte man in der "Dos-Box" ppm starten können.

im ppm gibts mit h (oder help o.ä.) eine kurze Hilfe

Auswendig weis ichs gerade nicht, aber irgendwie kann man mit

s bzw. search nach modulen suchen, d.h. im ppm

s mechanize [return]

eingeben, sollte eine liste aller mechanize versionen liefern. Die haben dann auch laufende Nummern. Such eine version mit Versionsnummer >= 1.20

i laufendenummer

sollte das Paket installieren.

mit quit oder exit den ppm verlassen, und mal das Script (welches du in eine Textdatei namens (z.B.) meinscript.pl speichern solltest) aus der Dos-Box aufrufen

perl meinscript.pl deinbenutzername deinpasswort deingpxfile.gpx

wenns noch nicht klappt, schreib einfach mal wie weit du gekommen bist.

mit
 

bsterix

Geowizard
Freut mich, dass es bei einigen schon klappt. Hätte nicht gedacht, dass die Nachfrage so groß ist. Ich hoffe ja, dass es beim Threadstarter demnächst auch klappt.
 
OP
Roli_29

Roli_29

Geocacher
HURRA!

Nachdem ich den Kampf mit Perl gewonnen habe, hat es geklappt!!!!!

Danke! Super Sache!

Nun habe ich noch eine Frage: um nicht eine Sperrung von Geocaching.com zu riskieren, wie kann ich das ganze "verlangsamen"? Wo muss das Sleep in das Skript? Kann man da einen Zeitfaktor miteinbauen?

Gruß Roland
 
Oben