From e8dc3caa1a53a86c730e3935db5b39d6fef8cf31 Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Thu, 7 Apr 2022 17:22:06 +0200 Subject: [PATCH 01/19] Update the list of possible cache statuses --- pycaching/cache.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pycaching/cache.py b/pycaching/cache.py index d23c089..9430162 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -1412,3 +1412,4 @@ class Status(enum.IntEnum): disabled = 1 archived = 2 unpublished = 3 + locked = 4 From 0a3460fad64c6ce4dc8ebc50164c5f493907ca3d Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Thu, 7 Apr 2022 17:25:14 +0200 Subject: [PATCH 02/19] Add `Cache.status` property --- pycaching/cache.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pycaching/cache.py b/pycaching/cache.py index 9430162..1ba2b99 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -418,6 +418,22 @@ def state(self): def state(self, state): self._state = bool(state) + @property + @lazy_loaded + def status(self): + """The cache status (Enabled, Disabled, Archived, Unpublished, Locked). + + :type: :class:`.cache.Status` + """ + return self._status + + @status.setter + def status(self, status): + if isinstance(status, Status): + self._status = status + else: + raise errors.ValueError("Passed object is not Status instance.") + @property @lazy_loaded def found(self): From 46d61327798307cd6db79ae92d499bfa3ddd4e53 Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Thu, 7 Apr 2022 17:29:03 +0200 Subject: [PATCH 03/19] Set the cache status in the `Cache.load()` method --- pycaching/cache.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pycaching/cache.py b/pycaching/cache.py index 1ba2b99..59f1460 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -798,6 +798,18 @@ def load(self): self.state = root.find("ul", "OldWarning") is None + # Cache status + if root.find(id="ctl00_ContentBody_disabledMessage"): + self.status = Status.disabled + elif root.find(id="ctl00_ContentBody_archivedMessage"): + self.status = Status.archived + elif root.find(id="unpublishedMessage") or root.find(id="unpublishedReviewerNoteMessage"): + self.status = Status.unpublished + elif root.find(id="ctl00_ContentBody_lockedMessage"): + self.status = Status.locked + else: + self.status = Status.enabled + log_image = root.find(id="ctl00_ContentBody_GeoNav_logTypeImage") if log_image: log_image_filename = log_image.get("src").split("/")[-1].rsplit(".", 1)[0] # filename w/o extension From 9de597fd85eb47c5ccc4636984cb17dde3754fbd Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Thu, 7 Apr 2022 18:59:53 +0200 Subject: [PATCH 04/19] Set the cache status in the `Cache.load_quick()` method --- pycaching/cache.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pycaching/cache.py b/pycaching/cache.py index 59f1460..fb2930a 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -867,6 +867,7 @@ def load_quick(self): Use information from geocaching map tooltips. Therefore loading is very quick, but the only loaded properties are: `name`, `type`, `state`, `size`, `difficulty`, `terrain`, `hidden`, `author`, `favorites` and `pm_only`. + It also loads `status`, however locked caches are considered archived. :raise .LoadError: If cache loading fails (probably because of not existing cache). """ @@ -881,7 +882,12 @@ def load_quick(self): # prettify data self.name = data["name"] self.type = Type.from_string(data["type"]["text"]) - self.state = data["available"] + + if data["available"]: + self.status = Status.enabled + else: + self.status = Status.archived if data["archived"] else Status.disabled + self.size = Size.from_string(data["container"]["text"]) self.difficulty = data["difficulty"]["text"] self.terrain = data["terrain"]["text"] From 6b97b38187b651343132d67dfa11c72932724d2c Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Thu, 7 Apr 2022 19:02:32 +0200 Subject: [PATCH 05/19] Set the cache status in the `_from_api_record` method --- pycaching/cache.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pycaching/cache.py b/pycaching/cache.py index fb2930a..20431ac 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -171,6 +171,7 @@ def _from_api_record(cls, geocaching, record): name=record["name"], type=Type.from_number(record["geocacheType"]), state=Status(record["cacheStatus"]) == Status.enabled, + status=Status(record["cacheStatus"]), found=record["userFound"], size=Size.from_number(record["containerType"]), difficulty=record["difficulty"], @@ -214,6 +215,7 @@ def __init__(self, geocaching, wp, **kwargs): "location", "original_location", "state", + "status", "found", "size", "difficulty", From 7b04234dbbbb790e61fce35ac7c71157a34d28db Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Thu, 7 Apr 2022 19:06:49 +0200 Subject: [PATCH 06/19] Dynamically return `state` based on `status` --- pycaching/cache.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pycaching/cache.py b/pycaching/cache.py index 20431ac..889fcc5 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -410,11 +410,11 @@ def type(self, type): def state(self): """The cache status. - :code:`True` if cache is enabled, :code:`False` if cache is disabled. + :code:`True` if cache is enabled, otherwise :code:`False`. :type: :class:`bool` """ - return self._state + return self._status == Status.enabled @state.setter def state(self, state): From f70c0d2380d5ed1eeeff6584e5f27fe874055b31 Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Thu, 7 Apr 2022 19:08:41 +0200 Subject: [PATCH 07/19] Remove setting of `state` property --- pycaching/cache.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pycaching/cache.py b/pycaching/cache.py index 889fcc5..6da9568 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -145,7 +145,6 @@ def _from_print_page(cls, geocaching, guid, soup): content.find(class_="HalfRight AlignRight").p.text.strip().partition(":")[2].strip() ) cache_info["location"] = Point.from_string(content.find(class_="LatLong").text.strip()) - cache_info["state"] = None # not on the page attributes = [ img["src"].split("/")[-1].partition(".")[0].rpartition("-") for img in content.find(class_="sortables").find_all("img") @@ -416,10 +415,6 @@ def state(self): """ return self._status == Status.enabled - @state.setter - def state(self, state): - self._state = bool(state) - @property @lazy_loaded def status(self): @@ -798,8 +793,6 @@ def load(self): self.location = Point.from_string(root.find(id="uxLatLon").text) - self.state = root.find("ul", "OldWarning") is None - # Cache status if root.find(id="ctl00_ContentBody_disabledMessage"): self.status = Status.disabled From a3c0a0b289730e83415a3740f3b683c38a5dd1ef Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Thu, 7 Apr 2022 19:10:24 +0200 Subject: [PATCH 08/19] Mark `Cache.state` property as deprecated --- pycaching/cache.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pycaching/cache.py b/pycaching/cache.py index 6da9568..9ca443a 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -13,7 +13,7 @@ from pycaching.log import Log from pycaching.log import Type as LogType from pycaching.trackable import Trackable -from pycaching.util import lazy_loaded, parse_date, rot13 +from pycaching.util import deprecated, lazy_loaded, parse_date, rot13 # prefix _type() function to avoid collisions with cache type _type = type @@ -406,6 +406,7 @@ def type(self, type): @property @lazy_loaded + @deprecated def state(self): """The cache status. From 43b3d3db9efae54cb47bd500709ad89999b5ed74 Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Wed, 24 Aug 2022 11:07:20 +0200 Subject: [PATCH 09/19] Fix issue with locked caches being considered archived using `Cache.load_quick()` method --- pycaching/cache.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pycaching/cache.py b/pycaching/cache.py index 9ca443a..da95e3c 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -879,10 +879,10 @@ def load_quick(self): self.name = data["name"] self.type = Type.from_string(data["type"]["text"]) + # We can fill in status correctly only for enabled caches + # (locked caches are considered archived) if data["available"]: self.status = Status.enabled - else: - self.status = Status.archived if data["archived"] else Status.disabled self.size = Size.from_string(data["container"]["text"]) self.difficulty = data["difficulty"]["text"] From 432268b4ad5fd9e14a6f2e1411134ed2fb9427cf Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Wed, 24 Aug 2022 12:02:13 +0200 Subject: [PATCH 10/19] Update a comment in `Cache.load_quick()` method --- pycaching/cache.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pycaching/cache.py b/pycaching/cache.py index da95e3c..3b8295f 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -861,9 +861,11 @@ def load_quick(self): """Load basic cache details. Use information from geocaching map tooltips. Therefore loading is very quick, but - the only loaded properties are: `name`, `type`, `state`, `size`, `difficulty`, `terrain`, + the only loaded properties are: `name`, `type`, `size`, `difficulty`, `terrain`, `hidden`, `author`, `favorites` and `pm_only`. - It also loads `status`, however locked caches are considered archived. + It also loads `status`, but only for enabled caches. For other states, it can't be + completely determined (can't distinguish between archived and locked caches), so + lazy loading is used. :raise .LoadError: If cache loading fails (probably because of not existing cache). """ From 40310bfcab53fff5aaa29140a8250810b639a996 Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Wed, 24 Aug 2022 12:12:03 +0200 Subject: [PATCH 11/19] Don't set `state` in `Cache._from_api_record` method --- pycaching/cache.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pycaching/cache.py b/pycaching/cache.py index 3b8295f..316085f 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -169,7 +169,6 @@ def _from_api_record(cls, geocaching, record): wp=record["code"], name=record["name"], type=Type.from_number(record["geocacheType"]), - state=Status(record["cacheStatus"]) == Status.enabled, status=Status(record["cacheStatus"]), found=record["userFound"], size=Size.from_number(record["containerType"]), From cf39e388a5205c72b47e812b445d759da093c872 Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Wed, 24 Aug 2022 12:12:41 +0200 Subject: [PATCH 12/19] Remove `state` from `known_kwargs` as it's read-only --- pycaching/cache.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pycaching/cache.py b/pycaching/cache.py index 316085f..e29ed98 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -212,7 +212,6 @@ def __init__(self, geocaching, wp, **kwargs): "type", "location", "original_location", - "state", "status", "found", "size", From 3a64738ab69c3806d5761b748462218cf27087b5 Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Wed, 24 Aug 2022 12:47:24 +0200 Subject: [PATCH 13/19] Set `Cache.status` instead `state` in the `search` method --- pycaching/geocaching.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pycaching/geocaching.py b/pycaching/geocaching.py index 8caa6c3..9ab2c85 100644 --- a/pycaching/geocaching.py +++ b/pycaching/geocaching.py @@ -15,7 +15,7 @@ import requests from bs4.element import Script -from pycaching.cache import Cache, Size +from pycaching.cache import Cache, Size, Status from pycaching.errors import Error, LoginFailedException, NotLoggedInException, PMOnlyException, TooManyRequestsError from pycaching.geo import Point, Rectangle from pycaching.log import Log @@ -289,7 +289,8 @@ def search(self, point, limit=float("inf")): badge = row.find("svg", class_="badge") c.found = "found" in str(badge) if badge is not None else False c.favorites = row.find(attrs={"data-column": "FavoritePoint"}).text - c.state = not (row.get("class") and "disabled" in row.get("class")) + if not (row.get("class") and "disabled" in row.get("class")): + c.status = Status.enabled c.pm_only = row.find("td", "pm-upsell") is not None if c.pm_only: From ad45bebc40477aa5d669391dacfb0a913f90b73d Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Wed, 24 Aug 2022 12:47:59 +0200 Subject: [PATCH 14/19] Update tests --- test/test_cache.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/test_cache.py b/test/test_cache.py index 52e3264..bc33549 100644 --- a/test/test_cache.py +++ b/test/test_cache.py @@ -3,7 +3,7 @@ from datetime import date from unittest import mock -from pycaching.cache import Cache, Size, Type, Waypoint +from pycaching.cache import Cache, Size, Type, Waypoint, Status from pycaching.errors import LoadError, PMOnlyException from pycaching.errors import ValueError as PycachingValueError from pycaching.geo import Point @@ -24,7 +24,7 @@ def setUp(self): name="Testing", type=Type.traditional, location=Point(), - state=True, + status=Status.enabled, found=False, size=Size.micro, difficulty=1.5, @@ -115,6 +115,12 @@ def test_waypoints(self): def test_state(self): self.assertEqual(self.c.state, True) + def test_status(self): + self.assertEqual(self.c.status, Status.enabled) + + def test_status_name(self): + self.assertEqual(self.c.status.name, "enabled") + def test_found(self): self.assertEqual(self.c.found, False) From 39bf13077a732cf76aa67d8be265a0babe52a1bd Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Wed, 24 Aug 2022 13:02:36 +0200 Subject: [PATCH 15/19] Sort the imports correctly with `isort` --- test/test_cache.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_cache.py b/test/test_cache.py index bc33549..649f6fa 100644 --- a/test/test_cache.py +++ b/test/test_cache.py @@ -3,7 +3,7 @@ from datetime import date from unittest import mock -from pycaching.cache import Cache, Size, Type, Waypoint, Status +from pycaching.cache import Cache, Size, Status, Type, Waypoint from pycaching.errors import LoadError, PMOnlyException from pycaching.errors import ValueError as PycachingValueError from pycaching.geo import Point From 87dcf189a120198f050d8c7f2235e32fcc2ed3e3 Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Wed, 24 Aug 2022 22:03:12 +0200 Subject: [PATCH 16/19] Move the code for parsing cache status into the `Status.from_cache_details()` method --- pycaching/cache.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/pycaching/cache.py b/pycaching/cache.py index e29ed98..a2834fe 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -792,17 +792,7 @@ def load(self): self.location = Point.from_string(root.find(id="uxLatLon").text) - # Cache status - if root.find(id="ctl00_ContentBody_disabledMessage"): - self.status = Status.disabled - elif root.find(id="ctl00_ContentBody_archivedMessage"): - self.status = Status.archived - elif root.find(id="unpublishedMessage") or root.find(id="unpublishedReviewerNoteMessage"): - self.status = Status.unpublished - elif root.find(id="ctl00_ContentBody_lockedMessage"): - self.status = Status.locked - else: - self.status = Status.enabled + self.status = Status.from_cache_details(root) log_image = root.find(id="ctl00_ContentBody_GeoNav_logTypeImage") if log_image: @@ -1443,3 +1433,16 @@ class Status(enum.IntEnum): archived = 2 unpublished = 3 locked = 4 + + @classmethod + def from_cache_details(cls, soup): + if soup.find(id="ctl00_ContentBody_disabledMessage"): + return Status.disabled + elif soup.find(id="ctl00_ContentBody_archivedMessage"): + return Status.archived + elif soup.find(id="unpublishedMessage") or soup.find(id="unpublishedReviewerNoteMessage"): + return Status.unpublished + elif soup.find(id="ctl00_ContentBody_lockedMessage"): + return Status.locked + else: + return Status.enabled \ No newline at end of file From b9a643fc43ba795e689cb32587d1dbda5c5096cd Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Wed, 24 Aug 2022 22:15:42 +0200 Subject: [PATCH 17/19] Add tests for all status values --- test/cassettes/cache_status_archived.json | 168 ++++++++++++++++++++++ test/cassettes/cache_status_disabled.json | 168 ++++++++++++++++++++++ test/cassettes/cache_status_enabled.json | 168 ++++++++++++++++++++++ test/cassettes/cache_status_locked.json | 168 ++++++++++++++++++++++ test/test_cache.py | 23 +++ 5 files changed, 695 insertions(+) create mode 100644 test/cassettes/cache_status_archived.json create mode 100644 test/cassettes/cache_status_disabled.json create mode 100644 test/cassettes/cache_status_enabled.json create mode 100644 test/cassettes/cache_status_locked.json diff --git a/test/cassettes/cache_status_archived.json b/test/cassettes/cache_status_archived.json new file mode 100644 index 0000000..93db319 --- /dev/null +++ b/test/cassettes/cache_status_archived.json @@ -0,0 +1,168 @@ +{ + "http_interactions": [ + { + "recorded_at": "2022-08-24T20:12:48", + "request": { + "body": { + "encoding": "utf-8", + "string": "" + }, + "headers": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate" + ], + "Connection": [ + "keep-alive" + ], + "Cookie": [ + "gspkauth=; Culture=en-US; __RequestVerificationToken=" + ], + "User-Agent": [ + "python-requests/2.28.1" + ] + }, + "method": "GET", + "uri": "https://www.geocaching.com/seek/cache_details.aspx?wp=GC1PAR2" + }, + "response": { + "body": { + "encoding": "utf-8", + "string": "Object moved\r\n

