// Strings for parsing Geocaching.com webpages // // This file has simple syntax: // // variable_name="variable_value" // // Value has to be in quotes and escaped!!! // You can use // to comment line (only on line begining) // // Many of these variables are regular expressions // Application uses group with index 1 when parsing regex // // e.g. to get terrain in this string: // // "with difficulty of 1.5, terrain of 2.5." // // you should use regexp like this: // // "with difficulty of [0-9\\.]+?, terrain of ([0-9\\.]+)?\\." // // Notice that even backslashes are escaped and // terrain number is in parentheses (so it is in first group) // but difficulty not (so it isn't in any group). // You can also use this: // // "with difficulty of (?:[0-9\\.]+)?, terrain of ([0-9\\.]+)?\\." // // "?:" in the beggining of first parentheses means that // it is noncapturing group, so it doesn't count and terrain is first again. // // Check out .NET 3.5 documentation for more info about using regex: // http://msdn.microsoft.com/en-us/library/az24scfc(v=VS.90).aspx // // This is for definition update check: file_version="160123" // Identify downloader as regular web browser - copied from Opera 12.16 downloader_useragent="Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0" // // Login and Logout vars: // // these aren't regexes: login_uri="https://www.geocaching.com/login/default.aspx?RESETCOMPLETE=Y" // POST has to be url-encoded (eg $ = %24, = %20 etc.) // {0} = username; {1} = password login_post_string="__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=&ctl00%24ContentBody%24tbUsername={0}&ctl00%24ContentBody%24tbPassword={1}&ctl00%24ContentBody%24cbRememberMe=on&ctl00%24ContentBody%24btnSignIn=Sign%20In" // If response contains cookie with this name, it means that user is logged in: login_cookie="userid" logout_uri="https://www.geocaching.com/login/default.aspx?RESET=Y&redir=https://www.geocaching.com/" // // Downloading and cache parsing vars: // // these aren't regexes: // addres where cache listing is downloaded from // {0} = cache id; {1} = decode hint (code bellow) cache_details_uri="https://www.geocaching.com/seek/cache_details.aspx?wp={0}{1}" // when hint decode is set, this replaces {1} in previous uri cache_details_uri_decrypt_hint="&decrypt=true" // url for log images, {0} = file name cache_log_images_file_url="http://img.geocaching.com/cache/log/{0}" // these are regexes: cache_is_na_err="

Cache is Unpublished<\\/h2>" cache_is_pmo_err="has chosen to make this cache listing visible to Premium Members only" cache_guid="rel=\"canonical\" href=\"http:\\/\\/www\\.geocaching\\.com\\/seek\\/cache_details\\.aspx\\?guid=([a-fA-F0-9\\-]+?)(\\&.+?)?\"" cache_type="About Cache Types\">
cache_type_trad=" // cache_size_(...) aren't regexes cache_size_micro="micro" cache_size_small="small" cache_size_regular="regular" cache_size_large="large" cache_size_other="Other" cache_size_notchosen="not chosen" cache_size_virtual="virtual" cache_placed="\\) was created by .+? on ([\\d\\w\\/\\- ]{8,12})\\. It\\'s" cache_author="\\) was created by (.+?) on [\\d\\w\\/\\- ]{8,12}\\. It\\'s" cache_title="ctl00_ContentBody_CacheName\">(.+?)<\\/span>" cache_region="(.+?)<\\/span>" cache_cid="log\\.aspx\\?ID=([0-9]+?)\\&lcn=1" cache_difficulty="with difficulty of ([0-9\\.]+?), terrain of [0-9\\.]+?\\. " cache_terrain="with difficulty of [0-9\\.]+?, terrain of ([0-9\\.]+?)\\. " cache_is_logged_out="NotSignedIn" // latitude and longitude definitions are the only ones with multiple groups // for this one first has to be latitude, second longitude, both in decimal form: // cache_latitude_longitude=" title=\"Other Conversions\" href=\"\\/wpt\\/\\?lat=(-?[0-9]{1,2}\\.[0-9]{1,8})?\\&lon=(-?[0-9]{1,3}\\.[0-9]{1,8})?\\&detail=1\" target" cache_latitude_longitude="\\/seek\\/nearest\\.aspx\\?lat=(-?[0-9]{1,2}\\.[0-9]{1,8})?\\&lng=(-?[0-9]{1,3}\\.[0-9]{1,8})?\">" cache_log_id="log\\.aspx\\?ID=([0-9]+?)\\&lcn=1" cache_description_short="
[\r\n ]+(.+?)<\\/span>[\r\n ]+<\\/div>" cache_description="
[\r\n ]+(.+?)<\\/span>[\r\n ]+<\\/div>" // images in description - 2 groups: 1 - whole uri, 2 - filename cache_description_images="" // attached images frame cache_attached_frame="

