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.4.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.4-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: warframe_market_py-1.0.4.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.4.tar.gz
Algorithm Hash digest
SHA256 16f0d21f7e9ca4522a07a40f6596927bc0542cee0dbb64cf57812f08e02a7c63
MD5 1819494f1ed47ae33d2fff4aae8d7dff
BLAKE2b-256 3e52a43fffb11dce132c8cd7289d4c084a582285d1c4fab29d6418d0f7f6ddb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for warframe_market_py-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c7021e28e834f4252e7fd0858e45d46e083a0eadc4d412595abfd31bd9d03660
MD5 be86065edb6ee4b18fe1057d5acc88cb
BLAKE2b-256 2291a0d8b2d1aa1925a52e2531ffec161067fb40e0907f18d85512c0c489e865

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