Object moved to here.

\r\n\r\n" + }, + "headers": { + "Cache-Control": [ + "no-cache" + ], + "Content-Length": [ + "189" + ], + "Content-Type": [ + "text/html; charset=utf-8" + ], + "Date": [ + "Wed, 24 Aug 2022 20:12:48 GMT" + ], + "Expires": [ + "-1" + ], + "Location": [ + "https://www.geocaching.com/geocache/GC1PAR2_kostel-panny-marie-ruzencove" + ], + "Pragma": [ + "no-cache" + ], + "Request-Context": [ + "appId=cid-v1:019d82c2-5dd7-44cb-aa94-01e052f0d40c" + ], + "Set-Cookie": [ + "gspkauth=; domain=.geocaching.com; expires=Sat, 24-Sep-2022 20:12:48 GMT; path=/; secure; HttpOnly", + "Culture=en-US; path=/; secure; HttpOnly" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Vary": [ + "Accept-Encoding" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1" + ] + }, + "status": { + "code": 301, + "message": "Moved Permanently" + }, + "url": "https://www.geocaching.com/seek/cache_details.aspx?wp=GC1PAR2" + } + }, + { + "recorded_at": "2022-08-24T20:12:49", + "request": { + "body": { + "encoding": "utf-8", + "string": "" + }, + "headers": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate" + ], + "Connection": [ + "keep-alive" + ], + "Cookie": [ + "gspkauth=; Culture=en-US; __RequestVerificationToken=" + ], + "User-Agent": [ + "python-requests/2.28.1" + ] + }, + "method": "GET", + "uri": "https://www.geocaching.com/geocache/GC1PAR2_kostel-panny-marie-ruzencove" + }, + "response": { + "body": { + "encoding": "utf-8", + "string": "\r\n\r\n\r\n\r\n\r\n \r\n \r\n\tGC1PAR2 Kostel Panny Marie Ruzencove (Traditional Cache) in Plze\u0148sk\u00fd kraj, Czechia created by ricoo\r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\t\r\n\t\r\n\t\r\n
\r\n \r\n\r\n \r\n \r\n \r\n\r\n Skip to content\r\n\r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n
\r\n\t\r\n \r\n

Kostel Panny Marie Ruzencove Traditional Geocache

\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n This cache has been archived.\r\n
\r\n
\r\n

Sopdet Reviewer: Archivace listingu ke\u0161e

\n

Sopdet Reviewer - Reviewer pro \u010cR (p\u0159edev\u0161\u00edm kraje Jiho\u010desk\u00fd, Plze\u0148sk\u00fd a Karlovarsk\u00fd)

\n
\r\n \r\n More\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n\r\n
\r\n\t\t\n

\n \n GC1PAR2\n \n \n \n

\n\r\n\t
\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\t\t\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\t
\r\n
\r\n \r\n \r\n \r\n \r\n Kostel Panny Marie Ruzencove\r\n \r\n
\r\n
\r\n
\r\n A cache by ricoo\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Message this owner\r\n \r\n
\r\n
\r\n Hidden\r\n :\r\n 31.3.2009\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Difficulty:
\r\n
\r\n \"1.5\r\n
\r\n
\r\n
\r\n
\r\n Terrain:
\r\n
\r\n \"1\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n

\r\n Size: \"Size: (micro)\r\n

\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n 0 \r\n \r\n Favorites\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n

\r\n\r\n \r\n\r\n

\r\n \r\n\r\n
\r\n
\r\n
\r\n

\r\n \r\n \r\n N 49\u00b0 44.206 E 013\u00b0 23.568\r\n \r\n \r\n
\r\n \r\n UTM: 33U E 384191 N 5510603
\r\n
\r\n

\r\n
\r\n
\r\n In Plze\u0148sk\u00fd kraj, Czechia
\r\n \"W\" W 583.9 km from your home location\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Print:\r\n
\r\n
\r\n No Logs\r\n 5 Logs\r\n 10 Logs\r\n Driving Directions\r\n
\r\n
\r\n
\r\n
\r\n Download GPX\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n Please note Use of geocaching.com services is subject to the terms and conditions in our disclaimer.\r\n
\r\n \r\n \r\n \r\n \r\n

Geocache Description:

\r\n \r\n
\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n

Kostel Panny Marie Ruzencove

\r\n

\u00a0\u00a0\u00a0\u00a0\u00a0a Dominikansky klaster v Plzni

\r\n
\r\n
\r\n
\r\n

Historie kostela

\r\n
\r\n

Kostel se zacal stavet 1. kvetna roku 1912. Plany vypracoval architekt Antonin Moller, stavitel z Varnsdorfu, stavbu provadel architekt Eduard Sochor z Prahy. Nejprve byly vykopany zaklady pod vez, vybetonovany zaklady pod kostelni pilire a vyzdeny ostatni zaklady. 15. srpna roku 1912 byl za velke ucasti lidu posvecen zakladni kamen v presbytari. V listopadu roku 1912 byly jiz betonovany stropy kostela a staveny krovy. Pres zimu byly prace preruseny a opet obnoveny na jare roku 1913. Prace pokracovaly tak rychle, ze 15. kvetna roku 1913 byl staven krov na klastere a 25. cervence tehoz roku byl vztycen kriz na vezi kostela. Cela novostavba byla odevzdana svemu ucelu dne 30. rijna roku 1913, kdy kostel posvetil arcibiskup prazsky Lev kardinal Skrbensky za obrovske ucasti lidu. Prvni mse svata zde byla slouzena dne 1. listopadu roku 1913. Na hlavnim oltari byl jen svatostanek, na bocnich jen oltarni kameny. Kostel byl jeste bez lavic.

\r\n

Kostel je zbudovan ve slohu modernizovane basiliky. Je trojlodni s pricnou lodi a kaplovymi pristavbami. Prostredni lod je oddelena od bocnich mocnymi sloupy, ktere nesou postranni galerie a rozsiruje se v pricnou lod, do niz usti 12m siroky presbytar. Ten je vyvyseny o 4 stupne nad lod kostela. Kostel je dlouhy 55,27m, pricna lod je 24m siroka. Vyska kostela od podlahy ke kazetovemu stropu je 13m.

\r\n

V kostele je celkem 5 oltaru. Nad svatostankem hlavniho oltare je sousosi panny Marie Ruzencove. Na tomto sousosi pod sochou Panny Marie kleci proti sobe dva nejvetsi svetci dominikanskeho radu - sv. Otec Dominik, zakladatel a sv. Pius V., papez. Nad celym oltarem se pne baldachyn. Umeleckym dilem je svatostanek, ktery je zdoben reliefy dvou klecicich andelu, klasu a revy, tepanymi rucne v medi a pozlacenymi, podle navrhu bratra Pantaleona z radu benediktinskeho v Emauzich. Po stranach jsou dva oltare - Bozskeho Srdce Pane a sv. Josefa, ktere byly porizeny r. 1923. Na oltari sv. Josefa jsou novejsi sochy sv. Vaclava a sv. Ludmily z lipoveho dreva, polychromovane a zlacene od firmy Charvat z kutne hory. Na oltari Bozskeho Srdce pane jsou sochy svate Zdislavy a blahoslaveneho Ceslava z roku 1949, kdy je 22. kvetna posvetil P. Ambroz Svatos. Krizova cesta a zpovednice jsou z roku 1914, kazatelna je z roku 1930.

