Skip to main content
Help us improve Python packaging – donate today!

Detect your current location.

Project Description

A simple command-line utility (and Python module) to determine your current location.

Doko is a clone of Victor Jalencas’s whereami utility, but unlike whereami it supports multiple strategies for finding your location.

Kudos to Richo Healey for ideas and patches.

Installing

To install just GeoIP support, run:

$ pip install doko

However, on OS X 10.6 (Mountain Lion) or later, you can also use the much more accurate Core Location framework:

$ pip install doko[corelocation]

Using Core Location

Once you’ve installed the corelocation-enabled doko package, you’ll need to enable Core Location in System Preferences, in the “Security” or “Security & Privacy” section. Furthermore, you must be using Wifi for it to work.

Hacking

For hacking on OSX, you will likely want to install requires-corelocation.txt as well as requires.txt.

Linting the code is best done with flake8. The options used internally are --max-complexity=12 --ignore=E126,E123,E128.

Using on the command-line

Just run the doko command:

$ doko
35.674,139.701

This will give its best guess as to your location, depending on the strategies that are available. Use the --show option to open the location in Google Maps.

More fine-grained control over strategies used and the precision returned is available. See doko --help.

Using as a module

> import doko
> doko.location('geoip')  # on any platform
Location(latitude=35.674, longitude=139.701, source='geoip')
> doko.location('corelocation')  # on OS X, using Core Location
Location(latitude=35.674851, longitude=139.701419, source='corelocation')
> doko.Location.set_precision(2)
> doko.location()
Location(latitude=35.67, longitude=139.70, source='corelocation')

Landmarks

You can use the doko-landmark command to store known landmarks, which you can then specify to doko using the DOKO_LANDMARK environment variable. This is useful if you’re somewhere you go often without GPS:

$ doko-landmark --add ueno-park 35.713965 139.77411
$ doko-landmark --list
ueno-park [35.713965, 139.77411]
$ doko  # will give its best guess
35.674851,139.70141
$ DOKO_LANDMARK=ueno-park doko  # will use the landmark
35.713965,139.77411

Changelog

0.3.0

  • Add a means for storing and using known landmarks
  • Add a cache strategy enabled by --cache option
  • Include location source in Location tuple
  • Add --show-strategy option on the command-line

0.2.0

  • Make doko multiplatform, by making Core Location optional
  • Honour timeouts for GeoIP lookups
  • Provide control over precision to support privacy

0.1.0

  • Fetch latitude and longitude using Core Location
  • Provide backup method via GeoBytes page

Release history Release notifications

History Node

0.4.0

History Node

0.3.1

This version
History Node

0.3.0

History Node

0.2.0

History Node

0.1.0

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
doko-0.3.0.tar.gz (6.1 kB) Copy SHA256 hash SHA256 Source None Jan 2, 2013

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page