Skip to content

External Services (Library)

Network-bound integrations are available in the dedicated protondl.services package. These APIs are optional and can be used by any app integrating protondl.

AWACY anti-cheat status

Use protondl.services.awacy to query Linux anti-cheat compatibility from areweanticheatyet.com.

fetch_awacy_index() downloads the AWACY game list into an AWACYIndex. Use get_awacy_status_by_id() and get_awacy_status_by_slug() to read a game's status from that index.

import asyncio

from protondl.services.awacy import (
    fetch_awacy_index,
    get_awacy_status_by_id,
    get_awacy_status_by_slug,
)


game = launcher.get_game_list()[0]

index: AWACYIndex = asyncio.run(fetch_awacy_index())

steam_status: AWACYStatus = get_awacy_status_by_id(game.id, index)
slug_status: AWACYStatus = get_awacy_status_by_slug("game-slug", index)

print(steam_status.value)
print(slug_status.value)

ProtonDB compatibility rating

Use protondl.services.protondb to query the Linux compatibility rating from protondb.com.

fetch_protondb_summary() downloads the report summary for a single Steam AppID. Use fetch_protondb_tier() to get only the compatibility tier, and fetch_protondb_tiers() to batch-lookup multiple targets in parallel (bounded by the max_concurrency argument, 10 by default). resolve_steam_appid() converts a game object or identifier into a Steam AppID.

In the batch lookup, targets without a ProtonDB report are mapped to ProtonDBTier.UNKNOWN, while targets whose lookup failed due to a network error are mapped to None.

import asyncio

from protondl.services.protondb import (
    ProtonDBTier,
    fetch_protondb_summary,
    fetch_protondb_tier,
    fetch_protondb_tiers,
    resolve_steam_appid,
)

game = launcher.get_game_list()[0]
appid = resolve_steam_appid(game)

summary: ProtonDBSummary = asyncio.run(fetch_protondb_summary(appid))
tier: ProtonDBTier = asyncio.run(fetch_protondb_tier(appid))

tiers: dict[str, ProtonDBTier | None] = asyncio.run(fetch_protondb_tiers(launcher.get_game_list()))

print(summary.tier.value)
print(tier.value)