\r\n

Vez kostela je vysoka 56,75m. Je opatrena hodinami z roku 1923. Na vezi jsou tri zvony. Jmenuji se Tomas (1913), Vaclav (1952) a Josef (1999). Architektonicky velmi hodnotny kostel s klasterem postaveny pod vlivem nemecke moderny a doznivajici secese byl 7.4.1999 prohlasen za kulturni pamatku. V ramci plzenskeho urbanismu predstavuje areal klastera dominikanu mimoradne vyznamny celek.

\r\n

Cache

\r\n
\r\n

Je to bila krabicka s potiskem ve tvaru tuby od leku, predpokladam ze snadno nalezitelna. Z mista jde udelat krasna fotka kostela. Hodnoceni obtiznosti a terenu naprosto odpovida. Pri odlovu davejte pozor, hlavne po poledni a ve vsedni dny tam chodi spousty mladych smudlu, od/do nedaleke skoly. Na lavickach obcas vysedavaji duchodci, prinejhorsim chvilku pockejte, nebo si vemte s sebou kolegu na geomaskovani.

\r\n

Po odlovu doporucuji alespon nakouknout do kostela, v normalni denni dobu byva otevren pro verejnost. Nemuzete si ho sice prohlednout cely, ale zase nic neplatite ;)

\r\n

Jeste chci mnohokrat podekovat geotymu TheOnions ze mi umoznil umisteni kesky na toto misto a kacerovi Ivrys ktery mi poslal nejake historicke fotky kostela. Dekuji moc!

\r\n

\"hodoceni

\r\n

EDIT 7.1.2010: Ji\u017e potret\u00ed se z cache ztratila tu\u017eka, kterou jsem tam d\u00e1val. T\u00edmto v\u00e1m tedy d\u00e1v\u00e1m na vedom\u00ed, \u017ee pokud tu\u017eky budete \"vykr\u00e1dat\", tak tam \u017e\u00e1dn\u00e9 nebudou a budete si muset nosit vlastn\u00ed. TU\u017dKA NEN\u00cd NA TRADE! Ted, pri ctvrt\u00e9 v\u00fdmene logbooku d\u00e1v\u00e1m do ke\u0161e posledn\u00ed vlastn\u00ed tu\u017eku. D\u00edky za pochopen\u00ed.

\r\n

EDIT 18.8.2011: Celkova renovace krabicky + vlozena dalsi tuzka (navzdory predchozimu varovani jsem byl premluven od sponzora - IKEY :)

\r\n

EDIT 30.8.2011: Pridano hodnoceni kesky do listingu.

\r\n

EDIT 22.4.2012: Pros\u00edm, vracejte krabi\u010dku p\u0159esn\u011b na to sam\u00e9 m\u00edsto, kde byla p\u0159ed va\u0161\u00edm p\u0159\u00edchodem. Zku\u0161enost prav\u00ed, \u017ee sta\u010d\u00ed drobn\u00e1 zm\u011bna um\u00edst\u011bn\u00ed a ostatn\u00edm t\u00edm \u00fapln\u011b zkaz\u00edte hru. D\u011bkuji.

\r\n \r\n
\r\n \r\n \r\n \r\n

\r\n \r\n Additional Hints\r\n (Decrypt)

\r\n bxnc / ebar
\r\n

Decryption Key

A|B|C|D|E|F|G|H|I|J|K|L|M
-------------------------
N|O|P|Q|R|S|T|U|V|W|X|Y|Z

(letter above equals below, and vice versa)

\r\n
\r\n
\r\n


\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \n
\n \n Log geocache\n \n \n \n
\n\n\r\n \r\n \r\n
\r\n \r\n

\r\n Attributes\r\n

\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\t\t\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

\r\n Advertising with Us\r\n

\r\n \r\n \r\n\t
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \n
\n \n

\n Inventory\n

\n
\n \n \n
\r\n\t\t\n

There are no Trackables in this cache.

\n \r\n\t
\n \n\n \n
\n \n \n
\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n

\r\n  
\r\n \r\n \r\n

\r\n \r\n
\r\n\t\t\r\n
\r\n \r\n
\r\n
\r\n

\r\n View Larger Map\r\n

\r\n
\r\n
\r\n \r\n\t
\r\n \r\n

\r\n Find...\r\n
\r\n \r\n

\r\n \r\n

\r\n For online maps...\r\n

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \n\n\n\n\n\n\n\n\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n" + }, + "headers": { + "Cache-Control": [ + "no-cache" + ], + "Content-Length": [ + "111462" + ], + "Content-Type": [ + "text/html; charset=utf-8" + ], + "Date": [ + "Wed, 24 Aug 2022 20:12:48 GMT" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "Request-Context": [ + "appId=cid-v1:019d82c2-5dd7-44cb-aa94-01e052f0d40c" + ], + "Set-Cookie": [ + "gspkauth=; domain=.geocaching.com; expires=Sat, 24-Sep-2022 20:12:48 GMT; path=/; secure; HttpOnly", + "Culture=en-US; path=/; secure; HttpOnly" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN", + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://www.geocaching.com/geocache/GC1PAR2_kostel-panny-marie-ruzencove" + } + } + ], + "recorded_with": "betamax/0.8.1" +} \ No newline at end of file diff --git a/test/cassettes/cache_status_disabled.json b/test/cassettes/cache_status_disabled.json new file mode 100644 index 0000000..6c0560d --- /dev/null +++ b/test/cassettes/cache_status_disabled.json @@ -0,0 +1,168 @@ +{ + "http_interactions": [ + { + "recorded_at": "2022-08-24T20:12:46", + "request": { + "body": { + "encoding": "utf-8", + "string": "" + }, + "headers": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate" + ], + "Connection": [ + "keep-alive" + ], + "Cookie": [ + "gspkauth=; Culture=en-US; __RequestVerificationToken=" + ], + "User-Agent": [ + "python-requests/2.28.1" + ] + }, + "method": "GET", + "uri": "https://www.geocaching.com/seek/cache_details.aspx?wp=GC7Y77T" + }, + "response": { + "body": { + "encoding": "utf-8", + "string": "Object moved\r\n

Object moved to here.

\r\n\r\n" + }, + "headers": { + "Cache-Control": [ + "no-cache" + ], + "Content-Length": [ + "174" + ], + "Content-Type": [ + "text/html; charset=utf-8" + ], + "Date": [ + "Wed, 24 Aug 2022 20:12:45 GMT" + ], + "Expires": [ + "-1" + ], + "Location": [ + "https://www.geocaching.com/geocache/GC7Y77T_vojanovy-sady" + ], + "Pragma": [ + "no-cache" + ], + "Request-Context": [ + "appId=cid-v1:019d82c2-5dd7-44cb-aa94-01e052f0d40c" + ], + "Set-Cookie": [ + "gspkauth=; domain=.geocaching.com; expires=Sat, 24-Sep-2022 20:12:45 GMT; path=/; secure; HttpOnly", + "Culture=en-US; path=/; secure; HttpOnly" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Vary": [ + "Accept-Encoding" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1" + ] + }, + "status": { + "code": 301, + "message": "Moved Permanently" + }, + "url": "https://www.geocaching.com/seek/cache_details.aspx?wp=GC7Y77T" + } + }, + { + "recorded_at": "2022-08-24T20:12:48", + "request": { + "body": { + "encoding": "utf-8", + "string": "" + }, + "headers": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate" + ], + "Connection": [ + "keep-alive" + ], + "Cookie": [ + "gspkauth=; Culture=en-US; __RequestVerificationToken=" + ], + "User-Agent": [ + "python-requests/2.28.1" + ] + }, + "method": "GET", + "uri": "https://www.geocaching.com/geocache/GC7Y77T_vojanovy-sady" + }, + "response": { + "body": { + "encoding": "utf-8", + "string": "\r\n\r\n\r\n\r\n\r\n \r\n \r\n\tGC7Y77T Vojanovy sady (Unknown Cache) in Hlavn\u00ed m\u011bsto Praha, Czechia created by MiroslavRouta\r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\t\r\n\t\r\n\t\r\n
\r\n \r\n\r\n \r\n \r\n \r\n\r\n Skip to content\r\n\r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n
\r\n\t\r\n \r\n

Vojanovy sady Mystery Cache

\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n This cache is temporarily unavailable.\r\n
\r\n
\r\n

MiroslavRouta: Do v\u00fdm\u011bny LB

\n
\r\n \r\n More\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n\t\t\n

\n \n GC7Y77T\n \n \n \n

\n\r\n\t
\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\t\t\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\t
\r\n
\r\n \r\n \r\n \r\n \r\n Vojanovy sady\r\n \r\n
\r\n
\r\n
\r\n A cache by MiroslavRouta\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Message this owner\r\n \r\n
\r\n
\r\n Hidden\r\n :\r\n 27.11.2018\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Difficulty:
\r\n
\r\n \"1\r\n
\r\n
\r\n
\r\n
\r\n Terrain:
\r\n
\r\n \"1.5\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n

\r\n Size: \"Size: (regular)\r\n

\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n 726 \r\n \r\n Favorites\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n

\r\n\r\n \r\n\r\n

\r\n \r\n\r\n
\r\n
\r\n
\r\n

\r\n \r\n \r\n N 50\u00b0 05.292 E 014\u00b0 24.446\r\n \r\n \r\n
\r\n \r\n UTM: 33U E 457610 N 5548605
\r\n
\r\n

\r\n
\r\n
\r\n In Hlavn\u00ed m\u011bsto Praha, Czechia
\r\n \"W\" W 520.1 km from your home location\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Print:\r\n
\r\n
\r\n No Logs\r\n 5 Logs\r\n 10 Logs\r\n Driving Directions\r\n
\r\n
\r\n
\r\n
\r\n Download GPX\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n Please note Use of geocaching.com services is subject to the terms and conditions in our disclaimer.\r\n
\r\n \r\n \r\n \r\n \r\n

Geocache Description:

\r\n \r\n
\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n

\r\n Ahoj ka\u010de\u0159i! V\u00edt\u00e1m v\u00e1s na m\u00e9 dal\u0161\u00ed ke\u0161i. Tentokr\u00e1t v centru Prahy, na jednom z posledn\u00edch m\u00edst bez kolize - ve Vojanov\u00fdch sadech.
\r\n
\r\n Hello geocachers! Welcome on cache about Vojanovy sady!
\r\n
\r\n
\r\n
\r\n

\r\n


\r\nCo a kde to vlastn\u011b je?

\r\n
\r\nVojanovy sady jsou ve\u0159ejn\u00fd park na pra\u017esk\u00e9 Mal\u00e9 Stran\u011b v m\u011bstsk\u00e9 \u010d\u00e1sti Praha 1 ji\u017en\u011b od Kl\u00e1rova. N\u011bkdy jsou pova\u017eov\u00e1ny za nejstar\u0161\u00ed zahradu v Praze, proto\u017ee vznikla v 17. stolet\u00ed jako sou\u010d\u00e1st kl\u00e1\u0161tera karmelitek \u010d\u00e1ste\u010dn\u011b na m\u00edst\u011b zahrady zpustl\u00e9ho biskupsk\u00e9ho dvora zalo\u017een\u00e9ho ve 13. stolet\u00ed. Dne\u0161n\u00ed n\u00e1zev dostaly po roce 1954 po herci Eduardu Vojanovi, kter\u00fd se narodil nedaleko odtud v M\u00ed\u0161e\u0148sk\u00e9 ulici.
\r\n
\r\n

A nyn\u00ed trocha historie:

