Skip to main content

Arknights python wrapper.

Project description

ArkPRTS

Arknights python wrapper.

Interacts directly with the game servers, no delays.


Source Code: https://github.com/thesadru/arkprts


Installation

pip install -U arkprts

There are some optional requirements, you can install them all with all.

pip install -U arkprts[all]

Usage

import arkprts

async def main() -> None:
    client = arkprts.Client(assets=False)

    # search users by nickname
    users = await client.search_players("Doctor", server="en")
    print("User level: ", users[0].level)


    # =======

    # login with email or token
    auth = arkprts.YostarAuth("en")
    await auth.login_with_email_code("doctor@gmail.com")
    # or auth.login_with_token("123456", "abcdefg")
    client = arkprts.Client(auth=auth, assets=False)

    # get logged-in user data
    data = await client.get_data()
    print("Level: ", data.status.level)

Returned data is in the form of pydantic models, however you can also request raw json with client.get_raw_player_info()/client.get_raw_data()/... to access even untyped data.

For convenience, static game data is automatically downloaded and updated on login. You can access the static data directly or through the models. This is useful for getting names and descriptions of objects.

users = await client.search_user("UserName")
operator = users[0].assist_char_list[0]  # type: arkprts.models.Character
print(f"Assist operator {operator.static.name} is level {operator.level}")

To disable downloading static data use arkprts.Client(assets=False). To choose the data download location set arkprts.Client(assets="/path/to/data") (/tmp/%TEMP% is chosen by default).

ArkPRTS supports en, jp, kr, cn and bili servers. However only global/yostar servers (en, jp and kr) can be used without logging in.

Frequent usage cases

Get all of my operators.

data = await client.get_data()
for char in data.troop.chars.values():
    print(char.char_id)

Get my inventory.

data = await client.get_data()
# normal inventory items
for item_id, count in user.inventory.items():
    if count > 0:
        print(item_id, count)
# basic items like originium or green certificates
for item_id, count in user.status.basic_item_inventory.items():
    if count > 0:
        print(item_id, count)
# consumable expirable items
for item_id, subitems in user.consumable.items():
    for item in subitems.values():
        if count > 0:
            print(item_id, item.ts, item.count)

Making a new client when a global guest client already exists; without excess overhead.

public_client = arkprts.Client()

# ----
auth = arkprts.YostarAuth("en", network=public_client.network)
await auth.login_with_token("123456", "abcdefg")
private_client = arkprts.Client(auth=auth, assets=public_client.assets)

Programmatically getting auth tokens from a user on your website.

@route("/code")
def code(request):
    auth = arkprts.YostarAuth(request.query["server"], network=...)
    await auth.send_email_code(request.query["email"])

    return "Code sent!"


@route("/login")
def login(request):
    auth = arkprts.YostarAuth(request.query["server"], network=...)
    yostar_uid, yostar_token = await auth.get_token_from_email_code(request.query["email"], request.query["code"])

    return {"yostar_uid": yostar_uid, "yostar_token": yostar_token}

Contributing

Any kind of contribution is welcome. Please read CONTRIBUTING.md for more information.

Thanks

Many thanks to all of these people and projects

Implementing your own wrapper

See logs.txt for example requests and responses when trying to search a user on a YoStar server.

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

arkprts-0.3.19.tar.gz (53.7 kB view details)

Uploaded Source

Built Distribution

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

arkprts-0.3.19-py3-none-any.whl (57.1 kB view details)

Uploaded Python 3

File details

Details for the file arkprts-0.3.19.tar.gz.

File metadata

  • Download URL: arkprts-0.3.19.tar.gz
  • Upload date:
  • Size: 53.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for arkprts-0.3.19.tar.gz
Algorithm Hash digest
SHA256 845d5b76a76146f3ff791c2b59a46f22d7d62a44e9f3f27518333dc23692f62f
MD5 72575a6040fc78f1573eb4d0a845a59c
BLAKE2b-256 0ded10240eaaa66e49921f6fd83e33fcb5cb776c5edaed869c7b6a4fc4ef24cf

See more details on using hashes here.

File details

Details for the file arkprts-0.3.19-py3-none-any.whl.

File metadata

  • Download URL: arkprts-0.3.19-py3-none-any.whl
  • Upload date:
  • Size: 57.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for arkprts-0.3.19-py3-none-any.whl
Algorithm Hash digest
SHA256 d70ea1e72b3912f3c199cdf62559723ebee975d5a63fa26918f8d81d00e4fcae
MD5 4869929e741fe60904216060aa57eb52
BLAKE2b-256 e4f0a503b48e1569280c3f9a57492d83b1667df57c630d6c045f6693d93f0139

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