Skip to content

Rikys/aiosatisfactory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aiosatisfactory

This is an async Python library for Satisfactory dedicated server's APIs.

This work is based off the official documentation that is provided with the game files or is also available on the official wiki

Lightweight API (docs)

This API should be used to poll the server state before making most of the https requests
No errors are raised but you must check if the query was succesful

Usage:

from aiosatisfactory import SatisfactoryServer
import asyncio, time

async def main():
    server = SatisfactoryServer("server.ip")
    query = await server.lightweight.query(time.time_ns())
    print(query.response.SubStates)

asyncio.run(main())

Https API (docs)

This API requires the session parameter to be set in the SatisfactoryServer constructor
It does raise an ErrorResponse exeption if the function you try to execute fails

Usage:

import asyncio, aiohttp
from aiosatisfactory import SatisfactoryServer
from aiosatisfactory.https.models import ErrorResponse

async def main():
    async with aiohttp.ClientSession() as session:
        client = SatisfactoryServer("server.ip", session=session)
        try:
            response = await client.https.api.health_check()
            print(response.health)
        except ErrorResponse as e:
            print(f"Error: {e.error_code, e.error_message, e.error_details}")

asyncio.run(main())

Mappings

The Https API provides the value of active_schematic and game_phase as some internal strings, this class provides translations to the proper display names

Usage:

import asyncio, aiohttp
from aiosatisfactory import SatisfactoryServer
from aiosatisfactory.https.models import ErrorResponse

async def main():
    async with aiohttp.ClientSession() as session:
        client = SatisfactoryServer("server.ip", session=session, api_token="your_api_token")
        try:
            response = await client.https.api.query_server_state()
            print(client.mappings.game_phase(response.game_phase))
            print(client.mappings.schematic(response.active_schematic))
        except ErrorResponse as e:
            print(f"Error: {e.error_code, e.error_message, e.error_details}")

asyncio.run(main())

About

Async client for Satisfactory dedicated server APIs

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages