summaryrefslogtreecommitdiff
path: root/python-glocaltokens.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-glocaltokens.spec')
-rw-r--r--python-glocaltokens.spec456
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