\r\n
\r\nHistorie zahrady sah\u00e1 a\u017e do st\u0159edov\u011bku, kdy prostor pat\u0159il k dvoru pra\u017esk\u00fdch biskup\u016f. Zahrada je vyobrazena ji\u017e roku 1685 na prospektu Prahy od Folperta van Ouden Allena jako lichob\u011b\u017en\u00edkov\u00fd pozemek se \u0161t\u011bpnic\u00ed. Jako uzav\u0159en\u00e1 kl\u00e1\u0161tern\u00ed zahrada, rozd\u011blen\u00e1 na okrasnou \u010d\u00e1st ke kontemplaci, ovocn\u00fd sad a z\u010d\u00e1sti na u\u017eitkovou zahradu zelin\u00e1\u0159skou byla zahrnuta do konceptu budov\u00e1n\u00ed kl\u00e1\u0161tera karmelitek u sv. Josefa ji\u017e po\u010d\u00e1tkem 80. let 17. stolet\u00ed. Karmelitky si zde daly postavit roku 1743 kapli sv. Terezie a roku 1747 kapli sv. Jana Nepomuck\u00e9ho.
\r\nPo zru\u0161en\u00ed kl\u00e1\u0161tera roku 1782 zahradu s kl\u00e1\u0161terem z\u00edskal \u00fastav anglick\u00fdch panen, kter\u00e9 zde po\u010d\u00e1tkem 19. stolet\u00ed v\u00fdsadbu a dosud symetrickou s\u00ed\u0165 cest zm\u011bnily na anglick\u00fd park s pot\u016f\u010dkem, baz\u00e9nkem a t\u016f\u0148kou. Park byl po\u0161kozen stoletou vodou roku 1890. Po sekularizaci roku 1920 byl park zmen\u0161en. Stavbou budovy ministerstva financ\u00ed byla z\u00e1padn\u00ed \u010d\u00e1st zahrady zabr\u00e1na a upraveny vodn\u00ed zdroje.
\r\nV roce 1954 do\u0161lo ke zp\u0159\u00edstupn\u011bn\u00ed zahrady ve\u0159ejnosti a k razantn\u00edm \u00faprav\u00e1m. Byly zru\u0161eny kaple, roz\u0161\u00ed\u0159eny a vyasfaltov\u00e1ny cesty. Vinou vandal\u016f do\u0161lo k poni\u010den\u00ed v\u00fdklenkov\u00fdch kapl\u00ed v ohradn\u00ed zdi a byla odstran\u011bna unik\u00e1tn\u00ed barokn\u00ed socha sv. Jana Nepomuck\u00e9ho, stoj\u00edc\u00edho na ryb\u011b. V letech 1979\u20132011 se o park staral Jind\u0159ich Pavli\u0161, kter\u00fd m\u011bl na starosti i o dal\u0161\u00ed parky na Mal\u00e9 Stran\u011b i jinde na Praze 1. Jeho p\u016fsoben\u00ed p\u0159ipom\u00edn\u00e1 pam\u011btn\u00ed deska ve Vojanov\u00fdch sadech
\r\nV 80.letech 20. stolet\u00ed byly sady zahrnuty do v\u00fdstavn\u00edho cyklu Malostransk\u00e9 dvorky. Tak\u00e9 v 90. letech pokra\u010dovala v\u00fdstavn\u00ed \u010dinnost, v baz\u00e9nku byly nap\u0159\u00edklad dlouhodob\u011b vystaveny sklolamin\u00e1tov\u00e9 sochy \u017een od Kurta Gebauera. Po povodni v roce 2002, kdy vltavsk\u00e1 voda zatopila sady do v\u00fd\u0161e a\u017e \u010dty\u0159 metr\u016f, musely b\u00fdt rekonstruov\u00e1ny.
\r\n
\r\n

Jakpak to tam vypad\u00e1?

\r\n
\r\nSady jsou na v\u0161ech stran\u00e1ch obklopeny stavbami \u2013 na v\u00fdchodn\u00ed, vstupn\u00ed stran\u011b odd\u011bleny od ulice U Lu\u017eick\u00e9ho semin\u00e1\u0159e vysokou barokn\u00ed zd\u00ed, na severu jsou p\u0159\u00edstupn\u00e9 skrz pal\u00e1c Thurn-Taxis\u016f a v z\u00e1padn\u00ed \u010d\u00e1sti ze t\u0159ech stran obklopeny budovami ministerstva financ\u00ed, kter\u00e9 tvo\u0159\u00ed b\u00fdval\u00fd barokn\u00ed karmel dopln\u011bn\u00fd za 1. republiky novostavbami Franti\u0161ka Roitha.
\r\nPark nem\u00e1 jednotn\u00fd, vyhran\u011bn\u00fd charakter. P\u0159eva\u017euje ovocn\u00fd sad a styl anglick\u00e9ho parku s okrasn\u00fdmi stromy, v zadn\u00ed \u010d\u00e1sti je vyv\u00fd\u0161en\u00e1 terasa s balustr\u00e1dou, kter\u00e1 m\u00e1 charakter kl\u00e1\u0161tern\u00ed zahrady s pergolou a centr\u00e1ln\u00ed ka\u0161nou. Krom\u011b toho jsou zde kv\u011btinov\u00e9 z\u00e1hony, v\u010del\u00ed \u00faly, mal\u00fd sklen\u00edk, jez\u00edrko, d\u011btsk\u00fd koutek, ve\u0159ejn\u00e9 toalety a tenisov\u00fd kurt. Vojanovy sady jsou proslul\u00e9 chovem p\u00e1v\u016f.
\r\nV sadech se nach\u00e1zej\u00ed t\u0159i barokn\u00ed kaple. Ran\u011b barokn\u00ed sv. Eli\u00e1\u0161e v podob\u011b grotty (um\u011bl\u00e9 jeskyn\u011b) s n\u00e1stropn\u00edmi obrazy ze \u017eivota proroka a znakem s orlic\u00ed nad vchodem; p\u016fvodn\u00ed vybaven\u00ed kaple chyb\u00ed. Vrcholn\u011b barokn\u00ed polygon\u00e1ln\u00ed kaple sv. Terezie z Avily asi z roku 1743, uvnit\u0159 zdoben\u00e1 freskami snad od Jana Karla Kov\u00e1\u0159e, na kupoli oslava sv. Terezie, na st\u011bn\u00e1ch iluzivn\u00ed malby. T\u0159et\u00ed stavbou je p\u0159esn\u011b nedatovan\u00e1 v\u00fdklenkov\u00e1 kaple sv. Jana Nepomuck\u00e9ho \u0161ikmo vystupuj\u00edc\u00ed z ohradn\u00ed zdi. V\u00fdklenky jsou komponov\u00e1ny v os\u00e1ch zahradn\u00edch cest, v hlavn\u00edm v\u00fdklenku jsou poz\u016fstatky v\u00fdzdoby (reli\u00e9fn\u00ed, n\u00e1st\u011bnn\u00e9 malby) a st\u00e1vala zde socha sv. Jana na ryb\u011b od Ign\u00e1ce Franti\u0161ka Platzera z roku 1749 (dnes v Galerii hl. m. Prahy), v bo\u010dn\u00edm v\u00fdklenku jsou dve\u0159e na (ve\u0159ejn\u011b nep\u0159\u00edstupn\u00e9) schodi\u0161t\u011b na vyhl\u00eddkovou terasu nad kapl\u00ed.
\r\nV kapli sv. Eli\u00e1\u0161e byla 1663 poh\u0159bena zakladatelka pra\u017esk\u00e9ho karmelitsk\u00e9ho kl\u00e1\u0161tera, ctihodn\u00e1 Elekta, jej\u00ed\u017e \u201ez\u00e1zra\u010dn\u011b neporu\u0161en\u00e9\u201c (p\u0159irozen\u011b mumifikovan\u00e9) t\u011blo je dnes vystaveno v karmelit\u00e1nsk\u00e9m kostele sv. Benedikta na Hrad\u010danech.
\r\n

\r\n
\r\n
\r\n
\r\n

What is it?

\r\n
\r\nVojanovy sady (Vojanovy Gardens) rank due its size of 2,5 hectars among the smallest and at the same time nicest and oldest Prague\u00b4s gardens. They are located in the very centre of the historical Prague. The gardens are surrounded by a high build-up area of houses and walls which protect them from the city noice and create a completely intimate ambient. The first impression a visitor gets is total silence and peace. Should the visitor have an a priori feeling that it is necessary to see free nature or have an attractive view this impression will pass soon. He/she feels will namely feel perfectly alone in these gardens.
\r\n
\r\n

History

\r\n
\r\nThe garden was founded together with the Bishop\u00b4s Court originally as an orchard already in 1248. Its area was definitely defined by the two palaces from the North by the Thurn-Taxis Palace and Windisch-Gr\u00e4tz Palace and by the church of St. Joseph from the West which is part of the convent of the Barefoot Carmelites. A great part of the estate buildings was destroyed during the Hussite wars and the garden was parcelled and sold to Prague\u00b4s citizens. Only under Ferdinand III in the middle of the 17th century it was bought back again, reunited as a plot and donated for the use to the Barefoot Carmelites. They gradually built their own convent and church of St. Joseph in the premises and a richly decorated chapel of St. Elias in the garden. The garden was solely used as an orchard at that time. Gradually some new buildings and structurally-decorative elements occured in the garden such as the Baroque chapel of Santa Teresa and by a staircase separated view terrace. At the end of the 18th century the garden became the property of the society of the English Virgins and it also received another purpose. It was slowly turned from a fruit garden into an English park and the appropriate modifications were also changing its appearance. Newly a fish pond, decorative coniferous trees and other decorative park trees occured. In 1921 the garden became the property of the independent Czechoslovakian state and became part of the premises of the Ministry of Finances. It was deteriorating for a while and only in 1954 it was definitively opened to the public. Some more architectural historical gems such as a quarterfoil-shaped fountain or a sun dial had were discovered and gradually sensibly restored and put into operation and are currently opened for sightseeing.
\r\n
\r\n

Description

\r\n
\r\nThe garden was founded together with the Bishop\u00b4s Court originally as an orchard already in 1248. Its area was definitely defined by the two palaces from the North by the Thurn-Taxis Palace and Windisch-Gr\u00e4tz Palace and by the church of St. Joseph from the West which is part of the convent of the Barefoot Carmelites. A great part of the estate buildings was destroyed during the Hussite wars and the garden was parcelled and sold to Prague\u00b4s citizens. Only under Ferdinand III in the middle of the 17th century it was bought back again, reunited as a plot and donated for the use to the Barefoot Carmelites. They gradually built their own convent and church of St. Joseph in the premises and a richly decorated chapel of St. Elias in the garden. The garden was solely used as an orchard at that time. Gradually some new buildings and structurally-decorative elements occured in the garden such as the Baroque chapel of Santa Teresa and by a staircase separated view terrace. At the end of the 18th century the garden became the property of the society of the English Virgins and it also received another purpose. It was slowly turned from a fruit garden into an English park and the appropriate modifications were also changing its appearance. Newly a fish pond, decorative coniferous trees and other decorative park trees occured. In 1921 the garden became the property of the independent Czechoslovakian state and became part of the premises of the Ministry of Finances. It was deteriorating for a while and only in 1954 it was definitively opened to the public. Some more architectural historical gems such as a quarterfoil-shaped fountain or a sun dial had were discovered and gradually sensibly restored and put into operation and are currently opened for sightseeing.
\r\n
\r\n
\r\n
\r\n

Ke\u0161

