Metadata-Version: 2.4
Name: xbox360-nova
Version: 0.1.0
Summary: Talk to a jailbroken (RGH/JTAG) Xbox 360 running the Aurora dashboard's NOVA plugin (REST + FTP)
Project-URL: Homepage, https://github.com/hudsonbrendon/xbox360-nova
Project-URL: Issues, https://github.com/hudsonbrendon/xbox360-nova/issues
Author-email: Hudson Brendon <contato.hudsonbrendon@gmail.com>
License: MIT
License-File: LICENSE
Keywords: aurora,home-assistant,jtag,nova,rgh,xbox360
Requires-Python: >=3.11
Requires-Dist: aiohttp>=3.9
Provides-Extra: dev
Requires-Dist: aioresponses>=0.7; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Description-Content-Type: text/markdown

# xbox360-nova

[![CI](https://github.com/hudsonbrendon/xbox360-nova/actions/workflows/ci.yml/badge.svg)](https://github.com/hudsonbrendon/xbox360-nova/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/xbox360-nova)](https://pypi.org/project/xbox360-nova/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

Python client to talk to a jailbroken (**RGH/JTAG**) Xbox 360 running the **Aurora**
dashboard with the **NOVA** plugin — over NOVA's REST API and Aurora's FTP server.
Used by the [Xbox 360 Aurora Home Assistant integration](https://github.com/hudsonbrendon/ha-xbox360-aurora).

## Install

```bash
pip install xbox360-nova
```

## Usage

```python
import aiohttp
from xbox360_nova import NovaClient, site_command, FTP_CMD_REBOOT, resolve_title_name

async def main():
    async with aiohttp.ClientSession() as session:
        client = NovaClient(session, "192.168.1.50", 9999, "xboxhttp", "xboxhttp")
        await client.authenticate()
        title = await client.get_title()
        print(resolve_title_name(title["titleid"]))   # -> "Call of Duty: Black Ops II"
        print(await client.get_temperature())

# Reboot via Aurora FTP (blocking; run in an executor):
site_command("192.168.1.50", 21, "xboxftp", "xboxftp", FTP_CMD_REBOOT)
```

## API

- `NovaClient(session, host, port, username, password)` — NOVA REST client (JWT auth, auto-reauth). Methods: `authenticate`, `get_title`, `get_temperature`, `get_memory`, `get_system`, `get_smc`, `get_profile`, `get_systemlink_bandwidth`, `get_achievement`, `get_achievement_player`, `list_screencaptures`, `take_screencapture`, `get_screencapture_image`, `delete_screencapture`, `get_update_notification`, `get_plugin`, `get_dashlaunch`, `get_profile_image`, `launch_title`, `set_thread_state`.
- `site_command(host, port, username, password, command)` + `FTP_CMD_REBOOT|SHUTDOWN|RESTART` — Aurora FTP SITE commands (blocking).
- `load_titles()`, `resolve_title_name(title_id)`, `normalize_title_id(title_id)` — bundled title-ID → name database (1700+ titles).

Exceptions: `NovaError`, `NovaAuthError`, `NovaConnectionError`, `FtpError`.

## License

[MIT](LICENSE) © Hudson Brendon
