Skip to main content

An asynchronous Python client for XIVAPI

Project description

pyxivapi

An asynchronous Python client for XIVAPI

Codacy Badge PyPI version Python 3.6

Requirements

python>=3.6.0
asyncio
aiohttp

Installation

pip install pyxivapi

Supported API end points

  • /character/search
  • /character/id
  • /character/verify
  • /character/update
  • /freecompany/search
  • /freecompany/id
  • /linkshell/search
  • /linkshell/id
  • /pvpteam/search
  • /pvpteam/id
  • /index/search (e.g. recipe, item, action, pvpaction, mount, e.t.c.)
  • /index/id
  • /lore/search
  • /lodestone
  • /lodestone/news
  • /lodestone/notices
  • /lodestone/maintenance
  • /lodestone/updates
  • /lodestone/status
  • /lodestone/worldstatus
  • /lodestone/devblog
  • /lodestone/devposts
  • /lodestone/deepdungeon
  • /lodestone/feasts

Documentation

https://xivapi.com/docs/

Example

import asyncio
import logging

import aiohttp
import pyxivapi
from pyxivapi.models import Filter, Sort


async def fetch_example_results(session):
    client = pyxivapi.XIVAPIClient(session=session, api_key="your_key_here")

    # Search Lodestone for a character
    character = await client.character_search(
        world="odin", 
        forename="lethys", 
        surname="lightpaw"
    )

    # Get a character by Lodestone ID with extended data & include their Free Company information, if it has been synced.
    character = await client.character_by_id(
        lodestone_id=8255311, 
        extended=True,
        include_freecompany=True
    )

    # Search Lodestone for a free company
    freecompany = await client.freecompany_search(
        world="gilgamesh", 
        name="Elysium"
    )

    # Fuzzy search XIVAPI game data for a recipe by name. Results will be in English.
    recipe = await client.index_search(
        name="Crimson Cider", 
        indexes=["Recipe"], 
        columns=["ID", "Name", "Icon", "ItemResult.Description"]
    )

    # Fuzzy search XIVAPI game data for a recipe by name. Results will be in French.
    recipe = await client.index_search(
        name="Cidre carmin", 
        indexes=["Recipe"], 
        columns=["ID", "Name", "Icon", "ItemResult.Description"], 
        language="fr"
    )

    # Get an item by its ID (Omega Rod) and return the data in German
    item = await client.index_by_id(
        index="Item", 
        content_id=23575, 
        columns=["ID", "Name", "Icon", "ItemUICategory.Name"], 
        language="de"
    )

    filters = [
        Filter("ClassJobLevel", "gte", 0),
        Filter("ClassJobCategory", "gt", 0),
    ]

    # Get non-npc actions matching a given term (Defiance)
    action = await client.index_search(
        name="Defiance", 
        indexes=["Action", "PvPAction", "CraftAction"], 
        columns=["ID", "Name", "Icon", "Description", "ClassJobCategory.Name", "ClassJobLevel", "ActionCategory.Name"], 
        filters=filters
    )

    # Search ingame data for matches against a given query. Includes item, minion, mount & achievement descriptions, quest dialog & more.
    lore = await client.lore_search(
        query="Shiva",
        language="fr"
    )

    # Search for an item using specific filters
    filters = [
        Filter("LevelItem", "gte", 100)
    ]

    sort = Sort("LevelItem", True)

    item = await client.index_search(
        name="Omega Rod", 
        indexes=["Item"], 
        columns=["ID", "Name", "Icon", "Description", "LevelItem"],
        filters=filters,
        sort=sort,
        language="de"
    )

    # Get all categories of posts from the Lodestone (cached evert 15 minutes)
    lodestone = await client.lodestone_all()

    await session.close()


if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO, format='%(message)s', datefmt='%H:%M')

    loop = asyncio.get_event_loop()
    session = aiohttp.ClientSession(loop=loop)
    loop.run_until_complete(fetch_example_results(session))

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

pyxivapi-0.1.2.tar.gz (8.8 kB view hashes)

Uploaded Source

Built Distribution

pyxivapi-0.1.2-py3-none-any.whl (8.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page