%global _empty_manifest_terminate_build 0 Name: python-glocaltokens Version: 0.7.0 Release: 1 Summary: Tool to extract Google device local authentication tokens in Python License: MIT URL: https://github.com/leikoilja/glocaltokens Source0: https://mirrors.nju.edu.cn/pypi/web/packages/3d/72/095e135e14c7b7654f2d59f0d30afd9f08ca851749d5ed2da3326e77adf3/glocaltokens-0.7.0.tar.gz BuildArch: noarch Requires: python3-gpsoauth Requires: python3-simplejson Requires: python3-ghome-foyer-api Requires: python3-grpcio Requires: python3-requests Requires: python3-zeroconf %description [![GitHub Workflow Status][workflow-shield]][workflow] [![PyPI][pypi-shield]][pypi] [![Downloads][pepy-shield]][pepy] [![Pre-commit][pre-commit-shield]][pre-commit] [![GitHub Activity][commits-shield]][commits] # Google home local authentication token extraction Python 3 package to extract google home devices local authentication tokens from google servers. These local authentication tokens are needed to control Google Home devices (See [@rithvikvibhu](https://github.com/rithvikvibhu)'s [Google Home (2.0) API](https://rithvikvibhu.github.io/GHLocalApi/)). Please note: Once you have local google authentication tokens they only live about 1 day long. After that you will need to obtain new ones. You will probably need to run the script repeatedly storing the tokens somewhere convenient. ## Quickstart Note: the package was written and tested on Python 3. - Install the python package ``` pip install glocaltokens ``` Use in your program as (see examples folder for detailed example): ```Python from glocaltokens.client import GLocalAuthenticationTokens # Using google username and password # # ONLY CALL THIS ONCE # # If you call this too often, google will disconnect your android devices and other weird things will happen # # Call get_google_devices_json() afterwards to get timers/alarms as oftens as you want to update. client = GLocalAuthenticationTokens( username="", password="" ) # Get master token print("[*] Master token", client.get_master_token()) # Get access token (lives 1 hour) print("\n[*] Access token (lives 1 hour)", client.get_access_token()) # Get google device local authentication tokens (live about 1 day) print("\n[*] Google devices local authentication tokens") google_devices = client.get_google_devices_json() # You can also select specific models to select when calling get_google_devices or get_google_devices_json with the models_list parameter. # For example, we have pre-defined a constant with some Google Home Models (WARNING! Not all of them may be present) # This could be used this way from glocaltokens.const import GOOGLE_HOME_MODELS google_devices_select = client.get_google_devices_json(GOOGLE_HOME_MODELS) # But if you need to select just a set of models, or add new models, you can use a list of str google_devices_select_2 = client.get_google_devices_json([ f"Google Home", f"Google Home Mini", f"Google Nest Mini", ]) ``` ### Predefined models list There are some pre-defined models list in [`scanner.py`](/glocaltokens/scanner.py), feel free to add new lists, or add models to a list with a pull-request. #### `GOOGLE_HOME_MODELS`: - Google Home - Google Home Mini - Google Nest Mini - Lenovo Smart Clock ## Security Recommendation Never store the user's password nor username in plain text, if storage is necessary, generate a master token and store it. Example approach: ```python from glocaltokens.client import GLocalAuthenticationTokens # Using google username and password first, and only once client = GLocalAuthenticationTokens( username="", password="" ) # Get master token master_token = client.get_master_token() print("[*] Master token", master_token) """Now store master_token somewhere""" ``` ## Contributing See [Contributing guidelines](CONTRIBUTING.md). This is an open-source project and all countribution is highly welcomed. # Credits Much credits go to [@rithvikvibhu](https://github.com/rithvikvibhu) for doing most of the heavy work like finding a way to extract master and access tokens (See his gist [here](https://gist.github.com/rithvikvibhu/952f83ea656c6782fbd0f1645059055d)). Also, thank you very much to the guys at `pychromecast` which provided the code required to scan devices in the network. [workflow-shield]: https://img.shields.io/github/actions/workflow/status/leikoilja/glocaltokens/linting-and-testing.yaml?branch=master [workflow]: https://github.com/leikoilja/glocaltokens/actions [pypi-shield]: https://img.shields.io/pypi/v/glocaltokens [pypi]: https://pypi.org/project/glocaltokens/ [pepy-shield]: https://pepy.tech/badge/glocaltokens [pepy]: https://pepy.tech/project/glocaltokens [commits-shield]: https://img.shields.io/github/commit-activity/y/leikoilja/glocaltokens [commits]: https://github.com/leikoilja/glocaltokens/commits/master [pre-commit-shield]: https://img.shields.io/badge/pre--commit-enabled-brightgreen [pre-commit]: https://pre-commit.com/ %package -n python3-glocaltokens Summary: Tool to extract Google device local authentication tokens in Python Provides: python-glocaltokens BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-glocaltokens [![GitHub Workflow Status][workflow-shield]][workflow] [![PyPI][pypi-shield]][pypi] [![Downloads][pepy-shield]][pepy] [![Pre-commit][pre-commit-shield]][pre-commit] [![GitHub Activity][commits-shield]][commits] # Google home local authentication token extraction Python 3 package to extract google home devices local authentication tokens from google servers. These local authentication tokens are needed to control Google Home devices (See [@rithvikvibhu](https://github.com/rithvikvibhu)'s [Google Home (2.0) API](https://rithvikvibhu.github.io/GHLocalApi/)). Please note: Once you have local google authentication tokens they only live about 1 day long. After that you will need to obtain new ones. You will probably need to run the script repeatedly storing the tokens somewhere convenient. ## Quickstart Note: the package was written and tested on Python 3. - Install the python package ``` pip install glocaltokens ``` Use in your program as (see examples folder for detailed example): ```Python from glocaltokens.client import GLocalAuthenticationTokens # Using google username and password # # ONLY CALL THIS ONCE # # If you call this too often, google will disconnect your android devices and other weird things will happen # # Call get_google_devices_json() afterwards to get timers/alarms as oftens as you want to update. client = GLocalAuthenticationTokens( username="", password="" ) # Get master token print("[*] Master token", client.get_master_token()) # Get access token (lives 1 hour) print("\n[*] Access token (lives 1 hour)", client.get_access_token()) # Get google device local authentication tokens (live about 1 day) print("\n[*] Google devices local authentication tokens") google_devices = client.get_google_devices_json() # You can also select specific models to select when calling get_google_devices or get_google_devices_json with the models_list parameter. # For example, we have pre-defined a constant with some Google Home Models (WARNING! Not all of them may be present) # This could be used this way from glocaltokens.const import GOOGLE_HOME_MODELS google_devices_select = client.get_google_devices_json(GOOGLE_HOME_MODELS) # But if you need to select just a set of models, or add new models, you can use a list of str google_devices_select_2 = client.get_google_devices_json([ f"Google Home", f"Google Home Mini", f"Google Nest Mini", ]) ``` ### Predefined models list There are some pre-defined models list in [`scanner.py`](/glocaltokens/scanner.py), feel free to add new lists, or add models to a list with a pull-request. #### `GOOGLE_HOME_MODELS`: - Google Home - Google Home Mini - Google Nest Mini - Lenovo Smart Clock ## Security Recommendation Never store the user's password nor username in plain text, if storage is necessary, generate a master token and store it. Example approach: ```python from glocaltokens.client import GLocalAuthenticationTokens # Using google username and password first, and only once client = GLocalAuthenticationTokens( username="", password="" ) # Get master token master_token = client.get_master_token() print("[*] Master token", master_token) """Now store master_token somewhere""" ``` ## Contributing See [Contributing guidelines](CONTRIBUTING.md). This is an open-source project and all countribution is highly welcomed. # Credits Much credits go to [@rithvikvibhu](https://github.com/rithvikvibhu) for doing most of the heavy work like finding a way to extract master and access tokens (See his gist [here](https://gist.github.com/rithvikvibhu/952f83ea656c6782fbd0f1645059055d)). Also, thank you very much to the guys at `pychromecast` which provided the code required to scan devices in the network. [workflow-shield]: https://img.shields.io/github/actions/workflow/status/leikoilja/glocaltokens/linting-and-testing.yaml?branch=master [workflow]: https://github.com/leikoilja/glocaltokens/actions [pypi-shield]: https://img.shields.io/pypi/v/glocaltokens [pypi]: https://pypi.org/project/glocaltokens/ [pepy-shield]: https://pepy.tech/badge/glocaltokens [pepy]: https://pepy.tech/project/glocaltokens [commits-shield]: https://img.shields.io/github/commit-activity/y/leikoilja/glocaltokens [commits]: https://github.com/leikoilja/glocaltokens/commits/master [pre-commit-shield]: https://img.shields.io/badge/pre--commit-enabled-brightgreen [pre-commit]: https://pre-commit.com/ %package help Summary: Development documents and examples for glocaltokens Provides: python3-glocaltokens-doc %description help [![GitHub Workflow Status][workflow-shield]][workflow] [![PyPI][pypi-shield]][pypi] [![Downloads][pepy-shield]][pepy] [![Pre-commit][pre-commit-shield]][pre-commit] [![GitHub Activity][commits-shield]][commits] # Google home local authentication token extraction Python 3 package to extract google home devices local authentication tokens from google servers. These local authentication tokens are needed to control Google Home devices (See [@rithvikvibhu](https://github.com/rithvikvibhu)'s [Google Home (2.0) API](https://rithvikvibhu.github.io/GHLocalApi/)). Please note: Once you have local google authentication tokens they only live about 1 day long. After that you will need to obtain new ones. You will probably need to run the script repeatedly storing the tokens somewhere convenient. ## Quickstart Note: the package was written and tested on Python 3. - Install the python package ``` pip install glocaltokens ``` Use in your program as (see examples folder for detailed example): ```Python from glocaltokens.client import GLocalAuthenticationTokens # Using google username and password # # ONLY CALL THIS ONCE # # If you call this too often, google will disconnect your android devices and other weird things will happen # # Call get_google_devices_json() afterwards to get timers/alarms as oftens as you want to update. client = GLocalAuthenticationTokens( username="", password="" ) # Get master token print("[*] Master token", client.get_master_token()) # Get access token (lives 1 hour) print("\n[*] Access token (lives 1 hour)", client.get_access_token()) # Get google device local authentication tokens (live about 1 day) print("\n[*] Google devices local authentication tokens") google_devices = client.get_google_devices_json() # You can also select specific models to select when calling get_google_devices or get_google_devices_json with the models_list parameter. # For example, we have pre-defined a constant with some Google Home Models (WARNING! Not all of them may be present) # This could be used this way from glocaltokens.const import GOOGLE_HOME_MODELS google_devices_select = client.get_google_devices_json(GOOGLE_HOME_MODELS) # But if you need to select just a set of models, or add new models, you can use a list of str google_devices_select_2 = client.get_google_devices_json([ f"Google Home", f"Google Home Mini", f"Google Nest Mini", ]) ``` ### Predefined models list There are some pre-defined models list in [`scanner.py`](/glocaltokens/scanner.py), feel free to add new lists, or add models to a list with a pull-request. #### `GOOGLE_HOME_MODELS`: - Google Home - Google Home Mini - Google Nest Mini - Lenovo Smart Clock ## Security Recommendation Never store the user's password nor username in plain text, if storage is necessary, generate a master token and store it. Example approach: ```python from glocaltokens.client import GLocalAuthenticationTokens # Using google username and password first, and only once client = GLocalAuthenticationTokens( username="", password="" ) # Get master token master_token = client.get_master_token() print("[*] Master token", master_token) """Now store master_token somewhere""" ``` ## Contributing See [Contributing guidelines](CONTRIBUTING.md). This is an open-source project and all countribution is highly welcomed. # Credits Much credits go to [@rithvikvibhu](https://github.com/rithvikvibhu) for doing most of the heavy work like finding a way to extract master and access tokens (See his gist [here](https://gist.github.com/rithvikvibhu/952f83ea656c6782fbd0f1645059055d)). Also, thank you very much to the guys at `pychromecast` which provided the code required to scan devices in the network. [workflow-shield]: https://img.shields.io/github/actions/workflow/status/leikoilja/glocaltokens/linting-and-testing.yaml?branch=master [workflow]: https://github.com/leikoilja/glocaltokens/actions [pypi-shield]: https://img.shields.io/pypi/v/glocaltokens [pypi]: https://pypi.org/project/glocaltokens/ [pepy-shield]: https://pepy.tech/badge/glocaltokens [pepy]: https://pepy.tech/project/glocaltokens [commits-shield]: https://img.shields.io/github/commit-activity/y/leikoilja/glocaltokens [commits]: https://github.com/leikoilja/glocaltokens/commits/master [pre-commit-shield]: https://img.shields.io/badge/pre--commit-enabled-brightgreen [pre-commit]: https://pre-commit.com/ %prep %autosetup -n glocaltokens-0.7.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-glocaltokens -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Sun Apr 23 2023 Python_Bot - 0.7.0-1 - Package Spec generated