Skip to content

kumy/pycaching

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pycaching - Geocaching for Python

A Python 3 interface for working with Geocaching.com website.

Features

  • login to Geocaching.com
  • search caches
    • normal search (unlimited number of caches from any point)
    • quick search (all caches inside some area)
  • load cache details by WP
    • normal loading (loads all details)
    • quick loading (loads just basic info very quickly)
    • lazy loading (create cache object and load info on demand)
  • load trackable details by tracking-code
  • geocode given location

Roadmap

  • search results caching (not geo- :)
  • Sphinx documentation
  • submitting cache logs
  • usage of asyncio
  • automatic generation of possible cache attributes - partially done

Installation

Using pip:

pip install pycaching

Manually, from GIT:

git clone https://github.com/tomasbedrich/pycaching.git

Requirements

  • Python >= 3.0 (>= 3.4 required for running tests)
  • MechanicalSoup >= 0.3.0
  • geopy >= 1.0.0

Example usage

Login

import pycaching
geocaching = pycaching.login("user", "pass")

The above is just shortcut for:

from pycaching import Geocaching
geocaching = Geocaching()
geocaching.login("user", "pass")

Load a cache details

import pycaching

geocaching = pycaching.login("user", "pass")
cache = geocaching.load_cache("GC12345")
print(cache.name)

Using lazy loading:

from pycaching import Geocaching, Cache

geocaching = Geocaching()
geocaching.login("user", "pass")
cache = Cache("GC12345", geocaching)
print(cache.name)

The difference is, that Cache object is created immediately and the page is loaded when needed (accessing the name).

Find all traditional caches around

Notice the limit in search function. It is because search() returns a generator object, which would fetch the caches forever in case of simple loop.

from pycaching import Geocaching, Point

point = Point(10.123456, 10.123456)
geocaching = Geocaching()
geocaching.login("user", "pass")

for cache in geocaching.search(point, limit=50):
    if cache.cache_type == "Traditional Cache":
        print(cache.name)

Find all caches on some adress

import pycaching

geocaching = pycaching.login("user", "pass")
point = geocaching.geocode("10900 Euclid Ave in Cleveland")

for cache in geocaching.search(point, limit=10):
    print(cache.name)

Find approximate location of caches in area

from pycaching import Geocaching, Point, Rectangle

geocaching = pycaching.Geocaching()
geocaching.login("user", "pass")
rect = Rectangle(Point(60.15, 24.95), Point(60.17, 25.00))

for c in geocaching.search_quick(rect, strict=True):
    print('{:8} ({:.5f}, {:.5f}) (+- {:.1f} m); {}'.format(
        c.wp, c.location.latitude, c.location.longitude,
        c.location.precision, c.name))

Load trackable details

import pycaching
geocaching = pycaching.login("user", "pass")
travelbug = geocaching.load_trackable("TB3ZGT2")
print("Goal:\n", travelbug.goal,
    "\n\nDescription:\n", travelbug.description,
    "\n\nCurrent Location:\n", travelbug.location)

Find all nearby caches with trackables in them

Notice the limit in search function. It is because search() returns a generator object, which would fetch the caches forever in case of simple loop.

from pycaching import Geocaching, Point

point = Point(56.25263, 15.26738)
geocaching = Geocaching()
geocaching.login("user", "pass")

for cache in geocaching.search(point, limit=50):
    if len(cache.trackables) > 0:
        print(cache.name)

Appendix

Be sure to read Geocaching.com's terms of use. By using this piece of software you break them and your Geocaching account may be suspended or even deleted. To prevent this, I recommend you to load the data you really need, nothing more. This software is provided "as is" and I am not responsible for any damage possibly caused by it.

Inspiration

Original version was inspired by these packages:

Although the new version was massively rewritten, I'd like to thank to their authors.

Author


Build Status Coverage Status PyPI monthly downloads

About

Geocaching.com site crawler. Searches and loads caches.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%