Skip to main content

Geocaching.com site crawler. Provides tools for searching, fetching caches and geocoding.

Project description

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

Features

  • login to Geocaching.com
  • search for up to 200 caches around any point
  • load cache details by WP
    • normal loading (loads all details)
    • quick loading (loads just basic info very quickly)
    • NEW: lazy loading (create cache object and load info on demand)
  • geocode given location

Roadmap

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

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.2.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)

Appendix

Inspiration

Original version was inspired by these packages:

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

Author

Tomas Bedrich

Build Status Coverage Status PyPI monthly downloads

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pycaching, version 3.0.1
Filename, size File type Python version Upload date Hashes
Filename, size pycaching-3.0.1.tar.gz (14.0 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page