Skip to main content

EVE CREST access tool

Project description

# Prest

## Summary

Prest is a Python library for accessing EVE Online's CREST API.

## Installation

From [pip](https://pip.pypa.io/en/stable/):

```bash
pip install eveprest
```

## Use

### Initialization

```python
from prest import Prest

prest = Prest()
```

### Attributes and calls

* Calling
* on `prest.Prest`: reload the base URI data
* `prest()` -> the same `prest.Prest`
* on `prest.APIElement`: navigate to a new page
* `prest.foo()` -> `prest.APIElement`
* Getting attribute by text or item by index
* from `prest.Prest`: return a data subset or navigate to a new page
* `prest.foo` -> `str`, `int`, `float`, `prest.APIElement` of data subset, `prest.APIElement` to new page
* from `prest.APIElement`: return a data subset
* `prest.foo.bar` -> `str`, `int`, `float`, `prest.APIElement`

To reduce typing, `prest.Prset.__getattr__` combines the functionality of `prest.APIElement.__getattr__` and `prest.APIElement.__call__` so that calls can be made like `prest.foo` instead of `prest().foo`.

If you wanted to access the X position of the Kimoto constellation, the call would be:

```python
prest.constellations().items.find(name='Kimotoro')().position.x
```

From the [base url](https://crest-tq.eveonline.com/) "constellations" is a root-level dictionary item with a "href" item, which can be called to navigate to [that page](https://crest-tq.eveonline.com/constellations/).

From there, the `.items` attribute dives into the `items` dictionary key and then a `find` method is used to get an element from the list of dictionaries (you could loop through the items yourself, but `find` is for convenience). This dictionary has a "href" element, so call the attribute to navigate [there](https://crest-tq.eveonline.com/constellations/20000020/).

Now on the final page, access the "position" key and finally its "x" key, which is `-134996400468185440`.

### Examples

1. Market types -> page count

```python
prest.marketTypes().pageCount
```

2. "Jump Through a Wormhole" opportunity description

```python
prest.opportunities.tasks().items.find(name='Jump Through a Wormhole').description
```

3. Jita 4-4 moon name

```python
prest.systems().items.find(name='Jita')().planets[3].moons[3]().name
```

### Using the cache

When you make a call to `prest.foo`, the root CREST URI data stored locally will be checked for an expired cache timer (the root URI's data is loaded when instantiating a new `prest.Prest` object, you don't need to do it manually). If it's expired, the root URI will be gotten anew and cached. This is similar for `prest.foo().bar().baz()` - if all of `foo`, `bar`, and `baz` were dictionaries with `'href'` keys that pointed to new pages, each would use the cache to retrieve the page, only making a new request to CREST if the local copy of the page is either non-existent or expired.

However, when getting attributes from a page, like `prest.foo().bar.baz`, neither `bar` or `baz` on the page will be using the cache. Thus, in order to make the same call multiple times over a period of time and using the cache, either make the full `prest.foo().bar.baz` call again, or save the last-called element as a local variable and call that:

```python
foo = prest.foo

print(foo().bar.baz)

# later:
print(foo().bar.baz)

# later:
print(foo().bar.baz)
```

### Authentication

Accessing the authenticated parts of CREST is done through authenticating Prest:

```python
from prest import *

prest = Prest(client_id='', client_secret='', client_callback='')
prest.get_authorize_url()
auth = prest.authenticate(code)
```

In the code above, `get_authorize_url` returns a URL to redirect a web app client to so they can log into EVE's SSO. Once they've redirected back to your web application, pass the code in the returning URL from EVE to the `authenticate` call and assign the resulting `prest.AuthPrest` object.

This `prest.AuthPrest` object works the same as the unathenticated `prest.Prest` object: use attributes and calls to navigate and load CREST data, respectively.

Example of accessing a character's location:

```python
print(auth.decode().character().location())
```

Project details


Download files

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

Source Distribution

EVEPrest-1.2.4.tar.gz (7.2 kB view details)

Uploaded Source

File details

Details for the file EVEPrest-1.2.4.tar.gz.

File metadata

  • Download URL: EVEPrest-1.2.4.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for EVEPrest-1.2.4.tar.gz
Algorithm Hash digest
SHA256 6f8cdfda8bd10c8faa1b14051a93b616613da82b2982cc1ab64ce1f854c73f70
MD5 c9e353ed9a2b701cb0afd47aba15d1bb
BLAKE2b-256 ba155188332e594875053bd175c8b1e89f9a3a8a50d2b3d52cf2792882af6467

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page