BC Ferries Python Library
Project description
This is the Python client library for interacting with information published on the BC Ferries mobile site. It is essentially a wrapper around a BeautifulSoup-powered scraper. Better documentation and tests are still in the works; feel free to contribute!
Installation
pip install bcferries
Usage
from bcferries import BCFerries
bc = BCFerries()
terminals = bc.terminals()
# {u'Horseshoe Bay': BCFerriesTerminal (Horseshoe Bay), u'Tsawwassen': BCFerriesTerminal (Tsawwassen)}
t = terminals['Tsawwassen']
# BCFerriesTerminal (Tsawwassen)
routes = t.routes()
# {u'Tsawwassen to Duke Point': BCFerriesRoute (Tsawwassen to Duke Point)}
r = routes['Tsawwassen to Duke Point']
# BCFerriesRoute (Tsawwassen to Duke Point)
crossing = r.crossings()['10:45pm']
# BCFerriesCrossing (Tsawwassen to Duke Point at 5:45pm)
crossing.capacity
# BCFerriesCapacity (18% Full)
All returned dictionaries have fuzzy string matching on they keys.
routes['Tsawwassen to Duke Point'] == routes['Tsaw to DP']
# True
There is also fuzzy time matching on keys that represent a nearby time.
r = routes['HBay to DBay']
schedule = r.schedule()
schedule['6:12 PM']
# BCFerriesScheduledCrossing (Queen of Cowichan at 6:30 PM)
bcferries caches the last 128 API calls by default. You can change this to any integer you want, or set it to zero to disable caching.
import bcferries.api
bcferries.api.BCFerriesAPI.cache_last = 16
You can also pass any function the ignore_cache keyword argument to bypass the cache, or call the flush_cache method on BCFerries to clear the entire cache.
terminals = bc.terminals() # initial call takes multiple seconds
terminals = bc.terminals() # repeated call returns almost instantly
terminals = bc.terminals(ignore_cache=True) # takes multiple seconds to return
bc.flush_cache() # wipes the cache
You can export any subset of information with a call to to_dict on any object. You can also use to_fuzzy_dict and to_json as needed. To export all available information, call any of these methods on a BCFerries instance, and be prepared to wait a while.
crossing.capacity
# BCFerriesCapacity (18% Full)
crossing.capacity.to_dict()
# {'passenger_filled': 32, 'mixed_filled': 4, 'name': '18% Full', 'filled': 18}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bcferries-0.0.7.macosx-10.9-x86_64.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 938165ed87da1d2ed30c64a8e2ab92d5ddb327d5dcba7573693bef67faab4093 |
|
MD5 | 8bb3f8a5e92339e00102d33ecfc19364 |
|
BLAKE2b-256 | a24e43d5a325d5261817639127dd966beadeec5fd0ab28bb0e2f252d470341ea |