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

Python-Skript für Cachebeschreibungen von GC.com

Lars-Linden

Geonewbie
Hi,

als nicht Premium Mitglied bei GC.com bekommt man, wie jeder festgestellt hat leider keine Beschreibungen, wenn man sich ein GPX-File auf's Navi schickt. Dieser Umstand hat mich dazu verleitet ein kleines Skript zu schreiben. Die Idee besteht darin, den Inhalt direkt von der Website zu extrahieren und in ein entsprechendes GPX-File zu schreiben.

Den ersten Teil des Skriptes habe ich bereits fertiggestellt, in ihm gebe ich derzeit noch die zu extrahierenden Werte in Form von Variablen vor. Hinterher möchte ich gerne ein Textfile erzeugen, in dem sich die URL der verschiedenen Caches befinden. Das Skript ruft dann jede einzelne Seite auf und holt sich aus dem Quelltext die benötigten Informationen. Dies geschieht bei mir derzeit noch mit einem Hilfsskript. Vielleicht hat ja jemand Lust mitzumachen!?

Code:
#!/usr/bin/env python

import sys
import urllib
sys.path.append(".")
import urllister

authorname = 'Wegi79' #auslesen
ownerid = '1047058'   #auslesen
placedby = 'karl und thea'
lateral = '51.212217'    #auslesen
longitudinal = '7.116783'#auslesen
MinLateral = lateral            #evtl. auslesen
MaxLateral = lateral            #evtl. auslesen
MinLongitudinal = longitudinal  #evtl. auslesen
MaxLongitudinal = longitudinal  #evtl. auslesen
cachenumber = 'GC15E7V'
description_h1 = 'Durchbruch by windagei & Wegi79 , Traditional Cache (2.5/3.5)'
cache_url = 'http://www.geocaching.com/seek/cache_details.aspx?guid=fa2d6a3f-d0d6-4426-a66f-c4c705f61d54'
cachename = 'Durchbruch'
cachetyp = 'Traditional Cache'
cacheid = '675053'
cachesize = 'Regular'
difficulty = '2.5'
terrain = '3.5'
country = 'Germany'
state = 'Nordrhein-Westfalen'
shortdesc = 'Lalelu dat isn test'
longdesc = 'Das ist eine lange Beschreibung ;-)'
encodedhints = 'Mein Tip encodiert hier ...'



gpxfile = open('gpxname.gpx', 'w')
# GPX body
gpxfile.write('<?xml version="1.0" encoding="utf-8"?>\n')
gpxfile.write('<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0" creator="Groundspeak, Inc. All Rights Reserved. http://www.groundspeak.com" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.groundspeak.com/cache/1/0 http://www.groundspeak.com/cache/1/0/cache.xsd" xmlns="http://www.topografix.com/GPX/1/0">\n')
gpxfile.write('  <name>Cache Listing Generated from Geocaching.com</name>\n')
gpxfile.write('  <desc>This is an individual cache generated from Geocaching.com</desc>\n')
gpxfile.write('  <author>Account "'+ authorname +'" From Geocaching.com</author>\n')
gpxfile.write('  <email>[email protected]</email>\n')
gpxfile.write('  <url>http://www.geocaching.com</url>\n')
gpxfile.write('  <urlname>Geocaching - High Tech Treasure Hunting</urlname>\n')
gpxfile.write('  <time>2011-08-16T14:33:43.4703703Z</time>\n') # hier noch das richtige Zeitformat auslesen ...
gpxfile.write('  <keywords>cache, geocache</keywords>\n') # hier noch die keywoerter auslesen ...
gpxfile.write('  <bounds minlat="' + MinLateral + '" minlon="' + MinLongitudinal + '" maxlat="'+ MaxLateral + '" maxlon="' + MaxLongitudinal + '" />\n')
gpxfile.write('  <wpt lat="' + lateral + '" lon="' + longitudinal + '">\n')
gpxfile.write('    <time>2007-08-26T07:00:00Z</time>\n') # hier noch das richtige Zeitformat der Veroeffentlichung auslesen ...
gpxfile.write('    <name>' + cachenumber + '</name>\n')
gpxfile.write('    <desc>' + description_h1 + '</desc>\n')
gpxfile.write('    <url>' + cache_url + '</url>\n')
gpxfile.write('    <urlname>' + cachename + '</urlname>\n')
gpxfile.write('    <sym>Geocache</sym>\n') # keine Ahnung ...
gpxfile.write('    <type>Geocache|'+ cachetyp + '</type>\n')
gpxfile.write('    <groundspeak:cache id="'+ cacheid + '" available="True" archived="False" xmlns:groundspeak="http://www.groundspeak.com/cache/1/0">\n')
gpxfile.write('      <groundspeak:name>' + cachename + '</groundspeak:name>\n')
gpxfile.write('      <groundspeak:placed_by>' + placedby + '</groundspeak:placed_by>\n')
gpxfile.write('      <groundspeak:owner id="' + ownerid + '">' + authorname + '</groundspeak:owner>\n')
gpxfile.write('      <groundspeak:type>' + cachetyp + '</groundspeak:type>\n')
gpxfile.write('      <groundspeak:container>' + cachesize + '</groundspeak:container>\n')
gpxfile.write('      <groundspeak:difficulty>' + difficulty + '</groundspeak:difficulty>\n')
gpxfile.write('      <groundspeak:terrain>' + terrain + '</groundspeak:terrain>\n')
gpxfile.write('      <groundspeak:country>' + country + '</groundspeak:country>\n')
gpxfile.write('      <groundspeak:state>' + state + '</groundspeak:state>\n')
gpxfile.write('      <groundspeak:short_description html="True">' + shortdesc + '</groundspeak:short_description>\n')
gpxfile.write('      <groundspeak:long_description html="True">' + longdesc + '</groundspeak:long_description>\n')
gpxfile.write('      <groundspeak:encoded_hints>' + encodedhints + '</groundspeak:encoded_hints>\n')
gpxfile.write('    </groundspeak:cache>\n')
gpxfile.write('  </wpt>\n')
gpxfile.write('</gpx>\n')

gpxfile.close()
 
Oben