Metadata-Version: 2.1
Name: xbox-smartglass-core
Version: 1.2.1
Summary: A library to interact with the Xbox One gaming console via the SmartGlass protocol.
Home-page: https://github.com/OpenXbox/xbox-smartglass-core-python
Author: OpenXbox
Author-email: noreply@openxbox.org
License: GPL
Keywords: xbox one smartglass auxiliary fallout title stump tv streaming livetv rest api
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Description-Content-Type: text/x-rst
Requires-Dist: xbox-webapi (>=1.1.8)
Requires-Dist: construct (==2.10.56)
Requires-Dist: cryptography (==2.8)
Requires-Dist: gevent (==1.5a3)
Requires-Dist: dpkt
Requires-Dist: marshmallow-objects
Requires-Dist: Flask
Provides-Extra: dev
Requires-Dist: bump2version ; extra == 'dev'
Requires-Dist: watchdog ; extra == 'dev'
Requires-Dist: Sphinx ; extra == 'dev'
Requires-Dist: wheel ; extra == 'dev'
Requires-Dist: twine ; extra == 'dev'
Requires-Dist: coverage ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: pytest-runner ; extra == 'dev'
Requires-Dist: pytest-console-scripts ; extra == 'dev'

====================
Xbox-Smartglass-Core
====================

.. image:: https://pypip.in/version/xbox-smartglass-core/badge.svg
    :target: https://pypi.python.org/pypi/xbox-smartglass-core/
    :alt: Latest Version

.. image:: https://readthedocs.org/projects/xbox-smartglass-core-python/badge/?version=latest
    :target: http://xbox-smartglass-core-python.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status

.. image:: https://travis-ci.com/OpenXbox/xbox-smartglass-core-python.svg?branch=master
    :target: https://travis-ci.com/OpenXbox/xbox-smartglass-core-python

.. image:: https://img.shields.io/docker/build/openxbox/xbox-smartglass-core.svg
    :target: https://hub.docker.com/r/openxbox/xbox-smartglass-core
    :alt: Docker Build Status

.. image:: https://img.shields.io/discord/338946086775554048
    :target: https://openxbox.org/discord
    :alt: Discord chat channel

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):

.. image:: https://raw.githubusercontent.com/OpenXbox/xbox-smartglass-core-python/master/assets/xbox_tui_list.png

.. image:: https://raw.githubusercontent.com/OpenXbox/xbox-smartglass-core-python/master/assets/xbox_tui_console.png

.. image:: https://raw.githubusercontent.com/OpenXbox/xbox-smartglass-core-python/master/assets/xbox_tui_log.png

.. image:: https://raw.githubusercontent.com/OpenXbox/xbox-smartglass-core-python/master/assets/xbox_tui_logdetail.png


Development workflow
--------------------

Ready to contribute? Here's how to set up `xbox-smartglass-core-python` for local development.

1. Fork the `xbox-smartglass-core-python` repo on GitHub.
2. Clone your fork locally::

    $ git clone git@github.com:your_name_here/xbox-smartglass-core-python.git

3. 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]

4. Setup auto-linting before each commit via pre-commit_::

    $ pre-commit install

5. Create a branch for local development::

    $ git checkout -b name-of-your-bugfix-or-feature


6. Make your changes.

7. Before pushing the changes to git, please verify they actually work::

    $ pre-commit run -a
    $ pytest

    # For more extensive testing on several frameworks:
    $ tox

8. 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

9. Submit a pull request through the GitHub website.


Pull Request Guidelines
-----------------------

Before you submit a pull request, check that it meets these guidelines:

1. Code includes unit-tests.
2. Added code is properly named and documented.
3. On major changes the README is updated.
4. 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.

.. _Documentation: https://xbox-smartglass-core-python.readthedocs.io/en/latest/source/xbox.sg.scripts.html
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage
.. _joelday: https://github.com/joelday
.. _SmartGlass.CSharp: https://github.com/OpenXbox/Xbox-Smartglass-csharp
.. _RestFAQ: https://github.com/OpenXbox/xbox-smartglass-core-python/blob/master/REST_FAQ.md
.. _pre-commit: https://pre-commit.com


=======
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.


