Skip to main content

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+
  • aiohttp
  • msgspec

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

warframe_market_py-1.1.0.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

warframe_market_py-1.1.0-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

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

Hashes for warframe_market_py-1.1.0.tar.gz
Algorithm Hash digest
SHA256 75a887b2b21e797541881c89c49a79cddc7d2d3522b30a85903cca7eb540858c
MD5 97c01915e02f37dbc7dc662182b34fa2
BLAKE2b-256 057bd1b4eab31d106864daaaeaeaa1069f338b1a12fee90547f4a6df0eb69588

See more details on using hashes here.

File details

Details for the file warframe_market_py-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for warframe_market_py-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a5c7abbe1f82aad5ffc16573eeac35a00327060b94d7461b1a1b05611fba23f
MD5 9160920fe71e8aa2a6fe23de39fe65f8
BLAKE2b-256 8d87a5c7f53049260ad88b5282b511767de95e4ff44002cd605ef064d20da7b3

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