\r\n
\r\nKe\u0161 naleznete na \u00favodn\u00edch sou\u0159adnic\u00edch. K\u00f3d k jej\u00edmu otev\u0159en\u00ed je 225.
\r\nKe\u0161 NEN\u00cd 24/7! Otev\u00edrac\u00ed doba zde:
\r\nprosinec \u2013 leden po - ne 08.00 \u2013 16.00
\r\n\u00fanor \u2013 b\u0159ezen po - ne 08.00 \u2013 17.00
\r\nduben \u2013 z\u00e1\u0159\u00ed po - ne 08.00 \u2013 19.00
\r\n\u0159\u00edjen \u2013 listopad po - ne 08.00 \u2013 17.00
\r\n
\r\nD\u011bkuji geopavkovi za v\u00fdrobu schr\u00e1nky!
\r\n
\r\n\u010cesk\u00e1 \u010d\u00e1st listingu byla p\u0159evzata z https://cs.wikipedia.org/wiki/Vojanovy_sady.
\r\n
\r\n
\r\n

Cache

\r\n
\r\nCache is placed at starting coordinates. Code is 225.
\r\nCache IS NOT 24/7. Opening hours:
\r\nDecember \u2013 January Whole week 08.00 \u2013 16.00
\r\nFebruary \u2013 March Whole week 08.00 \u2013 17.00
\r\nApril \u2013 September Whole week 08.00 \u2013 19.00
\r\nOctober \u2013 November Whole week 08.00 \u2013 17.00
\r\n
\r\nThank geopavka very much for the production of the cache!
\r\n
\r\nEnglish part of the listing was taken over http://www.praguecityline.com/prague-monuments/vojanovy-gardens.
Mapa s\u00e9rie PraGeo / Map of PraGeo series.
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n

\r\n \r\n Additional Hints\r\n (Decrypt)

\r\n [CZ]: cbyrab an fgebzr; xbq 225
[EN]: ybt ba gur gerr; pbqr 225
\r\n

Decryption Key

A|B|C|D|E|F|G|H|I|J|K|L|M
-------------------------
N|O|P|Q|R|S|T|U|V|W|X|Y|Z

(letter above equals below, and vice versa)

\r\n
\r\n
\r\n


\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \n
\n \n Log geocache\n \n \n \n
\n\n\r\n \r\n \r\n
\r\n \r\n

\r\n Attributes\r\n

\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\t\t\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

\r\n Advertising with Us\r\n

\r\n \r\n \r\n\t
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \n
\n \n

\n Inventory\n

\n
\n \n \n \n \n \n \n\n \n
\n \n \n
\n\r\n \n
\n

\n Bookmark Lists\n

\n
\n \n \n \n

\n View all 6 bookmark lists...\n

\n
\n
\n\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n

\r\n Additional Waypoints 
\r\n \r\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n  \n \n  \n \n Prefix\n \n Lookup\n \n Name\n \n Coordinate\n
\n \"Visible\"\n \n \"Final\n \n \n FN\n \n \n \n Final (Final Location)\n \n N 50\u00b0 05.292 E 014\u00b0 24.446 \n \n
\n  \n \n Note:\n \n K\u00f3d / Code 225\n
\n \"Visible\"\n \n \"Trailhead\"\n \n \n VS\n \n \n \n Vstup / Entry (Trailhead)\n \n N 50\u00b0 05.329 E 014\u00b0 24.578 \n \n
\n  \n \n Note:\n \n \n
\n \n

\n Show Hidden Waypoints\n Hide Hidden Waypoints\n \n

\n\n\n\r\n

\r\n \r\n
\r\n\t\t\r\n
\r\n \r\n
\r\n
\r\n

\r\n View Larger Map\r\n

\r\n
\r\n
\r\n \r\n\t
\r\n \r\n

\r\n Find...\r\n
\r\n \r\n

\r\n \r\n

\r\n For online maps...\r\n

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \n\n\n\n\n\n\n\n\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n" + }, + "headers": { + "Cache-Control": [ + "no-cache" + ], + "Content-Length": [ + "137108" + ], + "Content-Type": [ + "text/html; charset=utf-8" + ], + "Date": [ + "Wed, 24 Aug 2022 20:12:46 GMT" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "Request-Context": [ + "appId=cid-v1:019d82c2-5dd7-44cb-aa94-01e052f0d40c" + ], + "Set-Cookie": [ + "gspkauth=; domain=.geocaching.com; expires=Sat, 24-Sep-2022 20:12:46 GMT; path=/; secure; HttpOnly", + "Culture=en-US; path=/; secure; HttpOnly" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN", + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://www.geocaching.com/geocache/GC7Y77T_vojanovy-sady" + } + } + ], + "recorded_with": "betamax/0.8.1" +} \ No newline at end of file diff --git a/test/cassettes/cache_status_enabled.json b/test/cassettes/cache_status_enabled.json new file mode 100644 index 0000000..5a97255 --- /dev/null +++ b/test/cassettes/cache_status_enabled.json @@ -0,0 +1,168 @@ +{ + "http_interactions": [ + { + "recorded_at": "2022-08-24T20:12:37", + "request": { + "body": { + "encoding": "utf-8", + "string": "" + }, + "headers": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate" + ], + "Connection": [ + "keep-alive" + ], + "Cookie": [ + "gspkauth=; __RequestVerificationToken=" + ], + "User-Agent": [ + "python-requests/2.28.1" + ] + }, + "method": "GET", + "uri": "https://www.geocaching.com/seek/cache_details.aspx?wp=GC8CKQQ" + }, + "response": { + "body": { + "encoding": "utf-8", + "string": "Object moved\r\n

Object moved to here.

\r\n\r\n" + }, + "headers": { + "Cache-Control": [ + "no-cache" + ], + "Content-Length": [ + "171" + ], + "Content-Type": [ + "text/html; charset=utf-8" + ], + "Date": [ + "Wed, 24 Aug 2022 20:12:37 GMT" + ], + "Expires": [ + "-1" + ], + "Location": [ + "https://www.geocaching.com/geocache/GC8CKQQ_kohinoorka" + ], + "Pragma": [ + "no-cache" + ], + "Request-Context": [ + "appId=cid-v1:019d82c2-5dd7-44cb-aa94-01e052f0d40c" + ], + "Set-Cookie": [ + "gspkauth=; domain=.geocaching.com; expires=Sat, 24-Sep-2022 20:12:37 GMT; path=/; secure; HttpOnly", + "Culture=en-US; path=/; secure; HttpOnly" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Vary": [ + "Accept-Encoding" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1" + ] + }, + "status": { + "code": 301, + "message": "Moved Permanently" + }, + "url": "https://www.geocaching.com/seek/cache_details.aspx?wp=GC8CKQQ" + } + }, + { + "recorded_at": "2022-08-24T20:12:45", + "request": { + "body": { + "encoding": "utf-8", + "string": "" + }, + "headers": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate" + ], + "Connection": [ + "keep-alive" + ], + "Cookie": [ + "gspkauth=; __RequestVerificationToken=; Culture=en-US" + ], + "User-Agent": [ + "python-requests/2.28.1" + ] + }, + "method": "GET", + "uri": "https://www.geocaching.com/geocache/GC8CKQQ_kohinoorka" + }, + "response": { + "body": { + "encoding": "utf-8", + "string": "\r\n\r\n\r\n\r\n\r\n \r\n \r\n\tGC8CKQQ Kohinoorka (Traditional Cache) in Hlavn\u00ed m\u011bsto Praha, Czechia created by haj\u00edci\r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\t\r\n\t\r\n\t\r\n
\r\n \r\n\r\n \r\n \r\n \r\n\r\n Skip to content\r\n\r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n
\r\n\t\r\n \r\n

Kohinoorka Traditional Geocache

\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\t\t\n

\n \n GC8CKQQ\n \n \n \n

\n\r\n\t
\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\t\t\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\t
\r\n
\r\n \r\n \r\n \r\n \r\n Kohinoorka\r\n \r\n
\r\n
\r\n
\r\n A cache by haj\u00edci\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Message this owner\r\n \r\n
\r\n
\r\n Hidden\r\n :\r\n 24.8.2019\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Difficulty:
\r\n
\r\n \"2\r\n
\r\n
\r\n
\r\n
\r\n Terrain:
\r\n
\r\n \"2\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n

\r\n Size: \"Size: (small)\r\n

\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n 15 \r\n \r\n Favorites\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n

\r\n\r\n \r\n\r\n

\r\n \r\n\r\n
\r\n
\r\n
\r\n

\r\n \r\n \r\n N 50\u00b0 04.052 E 014\u00b0 27.634\r\n \r\n \r\n
\r\n \r\n UTM: 33U E 461394 N 5546278
\r\n
\r\n

\r\n
\r\n
\r\n In Hlavn\u00ed m\u011bsto Praha, Czechia
\r\n \"W\" W 515.8 km from your home location\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Print:\r\n
\r\n
\r\n No Logs\r\n 5 Logs\r\n 10 Logs\r\n Driving Directions\r\n
\r\n
\r\n
\r\n
\r\n Download GPX\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n Please note Use of geocaching.com services is subject to the terms and conditions in our disclaimer.\r\n
\r\n \r\n \r\n \r\n \r\n

Geocache Description:

\r\n \r\n
\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n

\u00a0

\r\n

O ke\u0161ce

\r\n

Tato ke\u0161 V\u00e1s m\u00e1 sezn\u00e1mit bl\u00ed\u017ee s histori\u00ed firmy KOH-I- NOOR, jej\u00ed\u017e tov\u00e1rna se zde nach\u00e1zela a proslavila

\r\n

Jezd\u00edte-li tramvaj\u00ed Vr\u0161ovicemi, \u010dasto m\u00edj\u00edte zast\u00e1vku s\u00a0n\u00e1zvem Koh-i-noor. Mo\u017en\u00e1 se v\u00e1m p\u0159i tom v\u00a0hlav\u011b objev\u00ed obraz barevn\u00fdch pastelek. Chyba. Tov\u00e1rna Koh-i-noor v ulici Vr\u0161ovick\u00e1, podle kter\u00e9 je zast\u00e1vka pojmenovan\u00e1, v\u016fbec psac\u00ed pot\u0159eby nevyr\u00e1b\u00ed a ani nevyr\u00e1b\u011bla.

\r\n

Historie firmy

\r\n
\u00a0
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

V roce 1900 ode\u0161el od hole\u0161ovick\u00e9 firmy Lokesch a syn mechanik Hynek Puc a zalo\u017eil si v Hole\u0161ovic\u00edch vlastn\u00ed d\u00edlnu na v\u00fdrobu reg\u00e1lov\u00fdch \u0161t\u00edtk\u016f, kovov\u00fdch nap\u00edn\u00e1\u010dk\u016f a ozdob na v\u00e1no\u010dn\u00ed stromky. V \u010dervenci roku 1902 se k n\u011bmu p\u0159id\u00e1v\u00e1 Jind\u0159ich Waldes, b\u00fdval\u00fd obchodn\u00ed cestuj\u00edc\u00ed Lokeschovy tov\u00e1rny a spolu zakl\u00e1daj\u00ed ve\u0159ejnou obchodn\u00ed spole\u010dnost. Firma vyr\u00e1b\u011bla drobn\u00e9 kovov\u00e9 zbo\u017e\u00ed. V d\u00edln\u011b s nimi pracoval jeden d\u011bln\u00edk a jeden u\u010de\u0148. Na sklonku t\u00e9ho\u017e roku spole\u010dn\u00edci p\u0159est\u011bhovali v\u00fdrobu do pronajat\u00e9 budovy b\u00fdval\u00e9 tov\u00e1rny na sv\u00ed\u010dky v Karl\u00edn\u011b. Tehdy p\u0159istoupil ke spole\u010dnosti t\u0159et\u00ed spole\u010dn\u00edk-obchodn\u00edk Eduard Merzinger, kter\u00fd do podniku vlo\u017eil 20 tis\u00edc rakousk\u00fdch korun vyhran\u00fdch v loterii.

