Skip to main content

rs2wapy

Rising Storm 2: Vietnam WebAdmin Python Interface

Provides a Python interface for performing RS2 WebAdmin tasks programmatically.

The library uses PycURL internally to communicate with RS2 WebAdmin.

Work in progress; interface will change!

Brief Usage Examples

This section contains some brief usage examples. For more comprehensive tutorials, check out the examples repository.

Installation
# Requires Python=>3.9
pip install rs2wapy
Steam Web API key (optional)

Setting your Steam Web API key as an environment variable allows rs2wapy to offer some extra functionality.

Unix:

export STEAM_WEB_API_KEY="TOPSECRETKEY"

Windows:

set STEAM_WEB_API_KEY="TOPSECRETKEY"
Quickstart

It is recommended to create a new WebAdmin account for rs2wapy.

from rs2wapy import RS2WebAdmin

wa = RS2WebAdmin(
    username="AutoModerator",
    password="topsecret123",
    webadmin_url="http://localhost:8080/",
)
Poll server ranked status and switch map automatically
while True:
    if not wa.get_current_game().ranked:
        wa.post_chat_message("Unranked bug happened! Changing map in 5 seconds!")
        time.sleep(5)
        wa.change_map("VNTE-Resort")
    time.sleep(1)
Forward in-game chat to a Discord webhook with discord.py.
import time

from discord import RequestsWebhookAdapter
from discord import Webhook
from discord.utils import escape_markdown
from discord.utils import escape_mentions

from rs2wapy import RS2WebAdmin
from rs2wapy.models import AllTeam
from rs2wapy.models import BlueTeam
from rs2wapy.models import RedTeam

# Discord webhook info.
webhook = Webhook.partial(
    id=123456,
    token="abcdefg",
    adapter=RequestsWebhookAdapter()
)

# Webadmin credentials.
USERNAME = "Admin"
PASSWORD = "adminpassword"
URL = "http://127.0.0.1:8080/ServerAdmin"

TEAM_TO_EMOJI = {
    BlueTeam: ":blue_square:",
    RedTeam: ":red_square:",
    AllTeam: ":white_square_button:",
}

TEAM_TO_TEAMNAME = {
    BlueTeam: "SOUTH",
    RedTeam: "NORTH",
    AllTeam: "ALL",
}


def get_team_emoji(team):
    try:
        return TEAM_TO_EMOJI[team]
    except KeyError:
        return "?"


def get_team_name(team):
    try:
        return TEAM_TO_TEAMNAME[team]
    except KeyError:
        return "?"


def main():
    webadmin = RS2WebAdmin(USERNAME, PASSWORD, URL)
    messages = []

    while True:
        try:
            messages.extend(webadmin.get_chat_messages())
        except Exception as e:
            print(f"error getting messages: {e}")
            print("attempting to reconnect...")
            webadmin = RS2WebAdmin(USERNAME, PASSWORD, URL)

        if messages:
            for message in messages:
                text = message.text
                sender = message.sender
                team = message.team

                team_name = get_team_name(team)
                team_emoji = get_team_emoji(team)

                # Prevent pinging @everyone from in-game chat
                # and other "funny" stuff.
                text = escape_markdown(text)
                text = escape_mentions(text)
                sender = escape_markdown(sender)
                sender = escape_mentions(sender)

                try:
                    webhook.send(f"**{sender}** [{team_name}] {team_emoji}: {text}")
                except Exception as e:
                    print(f"error sending message: {e}")

        messages = []
        time.sleep(3)

The above are just simple examples of how to use the library. In the future, the library will be able to automate all tasks which RS2 WebAdmin offers. You can check the status of currently implemented WebAdmin features here: https://github.com/tuokri/rs2wapy/issues/9.

Metadata

Release files for rs2wapy 0.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rs2wapy 0.7.1
File Size Uploaded Provenance Actions
rs2wapy-0.7.1.tar.gz 26.9 kB Without provenance Details for rs2wapy-0.7.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for rs2wapy 0.7.1
File Interpreter ABI Platform Actions
rs2wapy-0.7.1-py3-none-any.whl Python 3 none any Details for rs2wapy-0.7.1-py3-none-any.whl

Total release size: 56.8 kB

Release files / rs2wapy-0.7.1.tar.gz

Download URL rs2wapy-0.7.1.tar.gz
Size 26.9 kB
Tags Source
SHA-256 checksum
How to use checksums
bf24b39a296f964cd7a8c8c5216026bc3b886ea8f55d71dd3fc5e56d72e1e003
BLAKE2b-256 checksum
How to use checksums
b8c41709f1d441e1b450f101fb4b272adba6232087db6f9fdf3f16e6bc7b3fd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.28.1

Release files / rs2wapy-0.7.1-py3-none-any.whl

Download URL rs2wapy-0.7.1-py3-none-any.whl
Size 29.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d808a93c8bb21785c82c2d5808a2c0f072dedc93b53e9467ffa57ae57ebac071
BLAKE2b-256 checksum
How to use checksums
ce86f84cfd6bfccc10d689dfefe3cd26a90d80c1431e9a7141d18d2ecc086b76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.28.1

Security for rs2wapy 0.7.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page