Skip to main content

a wrapper around osrs api's

Project description

The project

The goal is to make a wrapper around the various oldschool runescape api's.

osrs hiscores

import asyncio

from aiohttp import ClientSession

from osrs.asyncio import Hiscore, HSMode
from osrs.utils import RateLimiter
from osrs.exceptions import PlayerDoesNotExist


async def main():
    # 100 calls per minute
    limiter = RateLimiter(calls_per_interval=100, interval=60)
    hiscore_instance = Hiscore(proxy="", rate_limiter=limiter)
    
    async with ClientSession() as session:
        player_stats = await hiscore_instance.get(
            mode=HSMode.OLDSCHOOL,
            player="extreme4all",
            session=session,
        )
        print(player_stats)

    # if you do not provide a session we'll make one for you, this session will not be reused
    # for multiple requests we advice doing that within one session like the example above
    player_stats = await hiscore_instance.get(
        mode=HSMode.OLDSCHOOL,
        player="extreme4all",
    )
    print(player_stats)
# Run the asynchronous main function
if __name__ == "__main__":
    asyncio.run(main())

osrs itemdb (Catalogue & Grand Exchange)

import asyncio

from aiohttp import ClientSession

from osrs.asyncio import ItemDBMode, Catalogue, Graph
from osrs.utils import RateLimiter

async def main():
    # Initialize the Catalogue with optional proxy and rate limiter
    limiter = RateLimiter(calls_per_interval=100, interval=60)
    catalogue_instance = Catalogue(proxy="", rate_limiter=limiter)
    graph_instance = Graph(proxy="", rate_limiter=limiter)

    async with ClientSession() as session:
        # Example 1: Fetching items by alphabetical filter
        alpha = "A"  # Items starting with "A"
        page = 1     # First page of results
        category = 1 # Category identifier, for OSRS there is only 1 category
        items = await catalogue_instance.get_items(
            session, 
            alpha=alpha, 
            page=page, 
            mode=ItemDBMode.OLDSCHOOL, 
            category=category
        )
        print("Fetched Items:", items)

        # Example 2: Fetching detailed information for a specific item
        item_id = 4151  # Example item ID (Abyssal whip in OSRS)
        item_detail = await catalogue_instance.get_detail(
            session, 
            item_id=item_id, 
            mode=ItemDBMode.OLDSCHOOL
        )
        print("Item Detail:", item_detail)

        # Example 3: Fetching historical trade data (price graph) for a specific item
        item_id = 4151  # Example item ID (Abyssal whip in OSRS)
        trade_history = await graph_instance.get_graph(
            session, 
            item_id=item_id, 
            mode=ItemDBMode.OLDSCHOOL
        )
        print("Trade History:", trade_history)

# Run the asynchronous main function
if __name__ == "__main__":
    asyncio.run(main())

wiki prices

the wiki via runelite collects item price, which they expose via an api.

import asyncio

from aiohttp import ClientSession

from osrs.asyncio import WikiPrices, Interval
from osrs.utils import RateLimiter

async def main():
    limiter = RateLimiter(calls_per_interval=100, interval=60)
    prices_instance = WikiPrices(user_agent="Your User Agent", rate_limiter=limiter)

    async with ClientSession() as session:
        # Fetch item mappings
        mappings = await prices_instance.get_mapping(
            session=session
        )
        print("Item Mappings:", mappings)

        # Fetch latest prices
        latest_prices = await prices_instance.get_latest_prices(
            session=session
        )
        print("Latest Prices:", latest_prices)

        # Fetch average prices
        average_prices = await prices_instance.get_average_prices(
            session=session, 
            interval=Interval.FIVE_MIN
        )

        print("Average Prices:", average_prices)

        # Fetch time series data
        item_id = 4151  # Example item ID (Abyssal whip in OSRS)
        time_series = await prices_instance.get_time_series(
            session=session, 
            item_id=item_id, 
            timestep=Interval.ONE_HOUR
        )
        print("Time Series Data:", time_series)

# Run the asynchronous main function
if __name__ == "__main__":
    asyncio.run(main())

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

osrs-0.0.16.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

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

osrs-0.0.16-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file osrs-0.0.16.tar.gz.

File metadata

  • Download URL: osrs-0.0.16.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for osrs-0.0.16.tar.gz
Algorithm Hash digest
SHA256 320387302d9426869d4d077cc87e40f698fb403a94d4070312e512f5042e9ac4
MD5 cc7990d2ff38a0e2dc0e50c853949895
BLAKE2b-256 97d2cc58ed80ab7accac3a86f773477256c70c24559d4488bb9a58a8238071bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for osrs-0.0.16.tar.gz:

Publisher: python-package.yml on Bot-detector/osrs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file osrs-0.0.16-py3-none-any.whl.

File metadata

  • Download URL: osrs-0.0.16-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for osrs-0.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 2a799e243dbe423ab5dbef3a9aed25a7f9748091807767212a1ad944abe4e020
MD5 6db98ea167fb428932ed18dba72251fb
BLAKE2b-256 895df4b2cedbe5c9813750efa478e0de7e2a9e2a102dc23a6330da1ed2187ef4

See more details on using hashes here.

Provenance

The following attestation bundles were made for osrs-0.0.16-py3-none-any.whl:

Publisher: python-package.yml on Bot-detector/osrs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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