\r\n

Hlavn\u00edm v\u00fdrobn\u00edm artiklem t\u00e9to d\u00edlni\u010dky byl velmi m\u00f3dn\u00ed stiskac\u00ed knofl\u00edk a pr\u00e1v\u011b jemu d\u011bkuje firma Waldes a spol. za sv\u016fj t\u00e9m\u011b\u0159 z\u00e1vratn\u00fd vzestup. Stiskac\u00ed knofl\u00edk vyr\u00e1b\u011bla konkurence slo\u017eit\u00fdm postupem, v n\u011bm\u017e p\u0159evl\u00e1daly ru\u010dn\u00ed operace. Z\u00e1sluhou automatick\u00e9ho stroje zkonstruovan\u00e9ho Hynkem Pucem v roce 1903 byla ru\u010dn\u00ed mont\u00e1\u017e stiskac\u00edho knofl\u00edku pomoc\u00ed pinzety nahrazena strojn\u00edm vkl\u00e1d\u00e1n\u00edm pru\u017einy do p\u00e9rov\u00e9 \u010d\u00e1sti knofl\u00edku, co\u017e umo\u017enilo neb\u00fdval\u00e9 zv\u00fd\u0161en\u00ed v\u00fdroby. Ta rostla takovou m\u011brou, \u017ee u\u017e po t\u0159ech letech od zah\u00e1jen\u00ed v\u00fdroby patentek st\u00e1vaj\u00edc\u00ed prostory nesta\u010dily a proto v dubnu 1907 byla v\u00fdroba p\u0159evedena do nov\u00e9 tov\u00e1rny postaven\u00e9 ve Vr\u0161ovic\u00edch. Na svoji dobu byla pokrokov\u011b \u0159e\u0161ena: vysok\u00e9 a vzdu\u0161n\u00e9 m\u00edstnosti, \u0161atny pro mu\u017ee i \u017eeny, l\u00e1zn\u011b, knihovna, t\u011blocvi\u010dna a okolo tov\u00e1rny par\u010d\u00edk s lavi\u010dkami a r\u016fzn\u00fdm t\u011blocvi\u010dn\u00fdm n\u00e1\u0159ad\u00edm. S modernizac\u00ed tov\u00e1rny rostlo i tempo v\u00fdroby, a to hlavn\u011b d\u00edky st\u00e1le se zdokonaluj\u00edc\u00edm speci\u00e1ln\u00edm stroj\u016fm a n\u00e1stroj\u016fm, je\u017e si podnik s\u00e1m konstruoval a vyr\u00e1b\u011bl a kter\u00e9 jej po technick\u00e9 str\u00e1nce stav\u011bly do \u010dela v\u00fdrobc\u016f lehk\u00e9ho kovov\u00e9ho zbo\u017e\u00ed. Jak pokrokov\u00e1 byla konstrukce t\u011bchto stroj\u016f dokazuje mj. pr\u00e1v\u011b automatick\u00e1 zakl\u00e1da\u010dka. Tento stroj po n\u011bkolika m\u00e1lo \u00faprav\u00e1ch nikoli z\u00e1sadn\u00edho r\u00e1zu vyhovuje i dne\u0161n\u00edm, velmi n\u00e1ro\u010dn\u00fdm po\u017eadavk\u016fm v\u00fdroby a tot\u00e9\u017e plat\u00ed i o \u0159ad\u011b postupov\u00fdch n\u00e1stroj\u016f, jejich\u017e konstrukce nebyla ani v\u00fdvojem mnoha desetilet\u00ed p\u0159edsti\u017eena.

\r\n

Obchodn\u00edk Jind\u0159ich Waldes nazval stiskac\u00ed knofl\u00edk KOH-I-NOOR \u2013 podle \u00fadajn\u011b nejv\u011bt\u0161\u00edho diamantu na sv\u011bt\u011b, kter\u00fd v\u00e1\u017eil 186 kar\u00e1t\u016f. Star\u00e1 pov\u011bst vypr\u00e1v\u00ed, \u017ee drahokam stejn\u00e9ho jm\u00e9na byl um\u00edst\u011bn v oku staroindick\u00e9ho boha. Kdy\u017e k\u00e1men poprv\u00e9 vid\u011bli per\u0161t\u00ed dobyvatel\u00e9 Indie proti slunci zvolali \u201eKOH-I-NOOR\u201c (\u010desky \u201ehora sv\u011btla\u201c). Odtud tedy jeho n\u00e1zev. Po mnoh\u00fdch dobrodru\u017estv\u00edch spojen\u00fdch s vra\u017edami, mu\u010den\u00edm a v\u011bzn\u011bn\u00edm jeho majitel\u016f jej darem dostala anglick\u00e1 kr\u00e1lovna Viktorie. Diamant byl v kr\u00e1lovsk\u00e9m klenotnictv\u00ed p\u0159ebrou\u0161en (jeho hmotnost klesla na 106 kar\u00e1t\u016f) a je zasazen\u00fd v korun\u011b anglick\u00e9 kr\u00e1lovny. Pojmenov\u00e1n\u00ed patentn\u00edho knofl\u00edku byl jeden ze skv\u011bl\u00fdch mana\u017eersk\u00fdch a strategick\u00fdch tah\u016f pana Waldese. Obr\u00e1zek patentky s vyra\u017een\u00fdmi p\u00edsmeny K-I-N byl pou\u017e\u00edv\u00e1n jako obchodn\u00ed zna\u010dka, s jej\u00ed\u017e pomoc\u00ed firma expandovala na zahrani\u010dn\u00ed trhy (zalo\u017een\u00ed pobo\u010dek v Dr\u00e1\u017e\u010fanech \u2013 r. 1904, Var\u0161av\u011b \u2013 r. 1908, Pa\u0159\u00ed\u017ei \u2013 r. 1911, New Yorku \u2013 r.1912). Pr\u00e1v\u011b pro reklamn\u00ed kampa\u0148 ve Spojen\u00fdch st\u00e1tech vzniklo sv\u011btozn\u00e1m\u00e9 logo firmy \u201eMISS KIN\u201c \u2013 obraz d\u00edvky s patentkou KOH-I-NOOR na m\u00edst\u011b oka. Traduje se, \u017ee ke vzniku loga do\u0161lo na palub\u011b zaoce\u00e1nsk\u00e9 lodi p\u0159i plavb\u011b do Ameriky, kdy jednu z cestuj\u00edc\u00edch v dobr\u00e9m rozmaru napadlo p\u0159ilo\u017eit si k lev\u00e9mu oku m\u00edsto monoklu reklamn\u00ed vzorek zv\u011bt\u0161en\u00e9ho patentn\u00edho knofl\u00edku. Pro Waldese se stal tento rozpustil\u00fd kousek okam\u017eitou inspirac\u00ed, d\u00edvku vyfotografoval a jeho p\u0159\u00e1tel\u00e9 mal\u00ed\u0159 Franti\u0161ek Kupka a Vojt\u011bch Preissig ud\u011blali z MISS KIN nov\u00e9 logo.

\r\n

Rozkv\u011bt firmy Waldes a spol. byl p\u0159eru\u0161en n\u011bmeckou okupac\u00ed v roce 1939, v t\u00e9to dob\u011b se tov\u00e1rna p\u0159ejmenovala podle sv\u00e9ho hlavn\u00edho v\u00fdrobku na KOH-I-NOOR.

\r\n

Vzestup podniku p\u0159eru\u0161ila okupace a arizace \u017eidovsk\u00e9ho majetku v\u00a0roce 1939. Veden\u00ed z\u00e1vod\u016f se uj\u00edmali tzv. Treuh\u00e4nd\u0159i. Tov\u00e1rna v\u00a0Praze byla zap\u0159a\u017eena do \u0159\u00ed\u0161sk\u00e9 v\u00e1le\u010dn\u00e9 ma\u0161inerie, v\u00a0osazenstvu v\u0161ak doutnal odpor proti okupant\u016fm. Doch\u00e1zelo k\u00a0sabot\u00e1\u017en\u00edm akc\u00edm, v\u00a0roce 1940 zni\u010dil po\u017e\u00e1r horn\u00ed \u010d\u00e1st budovy mechanick\u00fdch d\u00edlen.

\r\n

V\u00a0kv\u011btnu 1945 p\u0159ebral spr\u00e1vu z\u00e1vodu revolu\u010dn\u00ed v\u00fdbor, sestaven\u00fd v\u00a0ilegalit\u011b, od \u0159\u00edjna t\u00e9ho\u017e roku byl podnik zn\u00e1rodn\u011bn. B\u011bhem n\u00e1sleduj\u00edc\u00edch dvou let byly p\u0159i\u010dlen\u011bny dal\u0161\u00ed zn\u00e1rodn\u011bn\u00e9 z\u00e1vody v\u00a0pohrani\u010d\u00ed. Ke konci roku 1948 m\u011bl KOH-I-NOOR, spojen\u00e9 kovopr\u016fmyslov\u00e9 z\u00e1vody, n\u00e1rodn\u00ed podnik Praha, celkem 45 v\u00fdrobn\u00edch z\u00e1vod\u016f.
\r\nP\u0159es nep\u0159\u00edzniv\u00e9 okolnosti, s\u00a0nimi\u017e se podnik pot\u00fdkal (jako typick\u00fd p\u0159edstavitel v\u00fdroby lehk\u00e9ho pr\u016fmyslu nemohl po\u010d\u00edtat s\u00a0rozvojov\u00fdmi fondy ze st\u00e1tn\u00edho rozpo\u010dtu) se i nad\u00e1le rozv\u00edjel a rok od roku zvy\u0161oval objem v\u00fdroby. V\u00fdvoz jeho v\u00fdrobk\u016f sm\u011b\u0159oval do 80 zem\u00ed sv\u011bta. V\u00a0t\u00e9 dob\u011b pat\u0159ily k\u00a0z\u00e1kladn\u00edmu z\u00e1vodu v\u00a0Praze t\u0159i pobo\u010dn\u00e9 z\u00e1vody v\u00a0Budyni nad Oh\u0159\u00ed, Mlad\u00e9 Vo\u017eici a v\u00a0Kadani. N\u00e1rodn\u00ed podnik KOH-I-NOOR byl jeden z\u00a0nejv\u011bt\u0161\u00edch pov\u00e1le\u010dn\u00fdch v\u00fdrobc\u016f stroj\u00edrensk\u00e9ho spot\u0159ebn\u00edho zbo\u017e\u00ed v\u00a0\u010cSSR.
\r\nZ\u00e1kladn\u00ed z\u00e1vod podniku KOH-I-NOOR v\u00a0Praze se stal p\u0159\u00edm\u00fdm pokra\u010dovatelem firmy Waldes a spol. V\u00a0are\u00e1lu tohoto z\u00e1vodu byl z\u0159\u00edzen i technologick\u00fd z\u00e1vod, kter\u00fd zaji\u0161\u0165oval v\u00fdrobu stroj\u016f a za\u0159\u00edzen\u00ed, n\u00e1stroj\u016f, p\u0159\u00edpravk\u016f a forem nejen pro vlastn\u00ed pot\u0159eby, ale i pro extern\u00ed zak\u00e1zky. N\u00e1rodn\u00edmu podniku KOH-I-NOOR bylo v\u00a0roce 1967 ud\u011bleno nejvy\u0161\u0161\u00ed vyznamen\u00e1n\u00ed \u0158\u00c1D PR\u00c1CE a v\u00a0t\u00e9m\u017ee roce obdr\u017eel podnik jako prvn\u00ed v\u00a0republice \u010ceskoslovenskou cenu m\u00edru.

