An asynchronous Python wrapper for Warframe.Market API
Project description
warframe-market.py
An asynchronous Python client for the Warframe Market API V2.
Warning: This project is in development and not yet ready for production use.
Installation
pip install warframe-market.py
Requirements
- Python 3.9+
aiohttpmsgspec
Basic Usage
import asyncio
from warframe_market.client import WarframeMarketClient
from warframe_market.api.item import Items, Item
async def main():
async with WarframeMarketClient() as client:
# Get all items
items = await client.get_all_items()
for item in items.data:
print(item.i18n["en"].name)
# Get a single item
item = await client.get_item("nova_prime_set")
print(item)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
Advanced Usage
Other languages or platforms
By default, the client uses English language, platform is PC and crossplay enabled. You can change these settings by passing parameters to the client:
from warframe_market.client import WarframeMarketClient
from warframe_market.common import Language, Platform
async with WarframeMarketClient(
language=Language.ENGLISH,
platform=Platform.SWITCH,
crossplay=False
) as client:
# Your code here
Get top 5 sell/buy orders for an item
from warframe_market.client import WarframeMarketClient
async with WarframeMarketClient() as client:
item = "nekros_prime_chassis_blueprint"
item_data = await client.get_top_orders_for_item(item)
print(f"Top sell orders: \n {item_data.data.sell}")
print(f"Top buy orders: \n {item_data.data.buy}")
Get top 5 sell/buy orders for an item with custom parameters
Items like mods can have additional parameters like rank You can pass these parameters in 2 ways:
from warframe_market.client import WarframeMarketClient
from warframe_market.api import OrdersItemTop
async with WarframeMarketClient() as client:
item = "primed_continuity"
rank = 10 # for maxed rank
# Using the API model
item_data = await client.get(OrdersItemTop, slug=item, rank=rank)
print(f"Top sell orders: \n {item_data.data.sell}")
print(f"Top buy orders: \n {item_data.data.buy}")
# Using the convenience method
item_data = await client.get_top_orders_for_item(item, rank=rank)
print(f"Top sell orders: \n {item_data.data.sell}")
print(f"Top buy orders: \n {item_data.data.buy}")
Use API models directly
from warframe_market.client import WarframeMarketClient
from warframe_market.api import OrdersItemTop
async with WarframeMarketClient() as client:
item = "nekros_prime_chassis_blueprint"
item_data = await client.get(OrdersItemTop, slug=item)
print(f"Top sell orders: \n {item_data.data.sell}")
print(f"Top buy orders: \n {item_data.data.buy}")
Use a custom API model
import msgspec
from typing import Optional
from warframe_market.client import WarframeMarketClient
from warframe_market.common import BaseRequest
class _CustomData(msgspec.Struct):
"""Custom data model"""
field1: str
field2: Optional[str] = None
class CustomAPI(BaseRequest):
"""Custom API request model"""
endpoint = "/a/new/endpoint/{slug}"
__slug__ = True # Indicates that 'slug' is a path parameter
__params__ = ["param1", "param2" ] # Query parameters allowed in the request
data: _CustomData
async with WarframeMarketClient() as client:
item = "nekros_prime_chassis_blueprint"
param1 = "value1"
param2 = "value2"
custom_data = await client.get(CustomAPI, slug=item, param1=param1, param2=param2)
print(custom_data.data.field1)
print(custom_data.data.field2)
License
This project is licensed under the MIT License. See the LICENSE file for details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file warframe_market_py-1.1.0.tar.gz.
File metadata
- Download URL: warframe_market_py-1.1.0.tar.gz
- Upload date:
- Size: 19.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75a887b2b21e797541881c89c49a79cddc7d2d3522b30a85903cca7eb540858c
|
|
| MD5 |
97c01915e02f37dbc7dc662182b34fa2
|
|
| BLAKE2b-256 |
057bd1b4eab31d106864daaaeaeaa1069f338b1a12fee90547f4a6df0eb69588
|
File details
Details for the file warframe_market_py-1.1.0-py3-none-any.whl.
File metadata
- Download URL: warframe_market_py-1.1.0-py3-none-any.whl
- Upload date:
- Size: 22.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a5c7abbe1f82aad5ffc16573eeac35a00327060b94d7461b1a1b05611fba23f
|
|
| MD5 |
9160920fe71e8aa2a6fe23de39fe65f8
|
|
| BLAKE2b-256 |
8d87a5c7f53049260ad88b5282b511767de95e4ff44002cd605ef064d20da7b3
|