diff options
Diffstat (limited to 'python-glocaltokens.spec')
-rw-r--r-- | python-glocaltokens.spec | 456 |
1 files changed, 456 insertions, 0 deletions
diff --git a/python-glocaltokens.spec b/python-glocaltokens.spec new file mode 100644 index 0000000..8778d07 --- /dev/null +++ b/python-glocaltokens.spec @@ -0,0 +1,456 @@ +%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="<YOUR_GOOGLE_USERNAME>", + password="<YOUR_GOOGLE_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="<YOUR_GOOGLE_USERNAME>", + password="<YOUR_GOOGLE_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="<YOUR_GOOGLE_USERNAME>", + password="<YOUR_GOOGLE_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="<YOUR_GOOGLE_USERNAME>", + password="<YOUR_GOOGLE_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="<YOUR_GOOGLE_USERNAME>", + password="<YOUR_GOOGLE_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="<YOUR_GOOGLE_USERNAME>", + password="<YOUR_GOOGLE_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 +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 0.7.0-1 +- Package Spec generated |