\r\n

Po roce 1980 \u0159e\u0161il podnik KOH-I-NOOR z\u00e1va\u017en\u00e9 organiza\u010dn\u00ed a v\u00fdrobn\u00ed probl\u00e9my, souvisej\u00edc\u00ed s\u00a0omezen\u00edm materi\u00e1lov\u00fdch zdroj\u016f, sn\u00ed\u017een\u00edm stavu pracovn\u00edk\u016f a pos\u00edlen\u00edm v\u00fdroby pro fin\u00e1ln\u00ed odbytov\u00e9 kategorie. Mezi hlavn\u00ed c\u00edle rozvoje podniku pat\u0159ila postupn\u00e1 modernizace v\u00fdrobn\u00ed z\u00e1kladny, prohlouben\u00ed vlivu technick\u00e9ho rozvoje ve v\u0161ech oblastech \u010dinnosti podniku \u2013 zejm\u00e9na ve sni\u017eov\u00e1n\u00ed pracnosti a spot\u0159eby materi\u00e1lu a energie a inovace v\u00fdrobn\u00edho programu. Po roce 1985 byly jednotliv\u00fdm z\u00e1vod\u016fm podniku KOH-I-NOOR ur\u010deny nov\u00e9 v\u00fdrobn\u00ed programy.

\r\n

Sou\u010dasnost

\r\n

Spole\u010dnost KOH-I-NOOR HARDTMUTH je v sou\u010dasnosti jedn\u00edm z nejv\u011bt\u0161\u00edch sv\u011btov\u00fdch producent\u016f a distributor\u016f um\u011bleck\u00fdch, \u0161koln\u00edch a kancel\u00e1\u0159sk\u00fdch pot\u0159eb. Je sou\u010d\u00e1st\u00ed skupiny KOH-I-NOOR holding a.s. Sou\u010d\u00e1st\u00ed spole\u010dnosti je i z\u00e1vod 7 Logarex, kter\u00fd se zam\u011b\u0159uje na v\u00fdrobu plastov\u00fdch prav\u00edtek\u00a0 a jin\u00fdch plastov\u00fdch v\u011bc\u00ed.

\r\n

Podnik zalo\u017eil Josef Hardtmuth roku 1790 ve V\u00eddni, odkud byla v\u00fdroba grafitov\u00fdch jader roku 1848 p\u0159esunuta Carlem Hardtmuthem do \u010cesk\u00fdch Bud\u011bjovic. Tu\u017eky KOH-I-NOOR slavily postupn\u011b \u00fasp\u011bchy na r\u016fzn\u00fdch sv\u011btov\u00fdch v\u00fdstav\u00e1ch. Ocen\u011bn\u00ed si do \u010cech p\u0159ivezly z mnoha sv\u011btov\u00fdch v\u00fdstav, nap\u0159\u00edklad roku 1855 z New Yorku, roku 1856, 1900 a 1925 z Pa\u0159\u00ed\u017ee, 1862 z Lond\u00fdna, 1882 z V\u00eddn\u011b nebo roku 1905 z Mil\u00e1na. V sou\u010dasn\u00e9 dob\u011b je v\u016fbec nejv\u011bt\u0161\u00edm v\u00fdrobcem sv\u00e9ho druhu ve st\u0159edn\u00ed a v\u00fdchodn\u00ed Evrop\u011b. Ochrann\u00e1 zn\u00e1mka KOH-I-NOOR byla poprv\u00e9 zaregistrov\u00e1na v roce 1894 a dnes je chr\u00e1n\u011bna v 73 zem\u00edch sv\u011bta. Spole\u010dnost nab\u00edz\u00ed v\u00edce ne\u017e 4 500 r\u016fzn\u00fdch produkt\u016f ur\u010den\u00fdch pro \u0161koln\u00ed, kancel\u00e1\u0159sk\u00e9, technick\u00e9 a um\u011bleck\u00e9 vyu\u017eit\u00ed, jen\u017e jsou prod\u00e1v\u00e1ny ve v\u00edce ne\u017e 65 zem\u00edch sv\u011bta.

\r\n

V pr\u016fb\u011bhu let se k v\u00fdrob\u011b grafitov\u00fdch tuh p\u0159idal kompletn\u00ed sortiment zbo\u017e\u00ed ve \u010dty\u0159ech z\u00e1kladn\u00edch \u0159ad\u00e1ch: um\u011bleck\u00fd sortiment (ART), \u0161koln\u00ed sortiment (SCHOOL), kancel\u00e1\u0159sk\u00fd sortiment (OFFICE) a sortiment pro voln\u00fd \u010das (HOBBY). Strukturu a \u0161\u00ed\u0159i jednotliv\u00fdch kategori\u00ed ur\u010duj\u00ed pot\u0159eby vznikaj\u00edc\u00ed v jednotliv\u00fdch kategori\u00edch. Znamen\u00e1 to, \u017ee spole\u010dnost KOH-I-NOOR HARDTMUTH a.s. neust\u00e1le sleduje v\u00fdvojov\u00e9 a m\u00f3dn\u00ed trendy v oboru a sv\u00e9 produktov\u00e9 \u0159ady neust\u00e1le aktualizuje a dopl\u0148uje podle nov\u011b vznikaj\u00edc\u00edch po\u017eadavk\u016f.

\r\n

V nab\u00eddce spole\u010dnosti je v\u00edce ne\u017e 4500 druh\u016f zbo\u017e\u00ed \u2013 nejen tu\u017eky, ale i uhly, rudky, pastely, pastelky, k\u0159\u00eddy, olejov\u00e9, temperov\u00e9 a vodov\u00e9 barvy, tu\u0161e, velk\u00fd v\u00fdb\u011br psac\u00edch a r\u00fdsovac\u00edch pot\u0159eb, pry\u017ee a celou \u0159adu dal\u0161\u00edch pom\u016fcek.

\r\n

V roce 2007 uskute\u010dnil KOH-I-NOOR holding a.s. dom\u00e1c\u00ed i zahrani\u010dn\u00ed akvizice. Do holdingu byly za\u010dlen\u011bny v\u00fdrobn\u00ed z\u00e1vody PONAS v Poli\u010dce a bulharsk\u00fd HEMUS se s\u00eddlem v Burgasu. N\u00e1stroj\u00e1rna Ponas, nyn\u00ed ji\u017e pod nov\u00fdm n\u00e1zvem KOH-I-NOOR PONAS s.r.o., se v\u011bnuje v\u00fdrob\u011b vst\u0159ikovac\u00edch a vyfukovac\u00edch forem. Ve firm\u011b jsou zavedeny v\u0161echny dostupn\u00e9 modern\u00ed technologie \u2013 v konstrukci syst\u00e9my CAD-CAM, ve v\u00fdrob\u011b modern\u00ed CNC stroje. V\u00fdroba je zam\u011b\u0159ena na technologick\u00e9 v\u00fdlisky z oblasti automobilov\u00e9ho pr\u016fmyslu, elektrotechnick\u00e9ho pr\u016fmyslu, zdravotnictv\u00ed a obalov\u00e9 techniky. Bulharsk\u00fd z\u00e1vod HEMUS, v sou\u010dasnosti KOH-I-NOOR HemusMark AD, m\u00e1 na Balk\u00e1n\u011b v\u00edce ne\u017e osmdes\u00e1tiletou tradici. Zam\u011b\u0159uje se na v\u00fdrobu \u0161koln\u00edch a kancel\u00e1\u0159sk\u00fdch popisova\u010d\u016f, zna\u010dkova\u010d\u016f a zv\u00fdraz\u0148ova\u010d\u016f a je jedn\u00edm z nejv\u011bt\u0161\u00edch producent\u016f tohoto druhu zbo\u017e\u00ed v regionu.

\r\n

Upozorn\u011bn\u00ed: Nov\u00e1 schr\u00e1nka. P\u0159ejeme v\u00e1m hezk\u00fd odlov.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n

\r\n \r\n Additional Hints\r\n (Decrypt)

\r\n Fxe\u00edaxn cbq chibqa\u00edz cyrpubi\u00fdz manxrz Xbuvabbe.
\r\n

Decryption Key

A|B|C|D|E|F|G|H|I|J|K|L|M
-------------------------
N|O|P|Q|R|S|T|U|V|W|X|Y|Z

(letter above equals below, and vice versa)

\r\n
\r\n
\r\n


\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \n
\n \n Log geocache\n \n \n \n
\n\n\r\n \r\n \r\n
\r\n \r\n

\r\n Attributes\r\n

\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\t\t\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

\r\n Advertising with Us\r\n

\r\n \r\n \r\n\t
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \n
\n \n

\n Inventory\n

\n
\n \n \n
\r\n\t\t\n

There are no Trackables in this cache.

\n \r\n\t
\n \n\n \n
\n \n \n
\n\r\n \n
\n

\n Bookmark Lists\n

\n
\n \n \n \n

\n View all bookmark lists...\n

\n
\n
\n\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n

\r\n  
\r\n \r\n \r\n

\r\n \r\n
\r\n\t\t\r\n
\r\n \r\n
\r\n
\r\n

\r\n View Larger Map\r\n

\r\n
\r\n
\r\n \r\n\t
\r\n \r\n

\r\n Find...\r\n
\r\n \r\n

\r\n \r\n

\r\n For online maps...\r\n

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \n\n\n\n\n\n\n\n\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n" + }, + "headers": { + "Cache-Control": [ + "no-cache" + ], + "Content-Length": [ + "117388" + ], + "Content-Type": [ + "text/html; charset=utf-8" + ], + "Date": [ + "Wed, 24 Aug 2022 20:12:38 GMT" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "Request-Context": [ + "appId=cid-v1:019d82c2-5dd7-44cb-aa94-01e052f0d40c" + ], + "Set-Cookie": [ + "gspkauth=; domain=.geocaching.com; expires=Sat, 24-Sep-2022 20:12:38 GMT; path=/; secure; HttpOnly", + "Culture=en-US; path=/; secure; HttpOnly" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN", + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://www.geocaching.com/geocache/GC8CKQQ_kohinoorka" + } + } + ], + "recorded_with": "betamax/0.8.1" +} \ No newline at end of file diff --git a/test/cassettes/cache_status_locked.json b/test/cassettes/cache_status_locked.json new file mode 100644 index 0000000..72f5cba --- /dev/null +++ b/test/cassettes/cache_status_locked.json @@ -0,0 +1,168 @@ +{ + "http_interactions": [ + { + "recorded_at": "2022-08-24T20:12:50", + "request": { + "body": { + "encoding": "utf-8", + "string": "" + }, + "headers": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate" + ], + "Connection": [ + "keep-alive" + ], + "Cookie": [ + "gspkauth=; Culture=en-US; __RequestVerificationToken=" + ], + "User-Agent": [ + "python-requests/2.28.1" + ] + }, + "method": "GET", + "uri": "https://www.geocaching.com/seek/cache_details.aspx?wp=GC10" + }, + "response": { + "body": { + "encoding": "utf-8", + "string": "Object moved\r\n

Object moved to here.

