An open API service indexing awesome lists of open source software.

https://github.com/leonardodalinky/pywmapi

πŸ”₯ API for warframe market, implemented in Python.
https://github.com/leonardodalinky/pywmapi

python warframe warframe-market

Last synced: about 1 year ago
JSON representation

πŸ”₯ API for warframe market, implemented in Python.

Awesome Lists containing this project

README

          

# pywmapi

[![github action packaging test badge](https://img.shields.io/github/actions/workflow/status/leonardodalinky/pywmapi/python-package-test-main.yml?branch=main)](https://github.com/leonardodalinky/pywmapi/tree/main)
[![pypi package version badge](https://img.shields.io/pypi/v/pywmapi)](https://pypi.org/project/pywmapi/)
![python version badge](https://img.shields.io/badge/python-%3E%3D3.7-blue)
[![license badge](https://img.shields.io/github/license/leonardodalinky/pywmapi)](https://github.com/leonardodalinky/pywmapi/blob/main/LICENSE)
[![star badge](https://img.shields.io/github/stars/leonardodalinky/pywmapi?style=social)](https://github.com/leonardodalinky/pywmapi)

**PY**thon **W**arframe **M**arket **API**(pywmapi)

πŸ”₯ API for warframe market, implemented in Python.

> *"Thank you tinsuit, a fine trade. Transaction complete, haha!" -- Maroo*

For now, the implemented function is listed below:

* auth
* βœ… sign in
* πŸ†– register
* πŸ†– restore password
* profile
* βœ… get current user's profile
* πŸ”² manage current user profile
* βœ… get a user's profile
* πŸ”² get all of a user's achievements
* πŸ”² get all of a user's reviews
* βœ… set current user's online/offline status
* items
* βœ… list all tradable items
* βœ… get info about an item
* statistics
* βœ… get statistics of an item
* πŸ”² get global market statistics
* orders
* βœ… get orders of a single item
* πŸ”² get orders for the last 4 hours
* βœ… update a single order on the current profile
* βœ… delete a single order on the current profile
* βœ… add a new order for the current profile
* πŸ”² get user's sale statistics(closed orders)
* βœ… get all of a user's orders
* liches
* βœ… list all lich weapons
* βœ… list all lich ephemeras
* βœ… list all lich quirks
* rivens
* βœ… list all riven items
* βœ… get a list of riven attributes
* misc
* πŸ”² get a list of all known game locations
* πŸ”² get a list of all known npcs
* πŸ”² get a list of all known missions
* auctions
* βœ… create auction ⚠️
* πŸ”² get a list of riven auctions by given search params
* πŸ”² get a list of lich auctions by given search params
* auction entry️
* πŸ”² get info about auction by auction id
* πŸ”² get auction bids by auction id

Symbols:
* βœ…: implemented
* πŸ†–: unavailable due to some intractable problem
* πŸ”²: not implemented yet
* ⚠️: *experimental* and unstable

There are more APIs that are not recorded in the official documentation. Once all the above APIs are done, we would get on these undocumented APIs ASAP.

**According to the official API documentation, there's a limit on the API that could only be called 3 times per sec. Otherwise, the request may be blocked by the cloudflare.**

## Installation

```
pip install pywmapi
```

The version of Python **MUST >= 3.7** since `dataclasses` is used.

## Guidance

package of pywmapi is structured as:
```
.
β”œβ”€β”€ auth
β”œβ”€β”€ common
β”œβ”€β”€ exceptions
β”œβ”€β”€ experimental
β”‚ └── auctions
β”œβ”€β”€ items
β”œβ”€β”€ lang
β”œβ”€β”€ liches
β”œβ”€β”€ orders
β”œβ”€β”€ profile
β”œβ”€β”€ rivens
β”œβ”€β”€ statistics
└── utils.py
```

* `auth`: authentication such as signin
* `experimental`: experimental functionalities
* `auctions`: auctions related
* `items`: item related
* `liches` lich related
* `orders`: orders manipulation
* `profile`: user profile manipulation
* `rivens`: riven related
* `statistics`: statistics of items

πŸ’ͺ *More functionalities is coming!*

πŸ—οΈ *Better documentation is under construction!*

The param `url_name` of some functions is regarded as the unique name for each item. For instance, if I search for the item *Chroma Prime Systems* on warframe market, the url for this page become *https://warframe.market/items/chroma_prime_systems*. And the last part of this url string is exactly the `url_name` for this item, i.e. `chroma_prime_systems`!

Another way to get `url_name` for an item is through the `items.list_items()` function.

### Examples

First, we import the package as:
```python
import pywmapi as wm
```

To list all of the tradable items:
```python
wm.items.list_items()
```

To get the info for any item with its `url_name`:
```python
wm.items.get_item("chroma_prime_systems")
```

To get the orders of a specific item:
```python
wm.items.get_orders("chroma_prime_systems")
```

To create order:
```python
sess = wm.auth.signin("your_account", "your_password")
# new selling order item of "Flame Gland" for 1000 platinum, quantity 1, rank 0 and invisible
new_item = wm.orders.OrderNewItem(
item_id="5be5f5a23ffcc7038857f119",
order_type=wm.common.OrderType.sell,
platinum=1000,
quantity=1,
rank=0,
visible=False,
)
new_order = wm.orders.add_order(sess, new_item)
```

To get the statistics of historical prices of any item:
```python
wm.statistics.get_statistic("chroma_prime_systems")
```

Signin & get current orders:
```python
sess = wm.auth.signin("your_account", "your_password")
sell_orders, buy_orders = wm.orders.get_current_orders(sess)
```

To get all rivens templates:
```python
wm.rivens.list_items()
```

Some of these function may have various optional params, such as `platform`, `lang`, `include`, etc.

More APIs and docs could be found in corresponding packages and docstrings.

## Reference

[Warframe market official API documentation](https://warframe.market/api_docs)

[WFCD/market-api-spec](https://github.com/WFCD/market-api-spec)

[Public WM API](https://docs.google.com/document/d/1121cjBNN4BeZdMBGil6Qbuqse-sWpEXPpitQH5fb_Fo)

## Changelog

See [CHANGELOG.md](CHANGELOG.md).

## Contributing
Check out [CONTRIBUTE.md](CONTRIBUTE.md) for more information.

Feel free to make any issue or PR! 😊

*Or contact me in game!*

## Donating

Any sort of donation in game would be appreciated.

Contact me in game:
```
/w AyajiLin Hi! ${Your words here}.
```

🀣 *Relics or 5 platinums would be enough.*