This library provides the core foundation for the smartglass protocol that is used with the Xbox One Gaming console
For in-depth information, check out the documentation: (https://openxbox.org/smartglass-documentation)
NOTE: Since 29.02.2020 the following modules are integrated into core: stump, auxiliary, rest-server
NOTE: Nano module is still offered seperately
- Power on / off the console
- Get system info (running App/Game/Title, dashboard version)
- Media player control (seeing content id, content app, playback actions etc.)
- Stump protocol (Live-TV Streaming / IR control)
- Title / Auxiliary stream protocol (f.e. Fallout 4 companion app)
- Trigger GameDVR remotely
- REST Server
- construct - Binary parsing (https://construct.readthedocs.io/)
- cryptography - cryptography magic (https://cryptography.io/en/stable/)
- gevent - coroutines (http://www.gevent.org/)
- dpkt - pcap parsing (https://dpkt.readthedocs.io/en/latest/)
- Flask - REST API (https://pypi.org/project/Flask/)
Via pip:
pip install xbox-smartglass-core
See the end of this README for development-targeted instructions.
There are several command line utilities to check out:
$ xbox-cli
Some functionality, such as GameDVR record, requires authentication with your Microsoft Account to validate you have the right to trigger such action.
To authenticate / get authentication tokens use:
$ xbox-authenticate # Alternative: Use the ncurses terminal ui, it has authentication integrated $ xbox-tui
Start the REST server:
$ xbox-rest-server
For more information consult RestFAQ
To forward the title communication from the Xbox to your local host to use third-party Fallout 4 Pip boy applications or extensions:
xbox-fo4-relay
Here you can see the SmartGlass TUI (Text user interface):
Ready to contribute? Here's how to set up xbox-smartglass-core-python for local development.
Fork the xbox-smartglass-core-python repo on GitHub.
Clone your fork locally:
$ git clone git@github.com:your_name_here/xbox-smartglass-core-python.git
Install your local copy into a virtual environment. This is how you set up your fork for local development:
$ python -m venv ~/pyvenv/xbox-smartglass $ source ~/pyvenv/xbox-smartglass/bin/activate $ cd xbox-smartglass-core-python $ pip install -e .[dev]
Setup auto-linting before each commit via pre-commit:
$ pre-commit install
Create a branch for local development:
$ git checkout -b name-of-your-bugfix-or-feature
Make your changes.
Before pushing the changes to git, please verify they actually work:
$ pre-commit run -a $ pytest # For more extensive testing on several frameworks: $ tox
Commit your changes and push your branch to GitHub:
$ git commit -m "Your detailed description of your changes." $ git push origin name-of-your-bugfix-or-feature
Submit a pull request through the GitHub website.
Before you submit a pull request, check that it meets these guidelines:
- Code includes unit-tests.
- Added code is properly named and documented.
- On major changes the README is updated.
- Run tests / linting locally before pushing to remote.
Kudos to joelday for figuring out the AuxiliaryStream / TitleChannel communication first! You can find the original implementation here: SmartGlass.CSharp.
This package uses parts of Cookiecutter and the audreyr/cookiecutter-pypackage project template.