\r\n\r\n" + }, + "headers": { + "Cache-Control": [ + "no-cache" + ], + "Content-Length": [ + "170" + ], + "Content-Type": [ + "text/html; charset=utf-8" + ], + "Date": [ + "Wed, 24 Aug 2022 20:12:49 GMT" + ], + "Expires": [ + "-1" + ], + "Location": [ + "https://www.geocaching.com/geocache/GC10_first-divine" + ], + "Pragma": [ + "no-cache" + ], + "Request-Context": [ + "appId=cid-v1:019d82c2-5dd7-44cb-aa94-01e052f0d40c" + ], + "Set-Cookie": [ + "gspkauth=; domain=.geocaching.com; expires=Sat, 24-Sep-2022 20:12:50 GMT; path=/; secure; HttpOnly", + "Culture=en-US; path=/; secure; HttpOnly" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Vary": [ + "Accept-Encoding" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1" + ] + }, + "status": { + "code": 301, + "message": "Moved Permanently" + }, + "url": "https://www.geocaching.com/seek/cache_details.aspx?wp=GC10" + } + }, + { + "recorded_at": "2022-08-24T20:12:51", + "request": { + "body": { + "encoding": "utf-8", + "string": "" + }, + "headers": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate" + ], + "Connection": [ + "keep-alive" + ], + "Cookie": [ + "gspkauth=; Culture=en-US; __RequestVerificationToken=" + ], + "User-Agent": [ + "python-requests/2.28.1" + ] + }, + "method": "GET", + "uri": "https://www.geocaching.com/geocache/GC10_first-divine" + }, + "response": { + "body": { + "encoding": "utf-8", + "string": "\r\n\r\n\r\n\r\n\r\n \r\n \r\n\tGC10 First Divine (Traditional Cache) in Oregon, United States created by Dave Ulmer\r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\t\r\n\t\r\n\t\r\n
\r\n \r\n\r\n \r\n \r\n \r\n\r\n Skip to content\r\n\r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n\r\n
\r\n\t\r\n \r\n

First Divine Traditional Geocache

\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n This cache has been locked, but it is available for viewing.\r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\t\t\n

\n \n GC10\n \n \n \n

\n\r\n\t
\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\t\t\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\t
\r\n
\r\n \r\n \r\n \r\n \r\n First Divine\r\n \r\n
\r\n
\r\n
\r\n A cache by Dave Ulmer\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Message this owner\r\n \r\n
\r\n
\r\n Hidden\r\n :\r\n 8.5.2000\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Difficulty:
\r\n
\r\n \"1\r\n
\r\n
\r\n
\r\n
\r\n Terrain:
\r\n
\r\n \"1\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n

\r\n Size: \"Size: (large)\r\n

\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n 0 \r\n \r\n Favorites\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n

\r\n\r\n \r\n\r\n

\r\n \r\n\r\n
\r\n
\r\n
\r\n

\r\n \r\n \r\n N 45\u00b0 00.000 W 123\u00b0 00.000\r\n \r\n \r\n
\r\n \r\n UTM: 10T E 500000 N 4982950
\r\n
\r\n

\r\n
\r\n
\r\n In Oregon, United States
\r\n \"NW\" NW 9030 km from your home location\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Print:\r\n
\r\n
\r\n No Logs\r\n 5 Logs\r\n 10 Logs\r\n Driving Directions\r\n
\r\n
\r\n
\r\n
\r\n Download GPX\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n Please note Use of geocaching.com services is subject to the terms and conditions in our disclaimer.\r\n
\r\n \r\n \r\n \r\n \r\n

Geocache Description:

\r\n \r\n
\r\n \r\n This cache has been plundered of all of its contents, but the bucket still remains.
\r\n
\r\nnear Salem, OR. (Divine Stash = exactly at degrees)\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n Yep, the Worlds First Divine Stash is now in place at N45 0.000 W123 0.000
\r\nusing WSG84. Divine comes from a contraction of 'dividing line'.
\r\n
\r\nThe stash contains Money, Gold, Jewelry, MRE, Soy Sauce, Alphatone, and of
\r\ncourse a Log Book for you to log your visit, but I forgot to put in a pen to
\r\nwrite with...
\r\n
\r\nThe rules are: Take Something,,,, Leave Something... or at least write
\r\nsomething.
\r\n
\r\nThere is an old iron witness post marking the spot, there is a benchmark some
\r\ndistance away on the freeway overpass.
\r\n
\r\nI hope the witness post keeps the freeway grass mowing machines from trashing
\r\nthe stash..
\r\n
\r\nHave Fun finding it !!
\r\n
\r\nDave...
\r\n
\r\n(Note: Original description restored from The Internet Archive and the sci.geo.satellite-nav newsgroup. -Admin)
\r\n \r\n
\r\n \r\n \r\n \r\n

\r\n \r\n Additional Hints\r\n (No hints available.)

\r\n
\r\n \r\n
\r\n
\r\n


\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \n
\n \n Log geocache\n \n \n \n
\n\n\r\n \r\n \r\n
\r\n \r\n

\r\n Attributes\r\n

\r\n
\r\n

No attributes available

\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n\t\t\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

\r\n Advertising with Us\r\n

\r\n \r\n \r\n\t
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \n
\n \n

\n Inventory\n

\n
\n \n \n
\r\n\t\t\n

There are no Trackables in this cache.

\n \r\n\t
\n \n\n \n
\n \n \n
\n\r\n \n
\n

\n Bookmark Lists\n

\n \n
\n\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n

\r\n  
\r\n \r\n \r\n

\r\n \r\n
\r\n\t\t\r\n
\r\n \r\n
\r\n
\r\n

\r\n View Larger Map\r\n

\r\n
\r\n
\r\n \r\n\t
\r\n \r\n

\r\n Find...\r\n
\r\n \r\n

\r\n \r\n

\r\n For online maps...\r\n

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \n\n\n\n\n\n\n\n\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n" + }, + "headers": { + "Cache-Control": [ + "no-cache" + ], + "Content-Length": [ + "99769" + ], + "Content-Type": [ + "text/html; charset=utf-8" + ], + "Date": [ + "Wed, 24 Aug 2022 20:12:50 GMT" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "Request-Context": [ + "appId=cid-v1:019d82c2-5dd7-44cb-aa94-01e052f0d40c" + ], + "Set-Cookie": [ + "gspkauth=; domain=.geocaching.com; expires=Sat, 24-Sep-2022 20:12:50 GMT; path=/; secure; HttpOnly", + "Culture=en-US; path=/; secure; HttpOnly" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN", + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://www.geocaching.com/geocache/GC10_first-divine" + } + } + ], + "recorded_with": "betamax/0.8.1" +} \ No newline at end of file diff --git a/test/test_cache.py b/test/test_cache.py index 649f6fa..93a561f 100644 --- a/test/test_cache.py +++ b/test/test_cache.py @@ -469,3 +469,26 @@ def test_note(self): def test_str(self): self.assertEqual(str(self.w), "id") + + +class TestCacheStatus(LoggedInTest): + def test_cache_status(self): + with self.subTest("Enabled"): + cache = Cache(self.gc, "GC8CKQQ") + with self.recorder.use_cassette("cache_status_enabled"): + self.assertEqual(Status.enabled, cache.status) + + with self.subTest("Disabled"): + cache = Cache(self.gc, "GC7Y77T") + with self.recorder.use_cassette("cache_status_disabled"): + self.assertEqual(Status.disabled, cache.status) + + with self.subTest("Archived"): + cache = Cache(self.gc, "GC1PAR2") + with self.recorder.use_cassette("cache_status_archived"): + self.assertEqual(Status.archived, cache.status) + + with self.subTest("Locked"): + cache = Cache(self.gc, "GC10") + with self.recorder.use_cassette("cache_status_locked"): + self.assertEqual(Status.locked, cache.status) From 6e67e6efcf864aa539970c1edd0bab8efb98778d Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Wed, 24 Aug 2022 22:16:16 +0200 Subject: [PATCH 18/19] Whitespace formatting --- pycaching/cache.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycaching/cache.py b/pycaching/cache.py index a2834fe..1363aef 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -1445,4 +1445,4 @@ def from_cache_details(cls, soup): elif soup.find(id="ctl00_ContentBody_lockedMessage"): return Status.locked else: - return Status.enabled \ No newline at end of file + return Status.enabled From cd51a3e84245c4951ab943de2c486d7250f6c51c Mon Sep 17 00:00:00 2001 From: BelKed <66956532+BelKed@users.noreply.github.com> Date: Thu, 25 Aug 2022 21:46:09 +0200 Subject: [PATCH 19/19] Add a test for cache status with a quick load --- .../cache_status_enabled_load_quick.json | 129 ++++++++++++++++++ test/test_cache.py | 6 + 2 files changed, 135 insertions(+) create mode 100644 test/cassettes/cache_status_enabled_load_quick.json diff --git a/test/cassettes/cache_status_enabled_load_quick.json b/test/cassettes/cache_status_enabled_load_quick.json new file mode 100644 index 0000000..8cebdca --- /dev/null +++ b/test/cassettes/cache_status_enabled_load_quick.json @@ -0,0 +1,129 @@ +{ + "http_interactions": [ + { + "recorded_at": "2022-08-25T19:41:18", + "request": { + "body": { + "encoding": "utf-8", + "string": "" + }, + "headers": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate" + ], + "Connection": [ + "keep-alive" + ], + "User-Agent": [ + "python-requests/2.28.1" + ] + }, + "method": "GET", + "uri": "http://tiles01.geocaching.com/map.details?i=GC8CKQQ" + }, + "response": { + "body": { + "encoding": null, + "string": "" + }, + "headers": { + "Connection": [ + "Keep-Alive" + ], + "Content-Length": [ + "0" + ], + "Location": [ + "https://tiles01.geocaching.com/map.details?i=GC8CKQQ" + ], + "Server": [ + "BigIP" + ] + }, + "status": { + "code": 302, + "message": "Moved Temporarily" + }, + "url": "http://tiles01.geocaching.com/map.details?i=GC8CKQQ" + } + }, + { + "recorded_at": "2022-08-25T19:41:19", + "request": { + "body": { + "encoding": "utf-8", + "string": "" + }, + "headers": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate" + ], + "Connection": [ + "keep-alive" + ], + "Cookie": [ + "gspkauth=" + ], + "User-Agent": [ + "python-requests/2.28.1" + ] + }, + "method": "GET", + "uri": "https://tiles01.geocaching.com/map.details?i=GC8CKQQ" + }, + "response": { + "body": { + "encoding": "UTF-8", + "string": "{\"status\":\"success\",\"data\":[{\"name\":\"Kohinoorka\",\"gc\":\"GC8CKQQ\",\"g\":\"0a786802-1a56-4c25-b52e-51e064ada861\",\"available\":true,\"archived\":false,\"subrOnly\":false,\"li\":false,\"fp\":\"15\",\"difficulty\":{\"text\":2.0,\"value\":\"2\"},\"terrain\":{\"text\":2.0,\"value\":\"2\"},\"hidden\":\"8/24/2019\",\"container\":{\"text\":\"Small\",\"value\":\"small.gif\"},\"type\":{\"text\":\"Traditional Cache\",\"value\":2},\"owner\":{\"text\":\"haj\u00edci\",\"value\":\"d9b10451-f71d-4d5a-be1d-7864fa92fdf0\"}}]}" + }, + "headers": { + "Cache-Control": [ + "no-cache" + ], + "Content-Length": [ + "444" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Thu, 25 Aug 2022 19:41:19 GMT" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Vary": [ + "Accept-Encoding" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://tiles01.geocaching.com/map.details?i=GC8CKQQ" + } + } + ], + "recorded_with": "betamax/0.8.1" +} \ No newline at end of file diff --git a/test/test_cache.py b/test/test_cache.py index 93a561f..f47805e 100644 --- a/test/test_cache.py +++ b/test/test_cache.py @@ -492,3 +492,9 @@ def test_cache_status(self): cache = Cache(self.gc, "GC10") with self.recorder.use_cassette("cache_status_locked"): self.assertEqual(Status.locked, cache.status) + + with self.subTest("Enabled > Quick load"): + cache = Cache(self.gc, "GC8CKQQ") + with self.recorder.use_cassette("cache_status_enabled_load_quick"): + cache.load_quick() + self.assertEqual(Status.enabled, cache.status)