Skip to main content

Arknights python wrapper.

Project description

ArkPRTS

Arknights python wrapper.

Interacts directly with the game servers, no delays.

支持中文和B站账户!


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)

Logging in with email and password to the cn server.

auth = arkprts.HypergryphAuth()
await auth.login("doctor@qq.com", "wordpass12")
client = arkprts.Client(auth=auth)

await client.get_data()

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.get_token_from_email_code(request.query["email"])

    return "Code sent!"


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

    return {"channel_uid": channel_uid, "yostar_token": yostar_token}

Contributing

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

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.4.tar.gz (50.5 kB view details)

Uploaded Source

Built Distribution

arkprts-0.3.4-py3-none-any.whl (52.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: arkprts-0.3.4.tar.gz
  • Upload date:
  • Size: 50.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for arkprts-0.3.4.tar.gz
Algorithm Hash digest
SHA256 cbdb838f68d54e80e4dde7b09619cc0d0ee5e8c3b36ab7e7a577eab047446267
MD5 37f2475495f9de39250ef875c6f9a9a6
BLAKE2b-256 5db0f072406daf9bb1c626b0fd275e8df422600cc25809a35cd620e47b961fe1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: arkprts-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 52.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for arkprts-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 94f3c3e1991c459cf9b33cb6df3319f96bae7f3bfd0b64e4e1058ce28bcf2e84
MD5 3418e5dbcd7bfb26bd6d03207043a6ce
BLAKE2b-256 2d7cba7941f0d2318792ddbe6202294d297555c2c4e8a00c312f5a9831239be6

See more details on using hashes here.

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