diff --git a/pycaching/cache.py b/pycaching/cache.py index ead6051..0ad37a7 100644 --- a/pycaching/cache.py +++ b/pycaching/cache.py @@ -86,9 +86,9 @@ class Cache(object): "teamwork": "Teamwork Required", "thorn": "Thorns", "ticks": "Ticks", - "touristOK": "Tourist Friendly", + "touristok": "Tourist Friendly", "treeclimbing": "Tree Climbing", - "UV": "UV Light Required", + "uv": "UV Light Required", "wading": "May Require Wading", "water": "Drinking Water Nearby", "wheelchair": "Wheelchair Accessible", @@ -107,6 +107,7 @@ class Cache(object): "mega": "Mega-Event Cache", "giga": "Giga-Event Cache", "earthcache": "Earthcache", + "137": "Earthcache", "13": "Cache in Trash out Event", "11": "Webcam Cache", "4": "Virtual Cache", @@ -325,7 +326,7 @@ def attributes(self, attributes): self._attributes = {} for name, allowed in attributes.items(): - name = name.strip() + name = name.strip().lower() if name in self._possible_attributes: self._attributes[name] = allowed else: diff --git a/pycaching/geocaching.py b/pycaching/geocaching.py index a777f10..2c41fa8 100644 --- a/pycaching/geocaching.py +++ b/pycaching/geocaching.py @@ -42,12 +42,6 @@ class Geocaching(object): "grid": _tile_url + "map.info", } - # interesting URLs: - # https://staging.api.groundspeak.com/Live/V6Beta/geocaching.svc/help - # http://tiles01.geocaching.com/map.details?i=GCNJ2Z - # http://tiles01.geocaching.com/map.info?x=8803&y=5576&z=14 (http://www.mapbox.com/developers/utfgrid/) - # http://tiles01.geocaching.com/map.png?x=8803&y=5576&z=14 - def __init__(self): self._logged_in = False self._browser = ms.Browser() diff --git a/test/sample.json b/test/sample.json deleted file mode 100644 index 590b86c..0000000 --- a/test/sample.json +++ /dev/null @@ -1 +0,0 @@ -{"grid":[" !#$ "," %&'()* "," +,- "," ./0 "," 123 "," 456 "," 789 "," "," :;< "," =>? "," @AB CDE "," FGH "," IJK LMN "," OPQ "," RST "," UVW "," XYZ "," []^ _`abcd "," efg hij klmnop qrs"," tuv wxyz{| }~€‚ ƒ„\u0085"," †‡ˆ‰Š‹ ŒŽ ‘’“"," ”•–—˜ ™š› œž Ÿ","  ¡¢£¤ ¥¦§ ¨"," ©ª« ¬­®¯° ±"," ²³´ µ¶· ¸¹º»¼½ "," ¾¿À ÁÂà ÄÅÆÇÈÉ "," ÊËÌ ÍÎÏÐÑÒ "," ÓÔÕ "," Ö×Ø "," ÙÚÛ "," ÜÝÞ "," ßàá "," âãä "," åæçèé êëì íîï "," ðñòóô õö÷ øùú "," ûüý þÿĀ āĂ㥠"," ąĆć "," ĈĉĊ "," "," ċČč "," ĎďĐ "," đĒē "," "," "," "," "," "," "," "," "," ĔĕĖ "," ėĘę ĚěĜ "," ĝĞğ ĠġĢ "," ģĤĥ "," ĦħĨ "," ĩĪī "," ĬĭĮ įİı "," IJijĴ ĵĶķ "," ĸĹĺ ĻļĽ ľĿŀ "," ŁłŃ ńŅņ "," Ňňʼn "," "," ŊŋŌ "," ōŎŏ "],"keys":["","(57, 0)","(58, 0)","(59, 0)","(54, 1)","(55, 1)","(56, 1)","(57, 1)","(58, 1)","(59, 1)","(54, 2)","(55, 2)","(56, 2)","(54, 3)","(55, 3)","(56, 3)","(44, 4)","(45, 4)","(46, 4)","(44, 5)","(45, 5)","(46, 5)","(44, 6)","(45, 6)","(46, 6)","(31, 8)","(32, 8)","(33, 8)","(31, 9)","(32, 9)","(33, 9)","(16, 10)","(17, 10)","(18, 10)","(31, 10)","(32, 10)","(33, 10)","(16, 11)","(17, 11)","(18, 11)","(16, 12)","(17, 12)","(18, 12)","(40, 12)","(41, 12)","(42, 12)","(40, 13)","(41, 13)","(42, 13)","(40, 14)","(41, 14)","(42, 14)","(56, 15)","(57, 15)","(58, 15)","(56, 16)","(57, 16)","(58, 16)","(4, 17)","(5, 17)","(6, 17)","(53, 17)","(54, 17)","(55, 17)","(56, 17)","(57, 17)","(58, 17)","(4, 18)","(5, 18)","(6, 18)","(40, 18)","(41, 18)","(42, 18)","(50, 18)","(51, 18)","(52, 18)","(53, 18)","(54, 18)","(55, 18)","(61, 18)","(62, 18)","(63, 18)","(4, 19)","(5, 19)","(6, 19)","(40, 19)","(41, 19)","(42, 19)","(43, 19)","(44, 19)","(45, 19)","(50, 19)","(51, 19)","(52, 19)","(53, 19)","(54, 19)","(55, 19)","(61, 19)","(62, 19)","(63, 19)","(40, 20)","(41, 20)","(42, 20)","(43, 20)","(44, 20)","(45, 20)","(50, 20)","(51, 20)","(52, 20)","(59, 20)","(60, 20)","(61, 20)","(62, 20)","(63, 20)","(41, 21)","(42, 21)","(43, 21)","(44, 21)","(45, 21)","(50, 21)","(51, 21)","(52, 21)","(59, 21)","(60, 21)","(61, 21)","(63, 21)","(50, 22)","(51, 22)","(52, 22)","(53, 22)","(54, 22)","(59, 22)","(60, 22)","(61, 22)","(63, 22)","(24, 23)","(25, 23)","(26, 23)","(50, 23)","(51, 23)","(52, 23)","(53, 23)","(54, 23)","(63, 23)","(24, 24)","(25, 24)","(26, 24)","(39, 24)","(40, 24)","(41, 24)","(50, 24)","(51, 24)","(52, 24)","(53, 24)","(54, 24)","(55, 24)","(24, 25)","(25, 25)","(26, 25)","(39, 25)","(40, 25)","(41, 25)","(50, 25)","(51, 25)","(52, 25)","(53, 25)","(54, 25)","(55, 25)","(39, 26)","(40, 26)","(41, 26)","(50, 26)","(51, 26)","(52, 26)","(53, 26)","(54, 26)","(55, 26)","(51, 27)","(52, 27)","(53, 27)","(51, 28)","(52, 28)","(53, 28)","(19, 29)","(20, 29)","(21, 29)","(19, 30)","(20, 30)","(21, 30)","(19, 31)","(20, 31)","(21, 31)","(42, 32)","(43, 32)","(44, 32)","(40, 33)","(41, 33)","(42, 33)","(43, 33)","(44, 33)","(47, 33)","(48, 33)","(49, 33)","(58, 33)","(59, 33)","(60, 33)","(40, 34)","(41, 34)","(42, 34)","(43, 34)","(44, 34)","(47, 34)","(48, 34)","(49, 34)","(58, 34)","(59, 34)","(60, 34)","(40, 35)","(41, 35)","(42, 35)","(47, 35)","(48, 35)","(49, 35)","(57, 35)","(58, 35)","(59, 35)","(60, 35)","(57, 36)","(58, 36)","(59, 36)","(57, 37)","(58, 37)","(59, 37)","(54, 39)","(55, 39)","(56, 39)","(54, 40)","(55, 40)","(56, 40)","(54, 41)","(55, 41)","(56, 41)","(36, 50)","(37, 50)","(38, 50)","(36, 51)","(37, 51)","(38, 51)","(55, 51)","(56, 51)","(57, 51)","(36, 52)","(37, 52)","(38, 52)","(55, 52)","(56, 52)","(57, 52)","(55, 53)","(56, 53)","(57, 53)","(22, 54)","(23, 54)","(24, 54)","(22, 55)","(23, 55)","(24, 55)","(10, 56)","(11, 56)","(12, 56)","(22, 56)","(23, 56)","(24, 56)","(10, 57)","(11, 57)","(12, 57)","(20, 57)","(21, 57)","(22, 57)","(10, 58)","(11, 58)","(12, 58)","(20, 58)","(21, 58)","(22, 58)","(33, 58)","(34, 58)","(35, 58)","(20, 59)","(21, 59)","(22, 59)","(33, 59)","(34, 59)","(35, 59)","(33, 60)","(34, 60)","(35, 60)","(6, 62)","(7, 62)","(8, 62)","(6, 63)","(7, 63)","(8, 63)"],"data":{"(57, 0)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(58, 0)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(59, 0)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(54, 1)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(55, 1)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(56, 1)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(57, 1)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(58, 1)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(59, 1)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(54, 2)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(55, 2)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(56, 2)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(54, 3)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(55, 3)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(56, 3)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(44, 4)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(45, 4)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(46, 4)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(44, 5)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(45, 5)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(46, 5)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(44, 6)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(45, 6)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(46, 6)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(31, 8)":[{"i":"GC1NT7W","n":"Magické oko"}],"(32, 8)":[{"i":"GC1NT7W","n":"Magické oko"}],"(33, 8)":[{"i":"GC1NT7W","n":"Magické oko"}],"(31, 9)":[{"i":"GC1NT7W","n":"Magické oko"}],"(32, 9)":[{"i":"GC1NT7W","n":"Magické oko"}],"(33, 9)":[{"i":"GC1NT7W","n":"Magické oko"}],"(16, 10)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(17, 10)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(18, 10)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(31, 10)":[{"i":"GC1NT7W","n":"Magické oko"}],"(32, 10)":[{"i":"GC1NT7W","n":"Magické oko"}],"(33, 10)":[{"i":"GC1NT7W","n":"Magické oko"}],"(16, 11)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(17, 11)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(18, 11)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(16, 12)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(17, 12)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(18, 12)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(40, 12)":[{"i":"GC1T0MH","n":"V pekle"}],"(41, 12)":[{"i":"GC1T0MH","n":"V pekle"}],"(42, 12)":[{"i":"GC1T0MH","n":"V pekle"}],"(40, 13)":[{"i":"GC1T0MH","n":"V pekle"}],"(41, 13)":[{"i":"GC1T0MH","n":"V pekle"}],"(42, 13)":[{"i":"GC1T0MH","n":"V pekle"}],"(40, 14)":[{"i":"GC1T0MH","n":"V pekle"}],"(41, 14)":[{"i":"GC1T0MH","n":"V pekle"}],"(42, 14)":[{"i":"GC1T0MH","n":"V pekle"}],"(56, 15)":[{"i":"GCZ5J3","n":"Mala"}],"(57, 15)":[{"i":"GCZ5J3","n":"Mala"}],"(58, 15)":[{"i":"GCZ5J3","n":"Mala"}],"(56, 16)":[{"i":"GCZ5J3","n":"Mala"}],"(57, 16)":[{"i":"GCZ5J3","n":"Mala"}],"(58, 16)":[{"i":"GCZ5J3","n":"Mala"}],"(4, 17)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(5, 17)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(6, 17)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(53, 17)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(54, 17)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(55, 17)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(56, 17)":[{"i":"GCZ5J3","n":"Mala"}],"(57, 17)":[{"i":"GCZ5J3","n":"Mala"}],"(58, 17)":[{"i":"GCZ5J3","n":"Mala"}],"(4, 18)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(5, 18)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(6, 18)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(40, 18)":[{"i":"GC1534Q","n":"Hodina zemepisu"}],"(41, 18)":[{"i":"GC1534Q","n":"Hodina zemepisu"}],"(42, 18)":[{"i":"GC1534Q","n":"Hodina zemepisu"}],"(50, 18)":[{"i":"GC18NNN","n":"ARAKIS"}],"(51, 18)":[{"i":"GC18NNN","n":"ARAKIS"}],"(52, 18)":[{"i":"GC18NNN","n":"ARAKIS"}],"(53, 18)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(54, 18)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(55, 18)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(61, 18)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(62, 18)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(63, 18)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(4, 19)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(5, 19)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(6, 19)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(40, 19)":[{"i":"GC1534Q","n":"Hodina zemepisu"}],"(41, 19)":[{"i":"GC1534Q","n":"Hodina zemepisu"},{"i":"GC11AZF","n":"Dopravni cache"}],"(42, 19)":[{"i":"GC1534Q","n":"Hodina zemepisu"},{"i":"GC11AZF","n":"Dopravni cache"}],"(43, 19)":[{"i":"GC11AZF","n":"Dopravni cache"},{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(44, 19)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(45, 19)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(50, 19)":[{"i":"GC18NNN","n":"ARAKIS"}],"(51, 19)":[{"i":"GC18NNN","n":"ARAKIS"}],"(52, 19)":[{"i":"GC18NNN","n":"ARAKIS"}],"(53, 19)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(54, 19)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(55, 19)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(61, 19)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(62, 19)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(63, 19)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(40, 20)":[{"i":"GC1534Q","n":"Hodina zemepisu"}],"(41, 20)":[{"i":"GC1534Q","n":"Hodina zemepisu"},{"i":"GC11AZF","n":"Dopravni cache"}],"(42, 20)":[{"i":"GC1534Q","n":"Hodina zemepisu"},{"i":"GC11AZF","n":"Dopravni cache"}],"(43, 20)":[{"i":"GC11AZF","n":"Dopravni cache"},{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(44, 20)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(45, 20)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(50, 20)":[{"i":"GC18NNN","n":"ARAKIS"},{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(51, 20)":[{"i":"GC18NNN","n":"ARAKIS"},{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(52, 20)":[{"i":"GC18NNN","n":"ARAKIS"},{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(59, 20)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(60, 20)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(61, 20)":[{"i":"GC20CJX","n":"Plzenska skladanka"},{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(62, 20)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(63, 20)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(41, 21)":[{"i":"GC11AZF","n":"Dopravni cache"}],"(42, 21)":[{"i":"GC11AZF","n":"Dopravni cache"}],"(43, 21)":[{"i":"GC11AZF","n":"Dopravni cache"},{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(44, 21)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(45, 21)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(50, 21)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"},{"i":"GC5CGNC","n":"Nedelni prochazka po plzenskem namesti podruhe"},{"i":"GC59TJW","n":"Nedelni prochazka po plzenskem namesti"}],"(51, 21)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"},{"i":"GC5CGNC","n":"Nedelni prochazka po plzenskem namesti podruhe"},{"i":"GC59TJW","n":"Nedelni prochazka po plzenskem namesti"}],"(52, 21)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"},{"i":"GC5CGNC","n":"Nedelni prochazka po plzenskem namesti podruhe"},{"i":"GC59TJW","n":"Nedelni prochazka po plzenskem namesti"}],"(59, 21)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(60, 21)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(61, 21)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(63, 21)":[{"i":"GC3AHCH","n":"PVS#1 Tajemstvi Velkeho Vonta"}],"(50, 22)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"},{"i":"GC5CGNC","n":"Nedelni prochazka po plzenskem namesti podruhe"},{"i":"GC59TJW","n":"Nedelni prochazka po plzenskem namesti"}],"(51, 22)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"},{"i":"GC5CGNC","n":"Nedelni prochazka po plzenskem namesti podruhe"},{"i":"GC59TJW","n":"Nedelni prochazka po plzenskem namesti"}],"(52, 22)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"},{"i":"GC5CGNC","n":"Nedelni prochazka po plzenskem namesti podruhe"},{"i":"GC59TJW","n":"Nedelni prochazka po plzenskem namesti"},{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(53, 22)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(54, 22)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(59, 22)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(60, 22)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(61, 22)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(63, 22)":[{"i":"GC3AHCH","n":"PVS#1 Tajemstvi Velkeho Vonta"}],"(24, 23)":[{"i":"GCXFXT","n":"Hundertwasser a Gaudi"}],"(25, 23)":[{"i":"GCXFXT","n":"Hundertwasser a Gaudi"}],"(26, 23)":[{"i":"GCXFXT","n":"Hundertwasser a Gaudi"}],"(50, 23)":[{"i":"GC5CGNC","n":"Nedelni prochazka po plzenskem namesti podruhe"},{"i":"GC59TJW","n":"Nedelni prochazka po plzenskem namesti"}],"(51, 23)":[{"i":"GC5CGNC","n":"Nedelni prochazka po plzenskem namesti podruhe"},{"i":"GC59TJW","n":"Nedelni prochazka po plzenskem namesti"}],"(52, 23)":[{"i":"GC5CGNC","n":"Nedelni prochazka po plzenskem namesti podruhe"},{"i":"GC59TJW","n":"Nedelni prochazka po plzenskem namesti"},{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(53, 23)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(54, 23)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(63, 23)":[{"i":"GC3AHCH","n":"PVS#1 Tajemstvi Velkeho Vonta"}],"(24, 24)":[{"i":"GCXFXT","n":"Hundertwasser a Gaudi"}],"(25, 24)":[{"i":"GCXFXT","n":"Hundertwasser a Gaudi"}],"(26, 24)":[{"i":"GCXFXT","n":"Hundertwasser a Gaudi"}],"(39, 24)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(40, 24)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(41, 24)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(50, 24)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"}],"(51, 24)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"}],"(52, 24)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"},{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"},{"i":"GCZKXM","n":"Mystery of Dictionaries"}],"(53, 24)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"},{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(54, 24)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"},{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(55, 24)":[{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(24, 25)":[{"i":"GCXFXT","n":"Hundertwasser a Gaudi"}],"(25, 25)":[{"i":"GCXFXT","n":"Hundertwasser a Gaudi"}],"(26, 25)":[{"i":"GCXFXT","n":"Hundertwasser a Gaudi"}],"(39, 25)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(40, 25)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(41, 25)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(50, 25)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"}],"(51, 25)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"}],"(52, 25)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"},{"i":"GCZKXM","n":"Mystery of Dictionaries"}],"(53, 25)":[{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(54, 25)":[{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(55, 25)":[{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(39, 26)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(40, 26)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(41, 26)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(50, 26)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"}],"(51, 26)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"},{"i":"GC1XP9V","n":"Povesti z namesti"}],"(52, 26)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"},{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GC1XP9V","n":"Povesti z namesti"}],"(53, 26)":[{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"},{"i":"GC1XP9V","n":"Povesti z namesti"}],"(54, 26)":[{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(55, 26)":[{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(51, 27)":[{"i":"GC1XP9V","n":"Povesti z namesti"}],"(52, 27)":[{"i":"GC1XP9V","n":"Povesti z namesti"}],"(53, 27)":[{"i":"GC1XP9V","n":"Povesti z namesti"}],"(51, 28)":[{"i":"GC1XP9V","n":"Povesti z namesti"}],"(52, 28)":[{"i":"GC1XP9V","n":"Povesti z namesti"}],"(53, 28)":[{"i":"GC1XP9V","n":"Povesti z namesti"}],"(19, 29)":[{"i":"GCX846","n":"Pustit klic"}],"(20, 29)":[{"i":"GCX846","n":"Pustit klic"}],"(21, 29)":[{"i":"GCX846","n":"Pustit klic"}],"(19, 30)":[{"i":"GCX846","n":"Pustit klic"}],"(20, 30)":[{"i":"GCX846","n":"Pustit klic"}],"(21, 30)":[{"i":"GCX846","n":"Pustit klic"}],"(19, 31)":[{"i":"GCX846","n":"Pustit klic"}],"(20, 31)":[{"i":"GCX846","n":"Pustit klic"}],"(21, 31)":[{"i":"GCX846","n":"Pustit klic"}],"(42, 32)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(43, 32)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(44, 32)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(40, 33)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(41, 33)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(42, 33)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"},{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(43, 33)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(44, 33)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(47, 33)":[{"i":"GC157P2","n":"Domino cache"}],"(48, 33)":[{"i":"GC157P2","n":"Domino cache"}],"(49, 33)":[{"i":"GC157P2","n":"Domino cache"}],"(58, 33)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(59, 33)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(60, 33)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(40, 34)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(41, 34)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(42, 34)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"},{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(43, 34)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(44, 34)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(47, 34)":[{"i":"GC157P2","n":"Domino cache"}],"(48, 34)":[{"i":"GC157P2","n":"Domino cache"}],"(49, 34)":[{"i":"GC157P2","n":"Domino cache"}],"(58, 34)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(59, 34)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(60, 34)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(40, 35)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(41, 35)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(42, 35)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(47, 35)":[{"i":"GC157P2","n":"Domino cache"}],"(48, 35)":[{"i":"GC157P2","n":"Domino cache"}],"(49, 35)":[{"i":"GC157P2","n":"Domino cache"}],"(57, 35)":[{"i":"GC59WVV","n":"Nedelni chvilka Plzne podruhe"}],"(58, 35)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"},{"i":"GC59WVV","n":"Nedelni chvilka Plzne podruhe"}],"(59, 35)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"},{"i":"GC59WVV","n":"Nedelni chvilka Plzne podruhe"}],"(60, 35)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(57, 36)":[{"i":"GC59WVV","n":"Nedelni chvilka Plzne podruhe"}],"(58, 36)":[{"i":"GC59WVV","n":"Nedelni chvilka Plzne podruhe"}],"(59, 36)":[{"i":"GC59WVV","n":"Nedelni chvilka Plzne podruhe"}],"(57, 37)":[{"i":"GC59WVV","n":"Nedelni chvilka Plzne podruhe"}],"(58, 37)":[{"i":"GC59WVV","n":"Nedelni chvilka Plzne podruhe"}],"(59, 37)":[{"i":"GC59WVV","n":"Nedelni chvilka Plzne podruhe"}],"(54, 39)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(55, 39)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(56, 39)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(54, 40)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(55, 40)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(56, 40)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(54, 41)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(55, 41)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(56, 41)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(36, 50)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(37, 50)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(38, 50)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(36, 51)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(37, 51)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(38, 51)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(55, 51)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(56, 51)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(57, 51)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(36, 52)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(37, 52)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(38, 52)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(55, 52)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(56, 52)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(57, 52)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(55, 53)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(56, 53)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(57, 53)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(22, 54)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(23, 54)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(24, 54)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(22, 55)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(23, 55)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(24, 55)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(10, 56)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(11, 56)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(12, 56)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(22, 56)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(23, 56)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(24, 56)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(10, 57)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(11, 57)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(12, 57)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(20, 57)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(21, 57)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(22, 57)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(10, 58)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(11, 58)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(12, 58)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(20, 58)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(21, 58)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(22, 58)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(33, 58)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(34, 58)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(35, 58)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(20, 59)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(21, 59)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(22, 59)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(33, 59)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(34, 59)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(35, 59)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(33, 60)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(34, 60)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(35, 60)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(6, 62)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}],"(7, 62)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}],"(8, 62)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}],"(6, 63)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}],"(7, 63)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}],"(8, 63)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}]}} \ No newline at end of file diff --git a/test/sample_caches b/test/sample_caches.csv similarity index 81% rename from test/sample_caches rename to test/sample_caches.csv index ee47cec..0b78a66 100644 --- a/test/sample_caches +++ b/test/sample_caches.csv @@ -1,40 +1,42 @@ -GC1T0MH,49.74999624181945,13.373451232910156 -GCZ5J3,49.74933075001044,13.378944396972656 -GCW21Q,49.74733421979961,13.377914428710938 -GCX6GH,49.74733421979961,13.37310791015625 -GC1NT7W,49.750883550028384,13.370361328125 -GC1T0KZ,49.748887083731866,13.361091613769531 -GCZ55B,49.748221576705156,13.379974365234375 -GC10EBM,49.75043989795293,13.365211486816406 -GC15W53,49.7440064868336,13.378257751464844 -GCZKXM,49.74733421979961,13.377571105957031 -GC18V5Z,49.75177084200527,13.374824523925781 -GC18NNN,49.74866524907081,13.376884460449219 -GCXFXT,49.74755606054778,13.367958068847656 -GC2YPEF,49.73890351959557,13.361778259277344 -GC3AHCH,49.74799973900054,13.38134765625 GC2NMZB,49.74067852559541,13.367271423339844 -GC17G5F,49.74023478018286,13.363151550292969 -GC11AZF,49.74844341339524,13.373794555664062 +GC50EFF,49.74267532973123,13.381004333496094 GC18RYQ,49.74156600424579,13.372077941894531 -GC59TJW,49.74799973900054,13.376884460449219 -GC1CG3K,49.748221576705156,13.376884460449219 +GC17G5F,49.74023478018286,13.363151550292969 GC4MFBT,49.74001290595473,13.366584777832031 -GC157P2,49.74533760741242,13.3758544921875 -GC18RXP,49.74533760741242,13.379631042480469 -GC57PG8,49.748887083731866,13.377914428710938 +GC5KNMV,49.75110537454435,13.379287719726562 +GCW21Q,49.74733421979961,13.377914428710938 +GC18NNN,49.74866524907081,13.376884460449219 +GCZ55B,49.748221576705156,13.379974365234375 GCY81P,49.74555945729134,13.374137878417969 -GCQDB8,49.74777790028142,13.377571105957031 +GCZKXM,49.74733421979961,13.377571105957031 +GC1NT7W,49.750883550028384,13.370361328125 GC1JT5W,49.74733421979961,13.376884460449219 -GC1F2NP,49.75243630033572,13.378257751464844 +GCQDB8,49.74777790028142,13.377571105957031 +GC5CB1V,49.746446846661705,13.376884460449219 +GC5TNQQ,49.75177084200527,13.376884460449219 +GC1T3RH,49.752879934150215,13.379287719726562 GC20CJX,49.74866524907081,13.380661010742188 +GC2YPEF,49.73890351959557,13.361778259277344 +GCX846,49.74622500084091,13.366241455078125 +GC5BY5Z,49.74289719178466,13.365898132324219 +GC5Q8W6,49.74489390461096,13.370361328125 +GC18RXP,49.74533760741242,13.379631042480469 +GC18V5Z,49.75177084200527,13.374824523925781 +GC5TYMJ,49.74933075001044,13.378257751464844 +GC1F2NP,49.75243630033572,13.378257751464844 GCVMNH,49.74533760741242,13.373451232910156 -GC3HRHF,49.73979103071204,13.371047973632812 -GC59WVV,49.74489390461096,13.379287719726562 +GC3AHCH,49.74799973900054,13.38134765625 +GC1QJNJ,49.74844341339524,13.374481201171875 +GC10EBM,49.75043989795293,13.365211486816406 +GC1T0KZ,49.748887083731866,13.361091613769531 GC3DN3N,49.741344136105035,13.37860107421875 -GC5CGNC,49.74799973900054,13.376884460449219 -GC1XP9V,49.74689053525971,13.377227783203125 -GCX846,49.74622500084091,13.366241455078125 -GC1T3RH,49.752879934150215,13.379287719726562 +GC11AZF,49.74844341339524,13.373794555664062 GC1534Q,49.74866524907081,13.373451232910156 -GC1QJNJ,49.74844341339524,13.374481201171875 +GC1XP9V,49.74689053525971,13.377227783203125 +GCZ5J3,49.74933075001044,13.378944396972656 +GCX6GH,49.74733421979961,13.37310791015625 +GC1CG3K,49.748221576705156,13.376884460449219 +GC3HRHF,49.73979103071204,13.371047973632812 +GC57PG8,49.748887083731866,13.377914428710938 +GC1T0MH,49.74999624181945,13.373451232910156 +GC15W53,49.7440064868336,13.378257751464844 \ No newline at end of file diff --git a/test/sample_utfgrid.json b/test/sample_utfgrid.json new file mode 100644 index 0000000..e70cb2a --- /dev/null +++ b/test/sample_utfgrid.json @@ -0,0 +1 @@ +{"grid":[" !#$ "," %&'()* "," +,- "," ./0 "," 123 456 "," 789 :;< "," =>? @AB "," CDE "," FGH IJK "," LMN OPQ "," RST UVW "," XYZ "," []^ _`a "," bcd "," efg "," hijkl "," mnopq "," rst uvwxyz "," {|} ~€ ‚ƒ„\u0085† ‡ˆ‰"," Š‹Œ Ž‘’ “”•–—˜ ™š›"," œžŸ ¡ ¢£¤ ¥¦§¨©"," ª«¬­® ¯°± ²³´ µ"," ¶·¸¹º »¼½ ¾"," ¿ÀÁ Â"," ÃÄÅ ÆÇÈÉÊË "," ÌÍÎ ÏÐÑÒÓÔ "," ÕÖ× ØÙÚÛÜÝ "," Þßà "," áâãä "," åæç èéê "," ëìí îïð "," ñòó "," ôõö "," ÷øùúû üýþ "," ÿĀāĂă ĄąĆ "," ćĈĉ ĊċČ čĎď "," ĐđĒ "," ēĔĕ "," "," ĖėĘ "," ęĚě "," ĜĝĞ "," "," "," ğĠġ "," ĢģĤ ĥĦ"," ħĨĩ Īī"," Ĭĭ"," "," "," Įįİ "," ıIJij ĴĵĶ "," ķĸĹ ĺĻļ "," ĽľĿ "," ŀŁł "," ŃńŅ "," ņŇň ʼnŊŋ "," ŌōŎ ŏŐő "," ŒœŔ ŕŖŗ ŘřŚ "," śŜŝ ŞşŠ "," šŢţ "," "," ŤťŦ "," ŧŨũ "],"keys":["","(57, 0)","(58, 0)","(59, 0)","(54, 1)","(55, 1)","(56, 1)","(57, 1)","(58, 1)","(59, 1)","(54, 2)","(55, 2)","(56, 2)","(54, 3)","(55, 3)","(56, 3)","(44, 4)","(45, 4)","(46, 4)","(50, 4)","(51, 4)","(52, 4)","(44, 5)","(45, 5)","(46, 5)","(50, 5)","(51, 5)","(52, 5)","(44, 6)","(45, 6)","(46, 6)","(50, 6)","(51, 6)","(52, 6)","(57, 7)","(58, 7)","(59, 7)","(31, 8)","(32, 8)","(33, 8)","(57, 8)","(58, 8)","(59, 8)","(31, 9)","(32, 9)","(33, 9)","(57, 9)","(58, 9)","(59, 9)","(16, 10)","(17, 10)","(18, 10)","(31, 10)","(32, 10)","(33, 10)","(16, 11)","(17, 11)","(18, 11)","(16, 12)","(17, 12)","(18, 12)","(40, 12)","(41, 12)","(42, 12)","(40, 13)","(41, 13)","(42, 13)","(40, 14)","(41, 14)","(42, 14)","(54, 15)","(55, 15)","(56, 15)","(57, 15)","(58, 15)","(54, 16)","(55, 16)","(56, 16)","(57, 16)","(58, 16)","(4, 17)","(5, 17)","(6, 17)","(53, 17)","(54, 17)","(55, 17)","(56, 17)","(57, 17)","(58, 17)","(4, 18)","(5, 18)","(6, 18)","(40, 18)","(41, 18)","(42, 18)","(50, 18)","(51, 18)","(52, 18)","(53, 18)","(54, 18)","(55, 18)","(61, 18)","(62, 18)","(63, 18)","(4, 19)","(5, 19)","(6, 19)","(40, 19)","(41, 19)","(42, 19)","(43, 19)","(44, 19)","(45, 19)","(50, 19)","(51, 19)","(52, 19)","(53, 19)","(54, 19)","(55, 19)","(61, 19)","(62, 19)","(63, 19)","(40, 20)","(41, 20)","(42, 20)","(43, 20)","(44, 20)","(45, 20)","(50, 20)","(51, 20)","(52, 20)","(59, 20)","(60, 20)","(61, 20)","(62, 20)","(63, 20)","(41, 21)","(42, 21)","(43, 21)","(44, 21)","(45, 21)","(50, 21)","(51, 21)","(52, 21)","(59, 21)","(60, 21)","(61, 21)","(63, 21)","(50, 22)","(51, 22)","(52, 22)","(53, 22)","(54, 22)","(59, 22)","(60, 22)","(61, 22)","(63, 22)","(52, 23)","(53, 23)","(54, 23)","(63, 23)","(39, 24)","(40, 24)","(41, 24)","(50, 24)","(51, 24)","(52, 24)","(53, 24)","(54, 24)","(55, 24)","(39, 25)","(40, 25)","(41, 25)","(50, 25)","(51, 25)","(52, 25)","(53, 25)","(54, 25)","(55, 25)","(39, 26)","(40, 26)","(41, 26)","(50, 26)","(51, 26)","(52, 26)","(53, 26)","(54, 26)","(55, 26)","(51, 27)","(52, 27)","(53, 27)","(50, 28)","(51, 28)","(52, 28)","(53, 28)","(19, 29)","(20, 29)","(21, 29)","(50, 29)","(51, 29)","(52, 29)","(19, 30)","(20, 30)","(21, 30)","(50, 30)","(51, 30)","(52, 30)","(19, 31)","(20, 31)","(21, 31)","(42, 32)","(43, 32)","(44, 32)","(40, 33)","(41, 33)","(42, 33)","(43, 33)","(44, 33)","(58, 33)","(59, 33)","(60, 33)","(40, 34)","(41, 34)","(42, 34)","(43, 34)","(44, 34)","(58, 34)","(59, 34)","(60, 34)","(31, 35)","(32, 35)","(33, 35)","(40, 35)","(41, 35)","(42, 35)","(58, 35)","(59, 35)","(60, 35)","(31, 36)","(32, 36)","(33, 36)","(31, 37)","(32, 37)","(33, 37)","(54, 39)","(55, 39)","(56, 39)","(54, 40)","(55, 40)","(56, 40)","(54, 41)","(55, 41)","(56, 41)","(18, 44)","(19, 44)","(20, 44)","(18, 45)","(19, 45)","(20, 45)","(62, 45)","(63, 45)","(18, 46)","(19, 46)","(20, 46)","(62, 46)","(63, 46)","(62, 47)","(63, 47)","(36, 50)","(37, 50)","(38, 50)","(36, 51)","(37, 51)","(38, 51)","(55, 51)","(56, 51)","(57, 51)","(36, 52)","(37, 52)","(38, 52)","(55, 52)","(56, 52)","(57, 52)","(55, 53)","(56, 53)","(57, 53)","(22, 54)","(23, 54)","(24, 54)","(22, 55)","(23, 55)","(24, 55)","(10, 56)","(11, 56)","(12, 56)","(22, 56)","(23, 56)","(24, 56)","(10, 57)","(11, 57)","(12, 57)","(20, 57)","(21, 57)","(22, 57)","(10, 58)","(11, 58)","(12, 58)","(20, 58)","(21, 58)","(22, 58)","(33, 58)","(34, 58)","(35, 58)","(20, 59)","(21, 59)","(22, 59)","(33, 59)","(34, 59)","(35, 59)","(33, 60)","(34, 60)","(35, 60)","(6, 62)","(7, 62)","(8, 62)","(6, 63)","(7, 63)","(8, 63)"],"data":{"(57, 0)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(58, 0)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(59, 0)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(54, 1)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(55, 1)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(56, 1)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(57, 1)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(58, 1)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(59, 1)":[{"i":"GC1T3RH","n":"O Bile pani"}],"(54, 2)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(55, 2)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(56, 2)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(54, 3)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(55, 3)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(56, 3)":[{"i":"GC1F2NP","n":"Peking Duck"}],"(44, 4)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(45, 4)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(46, 4)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(50, 4)":[{"i":"GC5TNQQ","n":"Den kurete vindaloo 2015 - Plzen"}],"(51, 4)":[{"i":"GC5TNQQ","n":"Den kurete vindaloo 2015 - Plzen"}],"(52, 4)":[{"i":"GC5TNQQ","n":"Den kurete vindaloo 2015 - Plzen"}],"(44, 5)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(45, 5)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(46, 5)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(50, 5)":[{"i":"GC5TNQQ","n":"Den kurete vindaloo 2015 - Plzen"}],"(51, 5)":[{"i":"GC5TNQQ","n":"Den kurete vindaloo 2015 - Plzen"}],"(52, 5)":[{"i":"GC5TNQQ","n":"Den kurete vindaloo 2015 - Plzen"}],"(44, 6)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(45, 6)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(46, 6)":[{"i":"GC18V5Z","n":"Ja trvam na tom, ze Plzen osvobodil Patton"}],"(50, 6)":[{"i":"GC5TNQQ","n":"Den kurete vindaloo 2015 - Plzen"}],"(51, 6)":[{"i":"GC5TNQQ","n":"Den kurete vindaloo 2015 - Plzen"}],"(52, 6)":[{"i":"GC5TNQQ","n":"Den kurete vindaloo 2015 - Plzen"}],"(57, 7)":[{"i":"GC5KNMV","n":"rooseveltuv most"}],"(58, 7)":[{"i":"GC5KNMV","n":"rooseveltuv most"}],"(59, 7)":[{"i":"GC5KNMV","n":"rooseveltuv most"}],"(31, 8)":[{"i":"GC1NT7W","n":"Magické oko"}],"(32, 8)":[{"i":"GC1NT7W","n":"Magické oko"}],"(33, 8)":[{"i":"GC1NT7W","n":"Magické oko"}],"(57, 8)":[{"i":"GC5KNMV","n":"rooseveltuv most"}],"(58, 8)":[{"i":"GC5KNMV","n":"rooseveltuv most"}],"(59, 8)":[{"i":"GC5KNMV","n":"rooseveltuv most"}],"(31, 9)":[{"i":"GC1NT7W","n":"Magické oko"}],"(32, 9)":[{"i":"GC1NT7W","n":"Magické oko"}],"(33, 9)":[{"i":"GC1NT7W","n":"Magické oko"}],"(57, 9)":[{"i":"GC5KNMV","n":"rooseveltuv most"}],"(58, 9)":[{"i":"GC5KNMV","n":"rooseveltuv most"}],"(59, 9)":[{"i":"GC5KNMV","n":"rooseveltuv most"}],"(16, 10)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(17, 10)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(18, 10)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(31, 10)":[{"i":"GC1NT7W","n":"Magické oko"}],"(32, 10)":[{"i":"GC1NT7W","n":"Magické oko"}],"(33, 10)":[{"i":"GC1NT7W","n":"Magické oko"}],"(16, 11)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(17, 11)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(18, 11)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(16, 12)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(17, 12)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(18, 12)":[{"i":"GC10EBM","n":"Kalikovsky mlyn"}],"(40, 12)":[{"i":"GC1T0MH","n":"V pekle"}],"(41, 12)":[{"i":"GC1T0MH","n":"V pekle"}],"(42, 12)":[{"i":"GC1T0MH","n":"V pekle"}],"(40, 13)":[{"i":"GC1T0MH","n":"V pekle"}],"(41, 13)":[{"i":"GC1T0MH","n":"V pekle"}],"(42, 13)":[{"i":"GC1T0MH","n":"V pekle"}],"(40, 14)":[{"i":"GC1T0MH","n":"V pekle"}],"(41, 14)":[{"i":"GC1T0MH","n":"V pekle"}],"(42, 14)":[{"i":"GC1T0MH","n":"V pekle"}],"(54, 15)":[{"i":"GC5TYMJ","n":"Plzensky Geo Tea(m) 2015 - leto"}],"(55, 15)":[{"i":"GC5TYMJ","n":"Plzensky Geo Tea(m) 2015 - leto"}],"(56, 15)":[{"i":"GC5TYMJ","n":"Plzensky Geo Tea(m) 2015 - leto"},{"i":"GCZ5J3","n":"Mala"}],"(57, 15)":[{"i":"GCZ5J3","n":"Mala"}],"(58, 15)":[{"i":"GCZ5J3","n":"Mala"}],"(54, 16)":[{"i":"GC5TYMJ","n":"Plzensky Geo Tea(m) 2015 - leto"}],"(55, 16)":[{"i":"GC5TYMJ","n":"Plzensky Geo Tea(m) 2015 - leto"}],"(56, 16)":[{"i":"GC5TYMJ","n":"Plzensky Geo Tea(m) 2015 - leto"},{"i":"GCZ5J3","n":"Mala"}],"(57, 16)":[{"i":"GCZ5J3","n":"Mala"}],"(58, 16)":[{"i":"GCZ5J3","n":"Mala"}],"(4, 17)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(5, 17)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(6, 17)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(53, 17)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(54, 17)":[{"i":"GC5TYMJ","n":"Plzensky Geo Tea(m) 2015 - leto"},{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(55, 17)":[{"i":"GC5TYMJ","n":"Plzensky Geo Tea(m) 2015 - leto"},{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(56, 17)":[{"i":"GC5TYMJ","n":"Plzensky Geo Tea(m) 2015 - leto"},{"i":"GCZ5J3","n":"Mala"}],"(57, 17)":[{"i":"GCZ5J3","n":"Mala"}],"(58, 17)":[{"i":"GCZ5J3","n":"Mala"}],"(4, 18)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(5, 18)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(6, 18)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(40, 18)":[{"i":"GC1534Q","n":"Hodina zemepisu"}],"(41, 18)":[{"i":"GC1534Q","n":"Hodina zemepisu"}],"(42, 18)":[{"i":"GC1534Q","n":"Hodina zemepisu"}],"(50, 18)":[{"i":"GC18NNN","n":"ARAKIS"}],"(51, 18)":[{"i":"GC18NNN","n":"ARAKIS"}],"(52, 18)":[{"i":"GC18NNN","n":"ARAKIS"}],"(53, 18)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(54, 18)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(55, 18)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(61, 18)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(62, 18)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(63, 18)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(4, 19)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(5, 19)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(6, 19)":[{"i":"GC1T0KZ","n":"Jikalka"}],"(40, 19)":[{"i":"GC1534Q","n":"Hodina zemepisu"}],"(41, 19)":[{"i":"GC1534Q","n":"Hodina zemepisu"},{"i":"GC11AZF","n":"Dopravni cache"}],"(42, 19)":[{"i":"GC1534Q","n":"Hodina zemepisu"},{"i":"GC11AZF","n":"Dopravni cache"}],"(43, 19)":[{"i":"GC11AZF","n":"Dopravni cache"},{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(44, 19)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(45, 19)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(50, 19)":[{"i":"GC18NNN","n":"ARAKIS"}],"(51, 19)":[{"i":"GC18NNN","n":"ARAKIS"}],"(52, 19)":[{"i":"GC18NNN","n":"ARAKIS"}],"(53, 19)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(54, 19)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(55, 19)":[{"i":"GC57PG8","n":"filmova mista - Discopribeh 2"}],"(61, 19)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(62, 19)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(63, 19)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(40, 20)":[{"i":"GC1534Q","n":"Hodina zemepisu"}],"(41, 20)":[{"i":"GC1534Q","n":"Hodina zemepisu"},{"i":"GC11AZF","n":"Dopravni cache"}],"(42, 20)":[{"i":"GC1534Q","n":"Hodina zemepisu"},{"i":"GC11AZF","n":"Dopravni cache"}],"(43, 20)":[{"i":"GC11AZF","n":"Dopravni cache"},{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(44, 20)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(45, 20)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(50, 20)":[{"i":"GC18NNN","n":"ARAKIS"},{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(51, 20)":[{"i":"GC18NNN","n":"ARAKIS"},{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(52, 20)":[{"i":"GC18NNN","n":"ARAKIS"},{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(59, 20)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(60, 20)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(61, 20)":[{"i":"GC20CJX","n":"Plzenska skladanka"},{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(62, 20)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(63, 20)":[{"i":"GC20CJX","n":"Plzenska skladanka"}],"(41, 21)":[{"i":"GC11AZF","n":"Dopravni cache"}],"(42, 21)":[{"i":"GC11AZF","n":"Dopravni cache"}],"(43, 21)":[{"i":"GC11AZF","n":"Dopravni cache"},{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(44, 21)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(45, 21)":[{"i":"GC1QJNJ","n":"Pijte kávu!"}],"(50, 21)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(51, 21)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(52, 21)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(59, 21)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(60, 21)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(61, 21)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(63, 21)":[{"i":"GC3AHCH","n":"PVS#1 Tajemstvi Velkeho Vonta"}],"(50, 22)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(51, 22)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"}],"(52, 22)":[{"i":"GC1CG3K","n":"Hodina vytvarne vychovy"},{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(53, 22)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(54, 22)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(59, 22)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(60, 22)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(61, 22)":[{"i":"GCZ55B","n":"Plzen ve stredoveku"}],"(63, 22)":[{"i":"GC3AHCH","n":"PVS#1 Tajemstvi Velkeho Vonta"}],"(52, 23)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(53, 23)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(54, 23)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"}],"(63, 23)":[{"i":"GC3AHCH","n":"PVS#1 Tajemstvi Velkeho Vonta"}],"(39, 24)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(40, 24)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(41, 24)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(50, 24)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"}],"(51, 24)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"}],"(52, 24)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"},{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"},{"i":"GCZKXM","n":"Mystery of Dictionaries"}],"(53, 24)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"},{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(54, 24)":[{"i":"GCQDB8","n":"Ve znameni kone / In the sign of horse"},{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(55, 24)":[{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(39, 25)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(40, 25)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(41, 25)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(50, 25)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"}],"(51, 25)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"}],"(52, 25)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"},{"i":"GCZKXM","n":"Mystery of Dictionaries"}],"(53, 25)":[{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(54, 25)":[{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(55, 25)":[{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(39, 26)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(40, 26)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(41, 26)":[{"i":"GCX6GH","n":"Petatricatnici / 35's"}],"(50, 26)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"}],"(51, 26)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"},{"i":"GC1XP9V","n":"Povesti z namesti"}],"(52, 26)":[{"i":"GC1JT5W","n":"Vanocni kes / Christmas cache"},{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GC1XP9V","n":"Povesti z namesti"}],"(53, 26)":[{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"},{"i":"GC1XP9V","n":"Povesti z namesti"}],"(54, 26)":[{"i":"GCZKXM","n":"Mystery of Dictionaries"},{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(55, 26)":[{"i":"GCW21Q","n":"Plzen, St. Bartholomeus Cathedral letterbox"}],"(51, 27)":[{"i":"GC1XP9V","n":"Povesti z namesti"}],"(52, 27)":[{"i":"GC1XP9V","n":"Povesti z namesti"}],"(53, 27)":[{"i":"GC1XP9V","n":"Povesti z namesti"}],"(50, 28)":[{"i":"GC5CB1V","n":"Pamet loutky- pribeh mesta Plzne"}],"(51, 28)":[{"i":"GC1XP9V","n":"Povesti z namesti"},{"i":"GC5CB1V","n":"Pamet loutky- pribeh mesta Plzne"}],"(52, 28)":[{"i":"GC1XP9V","n":"Povesti z namesti"},{"i":"GC5CB1V","n":"Pamet loutky- pribeh mesta Plzne"}],"(53, 28)":[{"i":"GC1XP9V","n":"Povesti z namesti"}],"(19, 29)":[{"i":"GCX846","n":"Pustit klic"}],"(20, 29)":[{"i":"GCX846","n":"Pustit klic"}],"(21, 29)":[{"i":"GCX846","n":"Pustit klic"}],"(50, 29)":[{"i":"GC5CB1V","n":"Pamet loutky- pribeh mesta Plzne"}],"(51, 29)":[{"i":"GC5CB1V","n":"Pamet loutky- pribeh mesta Plzne"}],"(52, 29)":[{"i":"GC5CB1V","n":"Pamet loutky- pribeh mesta Plzne"}],"(19, 30)":[{"i":"GCX846","n":"Pustit klic"}],"(20, 30)":[{"i":"GCX846","n":"Pustit klic"}],"(21, 30)":[{"i":"GCX846","n":"Pustit klic"}],"(50, 30)":[{"i":"GC5CB1V","n":"Pamet loutky- pribeh mesta Plzne"}],"(51, 30)":[{"i":"GC5CB1V","n":"Pamet loutky- pribeh mesta Plzne"}],"(52, 30)":[{"i":"GC5CB1V","n":"Pamet loutky- pribeh mesta Plzne"}],"(19, 31)":[{"i":"GCX846","n":"Pustit klic"}],"(20, 31)":[{"i":"GCX846","n":"Pustit klic"}],"(21, 31)":[{"i":"GCX846","n":"Pustit klic"}],"(42, 32)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(43, 32)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(44, 32)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(40, 33)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(41, 33)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(42, 33)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"},{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(43, 33)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(44, 33)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(58, 33)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(59, 33)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(60, 33)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(40, 34)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(41, 34)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(42, 34)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"},{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(43, 34)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(44, 34)":[{"i":"GCY81P","n":"Plzenske sady / Pilsener parks"}],"(58, 34)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(59, 34)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(60, 34)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(31, 35)":[{"i":"GC5Q8W6","n":"Nas slavny mestan Kardinal Beran"}],"(32, 35)":[{"i":"GC5Q8W6","n":"Nas slavny mestan Kardinal Beran"}],"(33, 35)":[{"i":"GC5Q8W6","n":"Nas slavny mestan Kardinal Beran"}],"(40, 35)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(41, 35)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(42, 35)":[{"i":"GCVMNH","n":"Divadlo J.K.Tyla"}],"(58, 35)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(59, 35)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(60, 35)":[{"i":"GC18RXP","n":"Strazce z praveku / Guard from the prehistory"}],"(31, 36)":[{"i":"GC5Q8W6","n":"Nas slavny mestan Kardinal Beran"}],"(32, 36)":[{"i":"GC5Q8W6","n":"Nas slavny mestan Kardinal Beran"}],"(33, 36)":[{"i":"GC5Q8W6","n":"Nas slavny mestan Kardinal Beran"}],"(31, 37)":[{"i":"GC5Q8W6","n":"Nas slavny mestan Kardinal Beran"}],"(32, 37)":[{"i":"GC5Q8W6","n":"Nas slavny mestan Kardinal Beran"}],"(33, 37)":[{"i":"GC5Q8W6","n":"Nas slavny mestan Kardinal Beran"}],"(54, 39)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(55, 39)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(56, 39)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(54, 40)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(55, 40)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(56, 40)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(54, 41)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(55, 41)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(56, 41)":[{"i":"GC15W53","n":"Hodina ceskeho jazyka"}],"(18, 44)":[{"i":"GC5BY5Z","n":"Jezte kekel"}],"(19, 44)":[{"i":"GC5BY5Z","n":"Jezte kekel"}],"(20, 44)":[{"i":"GC5BY5Z","n":"Jezte kekel"}],"(18, 45)":[{"i":"GC5BY5Z","n":"Jezte kekel"}],"(19, 45)":[{"i":"GC5BY5Z","n":"Jezte kekel"}],"(20, 45)":[{"i":"GC5BY5Z","n":"Jezte kekel"}],"(62, 45)":[{"i":"GC50EFF","n":"Wilsonuv most"}],"(63, 45)":[{"i":"GC50EFF","n":"Wilsonuv most"}],"(18, 46)":[{"i":"GC5BY5Z","n":"Jezte kekel"}],"(19, 46)":[{"i":"GC5BY5Z","n":"Jezte kekel"}],"(20, 46)":[{"i":"GC5BY5Z","n":"Jezte kekel"}],"(62, 46)":[{"i":"GC50EFF","n":"Wilsonuv most"}],"(63, 46)":[{"i":"GC50EFF","n":"Wilsonuv most"}],"(62, 47)":[{"i":"GC50EFF","n":"Wilsonuv most"}],"(63, 47)":[{"i":"GC50EFF","n":"Wilsonuv most"}],"(36, 50)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(37, 50)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(38, 50)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(36, 51)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(37, 51)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(38, 51)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(55, 51)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(56, 51)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(57, 51)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(36, 52)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(37, 52)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(38, 52)":[{"i":"GC18RYQ","n":"Masarykovo námestí"}],"(55, 52)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(56, 52)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(57, 52)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(55, 53)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(56, 53)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(57, 53)":[{"i":"GC3DN3N","n":"PVS#6 Uzlik"}],"(22, 54)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(23, 54)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(24, 54)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(22, 55)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(23, 55)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(24, 55)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(10, 56)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(11, 56)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(12, 56)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(22, 56)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(23, 56)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(24, 56)":[{"i":"GC2NMZB","n":"Plzen – zst. Jizni predmesti / South Station"}],"(10, 57)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(11, 57)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(12, 57)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(20, 57)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(21, 57)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(22, 57)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(10, 58)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(11, 58)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(12, 58)":[{"i":"GC17G5F","n":"Bio Plzen"}],"(20, 58)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(21, 58)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(22, 58)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(33, 58)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(34, 58)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(35, 58)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(20, 59)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(21, 59)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(22, 59)":[{"i":"GC4MFBT","n":"Jedina plzenska zrusena zeleznice"}],"(33, 59)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(34, 59)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(35, 59)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(33, 60)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(34, 60)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(35, 60)":[{"i":"GC3HRHF","n":"Pijte sodovku!"}],"(6, 62)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}],"(7, 62)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}],"(8, 62)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}],"(6, 63)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}],"(7, 63)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}],"(8, 63)":[{"i":"GC2YPEF","n":"Veda a technika v Plzni"}]}} \ No newline at end of file diff --git a/test/test_geocaching.py b/test/test_geocaching.py index 2463209..a7cdb67 100644 --- a/test/test_geocaching.py +++ b/test/test_geocaching.py @@ -109,22 +109,28 @@ def test_calculate_initial_tiles(self): def test_get_utfgrid_caches(self): """Load tiles and check if expected caches are found""" - file_path = os.path.join(os.path.dirname(__file__), "sample_caches") + + # load expected result + file_path = os.path.join(os.path.dirname(__file__), "sample_caches.csv") expected_caches = set() with open(file_path) as f: for row in f: wp = row.split(',')[0] expected_caches.add(wp) n_orig = len(expected_caches) + + # load search result additional_caches = set() for c in self.g._get_utfgrid_caches((8800, 5574, 14),): if c.wp in expected_caches: expected_caches.discard(c.wp) else: additional_caches.add(c.wp) + with self.subTest("Expected caches found"): self.assertLess(len(expected_caches) / n_orig, 0.2, "Over 20 % of expected caches are lost.") + with self.subTest("Unexpected caches not found"): self.assertLess(len(additional_caches) / n_orig, 0.2, "Over 20 % of found caches are unexpected.") diff --git a/test/test_utfgrid.py b/test/test_utfgrid.py index f7b1e87..5ad183d 100644 --- a/test/test_utfgrid.py +++ b/test/test_utfgrid.py @@ -5,7 +5,6 @@ import logging import unittest -import pycaching from pycaching import Geocaching from pycaching.utfgrid import UTFGrid, GridCoordinateBlock from pycaching.errors import Error @@ -14,8 +13,8 @@ _this_folder = os.path.dirname(__file__) -sample_files = {i: os.path.join(_this_folder, i) - for i in ["sample_caches", "sample.json"]} +sample_files = {i: os.path.join(_this_folder, i) for i in ["sample_caches.csv", "sample_utfgrid.json"]} + class TestUTFGrid(unittest.TestCase): @@ -26,27 +25,25 @@ def test_download(self): """Test if downloading a tile goes nice without errors""" self.grid._gc.login(_username, _password) with self.subTest("Not getting .png tile first"): - caches = list(self.grid.download()) + list(self.grid.download()) with self.subTest("Getting .png tile first"): - caches = list(self.grid.download(get_png_first=True)) + list(self.grid.download(get_png_first=True)) def test_parse(self): """Parse locally stored grid and compare to expected results""" expected_caches = {} - with open(sample_files["sample_caches"]) as f: + with open(sample_files["sample_caches.csv"]) as f: for row in f: wp, lat, lon = row.split(',') expected_caches[wp] = (float(lat), float(lon)) - with open(sample_files["sample.json"]) as f: + with open(sample_files["sample_utfgrid.json"]) as f: j = json.loads(f.read()) caches = self.grid._parse_utfgrid(j) for c in caches: with self.subTest("Cache " + wp): self.assertIn(c.wp, expected_caches) - self.assertAlmostEqual(c.location.latitude, - expected_caches[c.wp][0]) - self.assertAlmostEqual(c.location.longitude, - expected_caches[c.wp][1]) + self.assertAlmostEqual(c.location.latitude, expected_caches[c.wp][0]) + self.assertAlmostEqual(c.location.longitude, expected_caches[c.wp][1]) expected_caches.pop(c.wp) self.assertEqual(len(expected_caches), 0) @@ -80,9 +77,9 @@ class TestGridCoordinateBlock(unittest.TestCase): (-2, 0), (63, 65)], } bad_cases = {'too much points': - [(1, 1), (1, 2), (1, 3), - (2, 1), (2, 2), (2, 3), - (3, 1), (3, 2), (3, 3), (3, 4)], + [(1, 1), (1, 2), (1, 3), + (2, 1), (2, 2), (2, 3), + (3, 1), (3, 2), (3, 3), (3, 4)], 'still too much points': [(63, 30), (63, 31), (63, 32), (63, 33)], 'point missing: 9': @@ -93,11 +90,11 @@ class TestGridCoordinateBlock(unittest.TestCase): [(1, 0), (1, 1), (2, 0), (3, 0), (3, 1)], - 'points not aligned': + 'points not aligned': [(1, 1), (1, 2), (1, 3), - (2, 1), (2, 3), (2, 4), + (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3)], - } + } def setUp(self): self.grid = UTFGrid(Geocaching(), 8800, 5574, 14) @@ -142,7 +139,7 @@ def test_add_point(self): self.cb.points = [] self.cb.add((3, 4)) self.assertEqual(self.cb.points, - GridCoordinateBlock(self.grid, (3,4)).points) + GridCoordinateBlock(self.grid, (3, 4)).points) with self.subTest("Multiple points: pass directly"): points = [(0, 0), (1, 2), (3, 4), (1, 2), (5, 6)]