téměř automatické statistiky na geocaching.com
je pěkný, když má někdo v profilu na geocaching.com nějaké pěkné statistiky. jak těchto statistik dosáhnout je vcelku jednoduché, můžeme použít nějaky program pro správu keší, a třeba GSAK, nebo GeoGet nám statistiky nějakým způsobem vygeneruje. člověk je ale tvor líný, a tak hledá jak si celou činnost co nejvíce usnadnit
program GSAK nepoužívám, prostě mám nějak rád GeoGet. ten sice v základu jakýsi pokus o statistiky vygeneruje, ale bez pomoci třetí strany to není ono. používal jsem tedy ještě nedávno program GeoStatGen, ten nabízí relativně široké možnosti přizpůsobení, ale jeho vývoj nějak ustanul a tak se objevil nástupce ve formě GgStat. po jeho „instalaci“ se vám na liště v geogetu objeví dvě nové ikonky, z nichž jedna volá skript perlu, a druhá samostatný exe soubor.
perl v pc nemám, tak jsem zkusil ten exe. po nastaveni několika proměnných v makru stačí kliknout a statistiky (ne nepodobné těm z GSAKu) jsou na světě.
no jo, ale ted nastává ta část, kdy musíte obsah html souboru zkopírovat do schránky, a v nastavení profilu na geocaching.com jej ručně vložit, a dát uložit. to je hezké kdyby se to dělalo jednou, ale dělat to po každé nalezené keši je pěkná otrava.
jako spravnou PHP lamu mě napadlo použít něco jako include, pokud by to stránka geocaching dovolila. ale medwyn_cz mě upozornil, že na stránkach, které běží pod ASP prostě PHP include nepůjde, a navíc přihodil malou radu, kterou zahlíd na něčím profilu
<object data="http://www.hradnik.cz/geocaching/index.html" type="text/html" width="98%" height="700">http://www.hradnik.cz/geocaching/index.html</object> -- tohle už vypadá slibně! po několika pokusech s nastavením rozměrů už se mi v profilu ukazovaly statistiky, které se tahaly z mého webu! stačilo přidat
<!--[if IE]> Error, Internet Explorer has very poor support for tag <object><br /> and geocaching.com blocking other options like iframe, js...<br /> You will find my stats <a href="http://gc.mikrom.cz/stats.html">here</a>. <![endif]--> <!--[if !IE]> <--> <object type="text/html" data="http://gc.mikrom.cz/stats.html" width="790" height="4200"> Some error. You'll find my stats <a href="http://gc.mikrom.cz/stats.html">here</a>. </object> <!--> <![endif]--> -- teď jsme sice ve fázi kdy se nám tahají data z jiného webu, ale páci to ušetřilo leda tak v tom, že nyní stačí na web nahrát celý soubor a nemusíme se babrat se zdrojákem. vzpomněl jsem si proto na FTP((FileTransferProtocol)) a po chvilce už věděl, že se s FTP dá vcelku použitelně komunikovat přes příkazový řádek. po pár planých pokusech jsem vygooglil řešení v podobě následujících řádků **upload.stats.bat**
:: piseme bataky :: http://hps.mallat.cz/view.php?cisloclanku=2003070903 :: code :: http://wiki.trivialbeing.net/Right_Click_Upload_to_Internet_via_Batch_File @echo off setlocal :: Variables set file=stats.html set f=log.txt set web=ftp.mikrom.cz set name=mikrom_cz set password=mojetajneheslo :: Compose ftp commands file echo open %web% > %f% echo user %name% %password% >> %f% echo binary >> %f% :: Change to correct directory echo cd gc >> %f% :: Upload to this directory echo put %file% >> %f% echo bye >> %f% :: Execute ftp command :: Use "-d" key for verbose output ftp -n -d -s:%f% :: Cleanup del /f /q %f% del /f /q %file% endlocal exit -- nyní už jen stačilo poupravit makro GgStat.ggp.pas aby vygenerované statistiky uložilo do datového adresáře geogetu, zavolalo soubor .bat (obsah viz výše) uložený tamtéž a místo načteni souboru stats.htm v prohlížeči načetlo rovnou stránku s profilem. **GgStat.ggp.pas**
const GgStat = 'GgStat.exe'; Database = 'geoget.db3'; Statistics = 'stats.html'; Template = 'GgStatTemplate.en'; Upload = 'GgStatUpload.bat'; HomeLat = '50.558708'; //Geoget_RefX HomeLon = '15.913619'; //Geoget_RefY ProfilePage = 'http://www.geocaching.com/profile/?guid=c3b9afaa-8556-4ddc-9d17-12459c86528b'; function PluginCaption: string; begin Result := 'GgStat exe'; end; function PluginHint: string; begin Result := 'GgStat exe'; end; function PluginIcon: string; begin Result := DecodeBase64('Qk32AAAAAAAAAHYAAAAoAAAAEAAAABAAAAABAAQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AIAAAAAAAACIB////////wgIAA8ABwAAcAcMwAuwCZEABwzEC7MJkQgHDMQLswmRCAcMxAuzCZEIBwzEC7MJkQgIDMQLswmRCAeAAAuzCZEICHCIC7MJkQgHgIgLswCRCA9wiAuzCAAIgPCIC7gIiIiIAIiAAAiIiIiAiIiIiIiI'); end; function PluginFlags: string; begin Result := 'toolbar'; end; procedure PluginStart; begin RunExec('"' + AnsiToOem(GgStat) + '" -d "' + AnsiToOem(Database) + '" -o "' + AnsiToOem(Statistics) + '" -t "' + AnsiToOem(Template) + '" -c ' + Geoget_Owner + ' -x ' + HomeLat + ' -y ' + HomeLon); RunExec(AnsiToOem(Upload)); //RunShell(Statistics); RunShell(ProfilePage); end; -- vysledek? JEDNOu jedinkrát kliknu na ikonku v geogetu a v tu ránu mám na profilu aktuální statistiky! to je skvělé, ne? EDIT 11.11.2008: trochu jsem zaktualizoval *.pas a *.bat a upravil kód do profilu abych ošetřil IE, který jako jediný prohlížeč nezvládá tag `<object>` pozor! ------- EDIT 13.11.2008: nový geojarry (v.11) umí nahrávat soubory do profilu! pro stávající uživatele geojarryho to znamená POUZE upravit soubor GgStat.ggp.pas na:
{$INCLUDE geojarry.config.pas } const GgStat = 'GgStat.exe'; Database = 'geoget.db3'; Statistics = 'stats.html'; Template = 'GgStatTemplate.en'; //Upload = 'GgStatUpload.bat'; HomeLat = '50.558708'; //Geoget_RefX HomeLon = '15.913619'; //Geoget_RefY ProfilePage = 'http://www.geocaching.com/profile/?guid=c3b9afaa-8556-4ddc-9d17-12459c86528b'; function PluginCaption: string; begin Result := 'GgStat exe'; end; function PluginHint: string; begin Result := 'GgStat exe'; end; function PluginIcon: string; begin Result := DecodeBase64('Qk32AAAAAAAAAHYAAAAoAAAAEAAAABAAAAABAAQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AIAAAAAAAACIB////////wgIAA8ABwAAcAcMwAuwCZEABwzEC7MJkQgHDMQLswmRCAcMxAuzCZEIBwzEC7MJkQgIDMQLswmRCAeAAAuzCZEICHCIC7MJkQgHgIgLswCRCA9wiAuzCAAIgPCIC7gIiIiIAIiAAAiIiIiAiIiIiIiI'); end; function PluginFlags: string; begin Result := 'toolbar'; end; procedure PluginStart; var gjini: string; datadir: string; inif: string; gjresult: integer; begin if gjUsername = '' then begin ShowMessage('Please, fill variables in geojarry.config.pas first and restart Geoget!'); exit; end; //build GeoJarry.ini gjini := '[geojarry]' + CRLF; gjini := gjini + 'username=' + gjUsername + CRLF; gjini := gjini + 'password=' + gjPassword + CRLF; gjini := gjini + 'proxyip=' + gjproxyip + CRLF; gjini := gjini + 'proxyport=' + gjproxyport + CRLF; gjini := gjini + 'proxyuser=' + gjproxyuser + CRLF; gjini := gjini + 'proxypass=' + gjproxypass + CRLF; gjini := gjini + 'countryid=' + gjcountryid + CRLF; gjini := gjini + 'stateid=' + gjstateid + CRLF; gjini := gjini + 'maxcount=10' + CRLF; datadir := geoget_datadir + 'gjtemp'; Forcedirectories(datadir); gjini := gjini + 'datadir=' + datadir + CRLF; inif := Geoget_datadir + 'gjtemp.ini'; StringTofile(gjini, inif); //build stats.html RunExec('"' + AnsiToOem(GgStat) + '" -d "' + AnsiToOem(Database) + '" -o "' + AnsiToOem(Statistics) + '" -t "' + AnsiToOem(Template) + '" -c ' + Geoget_Owner + ' -x ' + HomeLat + ' -y ' + HomeLon); //upload stats on FTP //RunExec(AnsiToOem(Upload)); //upload stats on gc.com profile gjresult := RunExec('"' + Geoget_datadir + 'geojarry.exe" "' + inif + '" profile "' + Statistics + '"'); //RunShell(Statistics); case gjresult of 0: begin RunShell(ProfilePage); end; end; end; -- a je to! vpodstatě vidíte, že jsem si jen z geojarryho maker vypůjčil vygenerovaní ini souboru a předhodil mu ho s parametrem `profile` a cestou k souboru se statistikami. hodně štěstí při zprovozňování! vlákno na fóru geocaching.cz najdete "zde":[http://www.geocaching.cz/forum/viewthread.php?forum_id=20&thread_id=8867&sort=&rowstart=0]. **EDIT 7.12:2008:** v dokumentech je ke stažení nová verze makra, která počítá "ftf-index":[http://ftf-index.cz], využívá konfigurace přes samostatný soubor a přes rozhraní GeoGetu. **EDIT 21.1.2009:** makro se trochu rozrustá, takže občas sledujte sekci "dokumenty":[http://mikrom.cz/docs/geocaching], najdete tam *GgStat2.zip* s popisem aktualních změn. pokud máte problémy s rozběhnutím statistik, tak nejprve koukněte na "wiki":[http://geoget.ararat.cz/doku.php/doc:user:autostat] a až pak mě kontaktujte (píše mi kvůli tomu čím dál víc lidí) v krajním případě jsem ochoten Vám to přes "TeamViewer":[http://teamviewer.com/download/TeamViewerQS.exe] rozchodit. v současné době makro umí: - poskládat si soubor BAT a nahrát s ním statistiky na FTP pro případ, že používáte prvni metodu přes `<object>` - nebo nahraje statistiky přímo na profil pomocí geojarry - počítá "FTF index":[http://ftf-index.cz], který uloží do souboru *html*, který pomocí `INCLUDE` vložíte do statistik - nalezené kešky opatří tagem `CZ kraj` a `CZ okres` pro generování mapky nálezů podle krajů a okresů - nalezené kešky opatří tagem `Elevation`, který obsahuje jejich nadmořskou výšku a hodí se pro statistiky související s nadmořskou výškou - nalezené kešky nahraje na server "geocaching.cz":[http://geocaching.cz], aby Vám byl schopen vygenerovat "mapku nálezů":[http://www.geocaching.cz/mapacr.php?uid=9956&typ=crkraje] - v případě problémů Vás bude po nastavení volby `SilentMode = 'no'` informovat o každém kroku všechny tyto volby je možné nastavit buď ručně v souboru *GgStat2.config.pas*, nebo skrze rozhraní GeoGetu: Tools -> Settings -> Plugins víceméně aktuální podobu výsledných statistik si můžete prohlédnout na mém "profilu":[http://www.geocaching.com/profile/?u=mikrom]. <br /> Pokračování:[/341-autostat] ===========================
Ahoj, já jsem mikrom a je mi 27 let. Univerzita je ta tam a tak mi zbývá pořád ta fiXa a práce v 