A library to interact with the Xbox One gaming console via the SmartGlass protocol.
Project description
Xbox-Smartglass-Core
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
Features
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
Frameworks used
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/)
Install
Via pip:
pip install xbox-smartglass-core
See the end of this README for development-targeted instructions.
How to use
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
REST Server
Start the REST server:
$ xbox-rest-server
For more information consult RestFAQ
Fallout 4 relay service
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
Screenshots
Here you can see the SmartGlass TUI (Text user interface):
Development workflow
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.
Pull Request Guidelines
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.
Credits
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.
History
1.2.1 (2020-03-04)
cli: Python3.6 compatibility change
HOTFIX: Add xbox.handlers to packages in setup.py
1.2.0 (2020-03-04)
CLI scripts rewritten, supporting log/loglevel args now, main script is called xbox-cli now
Add REPL / REPL server functionality
Updates to README and REST server documentation
1.1.2 (2020-02-29)
Drop support for Python 3.5
crypto: Fix deprecated cryptography functions
tests: Speed up REST server tests (discovery, poweron)
Update all dependencies
1.1.1 (2020-02-29)
FIX: Include static files for REST server in distributable package
REST: Remove deprecated packages from showing in /versions endpoint
1.1.0 (2020-02-29)
Clean up dependencies
Merge in xbox-smartglass-rest, deprecate standalone package
Merge in xbox-smartglass-stump, deprecate standalone package
Merge in xbox-smartglass-auxiliary, deprecate standalone package
tui: Fix crash when bringing up command menu, support ESC to exit
1.0.12 (2018-11-14)
Python 3.7 compatibility
1.0.11 (2018-11-05)
Add game_dvr_record to Console-class
Fix PCAP parser
Add last_error property to Console-class
1.0.10 (2018-08-14)
Safeguard around connect() functions, if userhash and xsts_token is NoneType
1.0.9 (2018-08-11)
Fix for Console instance poweron
Reset state after poweroff
Little fixes to TUI
Support handling MessageFragments
1.0.8 (2018-06-14)
Use aenum library for backwards-compat with _enum.Flag_ on py3.5
1.0.7 (2018-05-16)
CoreProtocol.connect: Treat ConnectionResult.Pending as error
constants.WindowsClientInfo: Update ClientVersion 15 -> 39
Make CoreProtocol.start_channel take optional title_id / activity_id arguments
1.0.1 (2018-05-03)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for xbox-smartglass-core-1.2.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05d5a1e7a0e9975e088df9e61e4702597f63bddafa3c7ff37d4241022b38eee8 |
|
MD5 | cb5f33811a53c06c16af2138a61bd0be |
|
BLAKE2b-256 | 2d6d6ed58a7dd7389fe827f94f032eb1d2b9b6859e82878df5922943a0809904 |
Hashes for xbox_smartglass_core-1.2.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cde071f96b03a52f2a15d012afc7ff538b8b40ea8a0a797088c5f1dc43fdca2a |
|
MD5 | 1a07b0b2b2850e2e2ed8034c4f83a18e |
|
BLAKE2b-256 | 943305dcda632c0c7f391c7c36ebec387f1fc4b566baaae79ce053e996ed2417 |