(.+?)<\\/p>[\r\n ]+

" // separator is regex - don't use any capturing group // otherwise it will mess everything up! // this splits attached frame to particular lines cache_attached_separator="
.+?<\\/span>" cache_attached_name="href=\".*?\".+?(.+?)<\\/span>" cache_attached_description= ".+?<\\/span><\\/a>
(.+?)
" // end attached images frame // frame with attributes // - it find frame first, then it looks for attributes in there cache_attributes_frame="Attributes<\\/h3>(.+?)<\\/div>" cache_attribute_single="" // if attribute is this, it is blank field cache_attribute_blank="blank" // end frame with attributes cache_hint="
(.+?)<\\/div>" cache_is_gallery="View the Image Gallery" cache_gallery_count="View the Image Gallery of ([0-9]+) images" // frame with waypoints cache_waypoints_frame="(.+?)<\\/table>" // same rules as for cache_attached_separator // first line should be header of waypoints table, so it is skipped cache_waypoints_separator="(.+?)<\\/a> \\(.+?\\)" cache_waypoint_type=".+?<\\/a> \\((.+?)\\)" // again lat/lon and multiple groups // this one has 6 groups: // 1 - returns N or S (north/south) // 2 - degrees; 3 - minutes // 4 to 6 are similar (just nr. 4 returns E or W) cache_waypoint_latitude_longitude="(N|S) ([0-9]{1,2})° ([0-9]{2}\\.[0-9]{3}) (E|W) ([0-9]{3})° ([0-9]{2}\\.[0-9]{3})\\ " // if can't get lat/lon try to get text from Coordinate field // (it's pretty difficult to recognize it) cache_waypoint_coord_text="\\)[\r\n ]+[\r\n ]+[\r\n ]+[\r\n ]+" cache_waypoint_note="
[\r\n ]+(.*?) [\r\n ]+[\r\n ]+ [\r\n ]+ [\r\n ]+
[\r\n ]+?(.*?)[\r\n ]+?<\\/td>" // end frame with waypoints // frame with logs cache_logs_frame="initalLogs = {(.+?)};" // completely same rules as in cache_waypoints_separator cache_logs_separator="{\"LogID\":" cache_log_type="\"LogType\":\"(.+?)\"" // cache_log_type_(...) aren't regexes, // they have to be exactly same! cache_log_type_found="Found it" cache_log_type_not_found="Didn't find it" cache_log_type_note="Write note", cache_log_type_archive="Archive", cache_log_type_disable="Temporarily Disable Listing", cache_log_type_enable="Enable Listing", cache_log_type_publish="Publish Listing", cache_log_type_needs_maintenance="Needs maintenance", cache_log_type_owner_maintenance="Owner Maintenance", cache_log_date="\"Visited\":\"(.+?)\"" cache_log_name="\"UserName\":\"(.+?)\"" // frame with log images cache_log_images_frame="\"Images\":\\[(.*?)\\]" // same rules as cache_waypoints_separator and cache_logs_separator cache_log_images_separator="{\"ImageID\":" cache_log_images_file="\"FileName\":\"(.+?)\"" cache_log_images_name="\"Name\":\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)\"" cache_log_images_description="\"Descr\":\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)\"" //end frame with log images cache_log_text="\"LogText\":\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)\"" // end frame with logs cache_is_found="You logged this as Found" cache_is_disabled="This cache is temporarily unavailable" cache_is_pmo="This is a Premium Member Only cache\\." cache_is_owner="\\/images\\/silk\\/star\\.png" //frame with inventory items, same rules as above cache_inventory_frame="ContentBody_uxTravelBugList_uxInventoryLabel\">Inventory<\\/span>(.+?)<\\/ul>" cache_inventory_separator="
  • " cache_inventory_guid="\\/track\\/details\\.aspx\\?guid=([a-f\\d-]+?)\"" cache_inventory_type="wpttypes\\/sm\\/(\\w+?)\\.gif\"" //no regex, travelbug code (everything else is geocoin): cache_inventory_type_tb="21" cache_inventory_name="(.+?)" //frame with inventory items end cache_logs_total="(\\d+?) Logged Visits" //{0} is replaced by cache_log_type_(...) cache_logs_total_type="

    .+? title=\"{0}\" \\/> (\\d+?)\\ " //requesting more than default number of logs using ajax: cache_logs_in_listing="\"size\": (\\d+?)," cache_logs_more_token="userToken = \'(\\w+?)\';" //no regex, {0} = token, {1} = log count cache_logs_more_uri="http://www.geocaching.com/seek/geocache.logbook?tkn={0}&idx=1&num={1}&decrypt=true" cache_favorite="[\r\n ]+(\\d+?)<\\/span>" //trackables: //{0} = trackable's guid trackable_details_uri="http://www.geocaching.com/track/details.aspx?guid={0}" trackable_name="(.+?)<\\/span>" trackable_code="class=\"CoordInfoCode\">(TB.+?)<\\/span>" trackable_owner="(.+?)<\\/a>" trackable_released="(.+?)<\\/span>" trackable_origin="(.+?)<\\/span>" trackable_spotted="(In .+?)<\\/a>" trackable_goal="

    [\r\n\t ]*?

    (.+?)

    " trackable_about="
    [\r\n\t ]*?

    .+?

    [\r\n\t ]*?

    (.+?)

    " trackable_traveled="Tracking History \\((.*?)(?:\\ )?\\)" trackable_map_id="map_gm\\.aspx\\?ID=(\\d+?)" trackable_type="/wpttypes/(\\w+?).gif" trackable_gallery_id="gallery\\.aspx\\?ID=(\\d+?)" trackable_log_count="of (\\d+?) records" trackable_gallery_count="View(?: All)? (\\d+?) Gallery Images?" trackable_logs_frame="(.+?)<\\/table>" trackable_logs_separator="(.+?)<\\/a>" trackable_log_cache="cache_details\\.aspx\\?guid=[a-f\\d-]+?\">(.+?)<\\/a>" trackable_log_region="<\\/a>[\r\n\t ]*?<\\/td>[\r\n\t ]*?" nearby_cache_name="([^>]+?)<\\/span><\\/a>" nearby_cache_code="\\b(GC[A-Z0-9]+)\\b" nearby_cache_found_uri="&f=1" nearby_cache_is_disabled="lnk Strike" nearby_post_next_page="__EVENTTARGET=ctl00%24ContentBody%24pgrTop%24ctl08" nearby_page="Page: (\\d+?) of (\\d+?)" //static maps //0 - lat, 1 - lon, 2 - zoom level, 3 - map type, 4 - format staticmap_uri="http://maps.googleapis.com/maps/api/staticmap?center={0},{1}&zoom={2}&size=640x640&maptype={3}&sensor=false&format={4}"
    (.+?)<\\/td>" trackable_log_comment="(.+?)<\\/td>" //geocoding parser //{0}=encoded city name geocoding_uri="http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false" geocoding_status="(.+?)" geocoding_status_is_ok="OK" geocoding_result="(.+?)" geocoding_address="(.+?)" //2 groups: 1-lat, 2-lon geocoding_lat_lon="[\r\n\t ]*(.+?)[\r\n\t ]*(.+?)[\r\n\t ]*" //seek nearby 0 - lat, 1 - lon, 2 - nearby_cache_found_uri nearby_uri="http://www.geocaching.com/seek/nearest.aspx?lat={0}&lng={1}{2}" nearby_frame="(.+?)
    " nearby_separator="