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.0.3.tar.gz (11.0 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.0.3-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file warframe_market_py-1.0.3.tar.gz.

File metadata

  • Download URL: warframe_market_py-1.0.3.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for warframe_market_py-1.0.3.tar.gz
Algorithm Hash digest
SHA256 61f35803bdeed83bb796a3783d48baf7e3a86a09b435f1bb21d3e34a7b998ad5
MD5 7c691325d4a696db54b39199679ffa9c
BLAKE2b-256 ae6a272cf61b887b1bebe0f5a0ec0e6672c0ccd8b8faaf32d40fa92132ae8b14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for warframe_market_py-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4d9eafe775ed495c1148dda31da7cb960d735c1be7467d91643a2a0f8fa48aa3
MD5 7e4d7d98fc99fd3162e9cd671510eea6
BLAKE2b-256 0d5c9ef4b934f55bbbf0922ad5fa294f3cf5c101af667a28a5114019d8af4fe4

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