London Rain
Geowizard
Mit der neuen Version des Skriptes hat man ja die Möglichkeit, eine Übersicht all seiner Bewertungen zu bekommen. Wenn man eine Datenbank mit seinen Funden in GSAK hat, kann man damit jetzt sehr schön prüfen, zu welchen Votings kein Find-Log existiert.
Da es früher möglich war, für beliebige Nutzer, die kein PW gesetzt hatten, irgendwelche Caches zu bewerten, kann man hiermit nun überprüfen, ob der eigene Account betroffen war.
Zur Benutzung: Zuerst trägt man in der Zeile unter "# get vote list from server" seinen Nick und PW nach. Dann speichert man den Code als GcVoteCheckFakeVotes.gsk und installiert es wir üblich. Nun wählt man in GSAK die Datenbank mit seinen (aktuellen!) Myfinds aus und lässt das Makro laufen. Es listet nun alle Caches auf die man bewertet hat, wo aber kein Log in der Myfinds-Datenbank zu zu finden ist. Das ist natürlich auch der Fall, wenn diese nicht aktuell ist oder man Caches bewertet, aber diese nicht als gefunden geloggt hat.
Über Feedback würde ich mich freuen. Vor allem ob damit wirklich jemand Fakelogs findet.
Am meisten würd ich mich aber freuen, wenn jemand noch Lust hat, ein Formular zur Eingabe des Nicks und Passwortes zu basteln, der dann in einer Configdatei gespeichert wird. Damit entfällt das manuelle Ändern des Codes. Das kann man sicher sogar weitestgehend von dem GCVoteGrabber-Makro übernehmen. Dabei könnte man dann auch gleich eine Dropdownliste um die eigene Myfinds-Datenbank auszuwählen einbauen, wie es das etwa in FindStatsGen gibt. Fänd ich echt schön wenn da noch jemand Lust zu hat. Hab lang genug dran gesessen und ich hasse Formulare designen.
Da es früher möglich war, für beliebige Nutzer, die kein PW gesetzt hatten, irgendwelche Caches zu bewerten, kann man hiermit nun überprüfen, ob der eigene Account betroffen war.
Zur Benutzung: Zuerst trägt man in der Zeile unter "# get vote list from server" seinen Nick und PW nach. Dann speichert man den Code als GcVoteCheckFakeVotes.gsk und installiert es wir üblich. Nun wählt man in GSAK die Datenbank mit seinen (aktuellen!) Myfinds aus und lässt das Makro laufen. Es listet nun alle Caches auf die man bewertet hat, wo aber kein Log in der Myfinds-Datenbank zu zu finden ist. Das ist natürlich auch der Fall, wenn diese nicht aktuell ist oder man Caches bewertet, aber diese nicht als gefunden geloggt hat.
Über Feedback würde ich mich freuen. Vor allem ob damit wirklich jemand Fakelogs findet.
Am meisten würd ich mich aber freuen, wenn jemand noch Lust hat, ein Formular zur Eingabe des Nicks und Passwortes zu basteln, der dann in einer Configdatei gespeichert wird. Damit entfällt das manuelle Ändern des Codes. Das kann man sicher sogar weitestgehend von dem GCVoteGrabber-Makro übernehmen. Dabei könnte man dann auch gleich eine Dropdownliste um die eigene Myfinds-Datenbank auszuwählen einbauen, wie es das etwa in FindStatsGen gibt. Fänd ich echt schön wenn da noch jemand Lust zu hat. Hab lang genug dran gesessen und ich hasse Formulare designen.
Code:
#*******************************************
# MacVersion = 1.0
# MacDescription = checks for possible GCVote fake votes
# MacAuthor = London Rain
# MacFileName = GcVoteCheckFakeVotes.gsk
# MacUrl =
#*******************************************
##### create vote list #####
# get vote list from server
$data = GETURL("http://dosensuche.de/GCVote//listUserVotes.php?userName=Dein+User+Name&password=deinPasswort")
# get file from disk (for testing)
#$data = GETFILE("d:\listUserVotes.htm")
# define regex for matching waypoint codes
$regex = $_Quote + ">(.*)</a>"
# get number of occurences of waypoint codes
$countvotes = REGEXCOUNT($regex, $data)
# create list with all waypoints
$list = LIST("listGCVote", "create", ";")
$i=1
# loop through regexps and put them into list
WHILE $i <= $countvotes
$item = REGEXSUB($regex, $data, $i, 1)
# unless waypoint code is unknown to GCVote add it to list
IF $item <> "Untitled"
$list = LIST("listGCVote", "add", $item)
ENDIF
$i = $i + 1
ENDWHILE
##### create find list #####
# query waypoint codes from myfinds sqlite cache database
SQLITECACHES
$status = SQLITE("open", "$_CurrentDataPath\sqlite.db3")
$result = SQLITE("sql", "SELECT Code FROM CachesTemp")
$status = sqlite("close","")
# prepare result for further processing
$result = REPLACE($_NewLine, ";", $result)
# get number of finds (note +1 due to last semicolon missing)
$countfinds = REGEXCOUNT(";", $result) + 1
# create list with all waypoints
$list = LIST("listFinds", "create", ";")
$i=1
# loop through waypoints and put them into list
WHILE $i <= $countfinds
# due to preprocessing items are delimited by semicolons
# extract one by one and add to list
$item = EXTRACT($result, ";", $i)
$list = LIST("listFinds", "add", $item)
$i = $i + 1
ENDWHILE
##### compare both lists #####
$i=1
# loop through voting list (as this one is shorter)
WHILE $i <= VAL(LIST("listGCVote", "count", ""))
# get each item of this list
$item = LIST("listGCVote", "item", "$i")
# check if it is included in the find list
$searchresult = VAL(LIST("listFinds", "find", $item))
# if item is not found increment $i to check next item
IF $searchresult=0
$i=$i+1
# if item is found delete it from vote list (this later serves as our result list)
# and delete it from find list too to speed up further searches
ELSE
$list=LIST("listGCVote", "delete", "$i")
$list=LIST("listFinds", "delete", "$searchresult")
ENDIF
ENDWHILE
##### create html output #####
$output = "<b>You have voted this caches but they are not included in your myfinds database. This may be due to an incomplete myfinds database or caches that you didn't log as find. However you can check if those votes were faked by opening each waypoint to see if you really voted it.</b><ol>" + $_NewLine
# loop through vote result list and add each item to a html list
$i=1
WHILE $i <= VAL(LIST("listGCVote", "count", ""))
$item = LIST("listGCVote", "item", "$i")
$output = $output + "<li><a href=" + $_Quote + "http://www.geocaching.com/seek/cache_details.aspx?wp=" + $item + $_Quote + " target=" + $_Quote + "_blank" + $_Quote + ">" + $item + "</a></li>" + $_NewLine
$i=$i+1
ENDWHILE
$output = $output + "</ol>"
# create final report in GSAK temp directory
$status = PutFile($_Install + "\temp\GCVoteCheckFakeVotes.html", $output)
# open in default browser
FILEOPEN file="$_Install\temp\GCVoteCheckFakeVotes.html"