diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-15 05:22:24 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-15 05:22:24 +0000 |
| commit | e0fe58c9f3a5ca15154b7dfe3ef0b8752c9ff7ed (patch) | |
| tree | 7819a120af9f50cd4f87049d47f29a610f05011a | |
| parent | 1c6d237238606f347c3e6793f70f04951b6a243c (diff) | |
automatic import of python-pyrituals
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-pyrituals.spec | 559 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 561 insertions, 0 deletions
@@ -0,0 +1 @@ +/pyrituals-0.0.6.tar.gz diff --git a/python-pyrituals.spec b/python-pyrituals.spec new file mode 100644 index 0000000..2104b35 --- /dev/null +++ b/python-pyrituals.spec @@ -0,0 +1,559 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pyrituals +Version: 0.0.6 +Release: 1 +Summary: Async Python wrapper for the Rituals Perfume Genie API +License: GPLv3 +URL: https://github.com/milanmeu/pyrituals +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/8d/97/1364136ac7b9668f28def833beffcdbf1cee6adf9bc827934cf941fb3ebf/pyrituals-0.0.6.tar.gz +BuildArch: noarch + +Requires: python3-aiohttp + +%description +# PyRituals package +[](https://pypi.org/project/pyrituals/)  [](https://github.com/milanmeu/pyrituals/blob/main/LICENSE) + +An async Python wrapper for the Rituals Perfume Genie API. +It allows you to control the diffuser and retrieve its state. +The package supports the first and second version. + +## Installation +```bash +pip install pyrituals +``` + +## Usage +### Import +```python +from pyrituals import Account, Diffuser, AuthenticationException +``` + +### Create a `aiohttp.ClientSession` to make requests +```python +from aiohttp import ClientSession +session = ClientSession() +``` + +### Endpoints +Default endpoints: +```python +AUTH_URL = "https://rituals.sense-company.com/ocapi/login" # Account.authenticate() +ACCOUNT_URL = "https://rituals.sense-company.com/api/account/hubs" # Account.get_devices() +HUB_URL = "https://rituals.sense-company.com/api/account/hub" # Diffuser.update_data() +UPDATE_URL = "https://rituals.sense-company.com/api/hub/update/attr" # Diffuser.turn_*(), Diffuser.set_*() +``` + +To change the used API endpoints add an `url` parameter to the function. Example: +```python +LOGIN_URL = "https://rituals.sense-company.com/ocapi/login" +account = Account("name@example.com", "passw0rd", session) +await account.authenticate(url=LOGIN_URL) +``` + +### Account +#### Create an instance +```python +email = "name@example.com" +password = "passw0rd" + +account = Account(email, password, session) +``` + +#### Authenticate +```python +try: + await account.authenticate() +except AuthenticationException as e: + print("Could not authenticate:", e) +``` + +#### Account data +The account data is only available after authentication. +```python +account.data +``` + +#### Get linked devices +`get_devices()` returns a list of `Diffuser`s. +```python +devices = await account.get_devices() +``` + +### Diffuser +#### Diffuser data +The initial data and format is different from the data after executing `update_data()`. +Some properties require data that is only available after executing `update_data()`. +Therefore, it's required to execute `update_data()` before using the diffuser properties. +```python +diffuser.data +diffuser.battery_percentage +diffuser.charging +diffuser.has_battery +diffuser.has_cartridge +diffuser.hash +diffuser.hub_data +diffuser.hublot +diffuser.fill +diffuser.perfume +diffuser.perfume_amount +diffuser.room_size +diffuser.is_on +diffuser.is_online +diffuser.name +diffuser.version +diffuser.wifi_percentage +diffuser.room_size_square_meter +``` + +#### Get updated data +```python +await diffuser.update_data() +``` + +#### Turn the diffuser on +```python +await diffuser.turn_on() +``` + +#### Turn the diffuser off +```python +await diffuser.turn_off() +``` + +#### Set the diffuser perfume amount +Amount must be an integer between 1 and 3, inclusive. +```python +amount = 1 +await diffuser.set_perfume_amount(amount) +``` + +#### Set the diffuser room size +Size must be an integer between 1 and 4, inclusive. +```python +size = 2 +await diffuser.set_room_size(size) +``` + +#### Set the diffuser room size in square meters +Size must be the integer 15, 30, 60 or 100. +```python +size = 60 +await diffuser.set_room_size_square_meter(size) +``` + +## Example +```python +from aiohttp import ClientSession +from asyncio import run + +import pyrituals + +async def main(): + async with ClientSession() as session: + account = pyrituals.Account("name@example.com", "passw0rd", session) + try: + await account.authenticate() + except pyrituals.AuthenticationException as ex: + print("Could not authenticate:", ex) + return + print("Account data:", account.data) + devices = await account.get_devices() + for diffuser in devices: + print("Diffuser data:", diffuser.data) + await diffuser.turn_on() + await diffuser.set_perfume_amount(1) + await diffuser.set_room_size(4) + await diffuser.update_data() + print("Diffuser updated data:", diffuser.data) + if diffuser.has_battery: + print(f"Battery percentage: {diffuser.battery_percentage}%") + +run(main()) +``` + + + + +%package -n python3-pyrituals +Summary: Async Python wrapper for the Rituals Perfume Genie API +Provides: python-pyrituals +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pyrituals +# PyRituals package +[](https://pypi.org/project/pyrituals/)  [](https://github.com/milanmeu/pyrituals/blob/main/LICENSE) + +An async Python wrapper for the Rituals Perfume Genie API. +It allows you to control the diffuser and retrieve its state. +The package supports the first and second version. + +## Installation +```bash +pip install pyrituals +``` + +## Usage +### Import +```python +from pyrituals import Account, Diffuser, AuthenticationException +``` + +### Create a `aiohttp.ClientSession` to make requests +```python +from aiohttp import ClientSession +session = ClientSession() +``` + +### Endpoints +Default endpoints: +```python +AUTH_URL = "https://rituals.sense-company.com/ocapi/login" # Account.authenticate() +ACCOUNT_URL = "https://rituals.sense-company.com/api/account/hubs" # Account.get_devices() +HUB_URL = "https://rituals.sense-company.com/api/account/hub" # Diffuser.update_data() +UPDATE_URL = "https://rituals.sense-company.com/api/hub/update/attr" # Diffuser.turn_*(), Diffuser.set_*() +``` + +To change the used API endpoints add an `url` parameter to the function. Example: +```python +LOGIN_URL = "https://rituals.sense-company.com/ocapi/login" +account = Account("name@example.com", "passw0rd", session) +await account.authenticate(url=LOGIN_URL) +``` + +### Account +#### Create an instance +```python +email = "name@example.com" +password = "passw0rd" + +account = Account(email, password, session) +``` + +#### Authenticate +```python +try: + await account.authenticate() +except AuthenticationException as e: + print("Could not authenticate:", e) +``` + +#### Account data +The account data is only available after authentication. +```python +account.data +``` + +#### Get linked devices +`get_devices()` returns a list of `Diffuser`s. +```python +devices = await account.get_devices() +``` + +### Diffuser +#### Diffuser data +The initial data and format is different from the data after executing `update_data()`. +Some properties require data that is only available after executing `update_data()`. +Therefore, it's required to execute `update_data()` before using the diffuser properties. +```python +diffuser.data +diffuser.battery_percentage +diffuser.charging +diffuser.has_battery +diffuser.has_cartridge +diffuser.hash +diffuser.hub_data +diffuser.hublot +diffuser.fill +diffuser.perfume +diffuser.perfume_amount +diffuser.room_size +diffuser.is_on +diffuser.is_online +diffuser.name +diffuser.version +diffuser.wifi_percentage +diffuser.room_size_square_meter +``` + +#### Get updated data +```python +await diffuser.update_data() +``` + +#### Turn the diffuser on +```python +await diffuser.turn_on() +``` + +#### Turn the diffuser off +```python +await diffuser.turn_off() +``` + +#### Set the diffuser perfume amount +Amount must be an integer between 1 and 3, inclusive. +```python +amount = 1 +await diffuser.set_perfume_amount(amount) +``` + +#### Set the diffuser room size +Size must be an integer between 1 and 4, inclusive. +```python +size = 2 +await diffuser.set_room_size(size) +``` + +#### Set the diffuser room size in square meters +Size must be the integer 15, 30, 60 or 100. +```python +size = 60 +await diffuser.set_room_size_square_meter(size) +``` + +## Example +```python +from aiohttp import ClientSession +from asyncio import run + +import pyrituals + +async def main(): + async with ClientSession() as session: + account = pyrituals.Account("name@example.com", "passw0rd", session) + try: + await account.authenticate() + except pyrituals.AuthenticationException as ex: + print("Could not authenticate:", ex) + return + print("Account data:", account.data) + devices = await account.get_devices() + for diffuser in devices: + print("Diffuser data:", diffuser.data) + await diffuser.turn_on() + await diffuser.set_perfume_amount(1) + await diffuser.set_room_size(4) + await diffuser.update_data() + print("Diffuser updated data:", diffuser.data) + if diffuser.has_battery: + print(f"Battery percentage: {diffuser.battery_percentage}%") + +run(main()) +``` + + + + +%package help +Summary: Development documents and examples for pyrituals +Provides: python3-pyrituals-doc +%description help +# PyRituals package +[](https://pypi.org/project/pyrituals/)  [](https://github.com/milanmeu/pyrituals/blob/main/LICENSE) + +An async Python wrapper for the Rituals Perfume Genie API. +It allows you to control the diffuser and retrieve its state. +The package supports the first and second version. + +## Installation +```bash +pip install pyrituals +``` + +## Usage +### Import +```python +from pyrituals import Account, Diffuser, AuthenticationException +``` + +### Create a `aiohttp.ClientSession` to make requests +```python +from aiohttp import ClientSession +session = ClientSession() +``` + +### Endpoints +Default endpoints: +```python +AUTH_URL = "https://rituals.sense-company.com/ocapi/login" # Account.authenticate() +ACCOUNT_URL = "https://rituals.sense-company.com/api/account/hubs" # Account.get_devices() +HUB_URL = "https://rituals.sense-company.com/api/account/hub" # Diffuser.update_data() +UPDATE_URL = "https://rituals.sense-company.com/api/hub/update/attr" # Diffuser.turn_*(), Diffuser.set_*() +``` + +To change the used API endpoints add an `url` parameter to the function. Example: +```python +LOGIN_URL = "https://rituals.sense-company.com/ocapi/login" +account = Account("name@example.com", "passw0rd", session) +await account.authenticate(url=LOGIN_URL) +``` + +### Account +#### Create an instance +```python +email = "name@example.com" +password = "passw0rd" + +account = Account(email, password, session) +``` + +#### Authenticate +```python +try: + await account.authenticate() +except AuthenticationException as e: + print("Could not authenticate:", e) +``` + +#### Account data +The account data is only available after authentication. +```python +account.data +``` + +#### Get linked devices +`get_devices()` returns a list of `Diffuser`s. +```python +devices = await account.get_devices() +``` + +### Diffuser +#### Diffuser data +The initial data and format is different from the data after executing `update_data()`. +Some properties require data that is only available after executing `update_data()`. +Therefore, it's required to execute `update_data()` before using the diffuser properties. +```python +diffuser.data +diffuser.battery_percentage +diffuser.charging +diffuser.has_battery +diffuser.has_cartridge +diffuser.hash +diffuser.hub_data +diffuser.hublot +diffuser.fill +diffuser.perfume +diffuser.perfume_amount +diffuser.room_size +diffuser.is_on +diffuser.is_online +diffuser.name +diffuser.version +diffuser.wifi_percentage +diffuser.room_size_square_meter +``` + +#### Get updated data +```python +await diffuser.update_data() +``` + +#### Turn the diffuser on +```python +await diffuser.turn_on() +``` + +#### Turn the diffuser off +```python +await diffuser.turn_off() +``` + +#### Set the diffuser perfume amount +Amount must be an integer between 1 and 3, inclusive. +```python +amount = 1 +await diffuser.set_perfume_amount(amount) +``` + +#### Set the diffuser room size +Size must be an integer between 1 and 4, inclusive. +```python +size = 2 +await diffuser.set_room_size(size) +``` + +#### Set the diffuser room size in square meters +Size must be the integer 15, 30, 60 or 100. +```python +size = 60 +await diffuser.set_room_size_square_meter(size) +``` + +## Example +```python +from aiohttp import ClientSession +from asyncio import run + +import pyrituals + +async def main(): + async with ClientSession() as session: + account = pyrituals.Account("name@example.com", "passw0rd", session) + try: + await account.authenticate() + except pyrituals.AuthenticationException as ex: + print("Could not authenticate:", ex) + return + print("Account data:", account.data) + devices = await account.get_devices() + for diffuser in devices: + print("Diffuser data:", diffuser.data) + await diffuser.turn_on() + await diffuser.set_perfume_amount(1) + await diffuser.set_room_size(4) + await diffuser.update_data() + print("Diffuser updated data:", diffuser.data) + if diffuser.has_battery: + print(f"Battery percentage: {diffuser.battery_percentage}%") + +run(main()) +``` + + + + +%prep +%autosetup -n pyrituals-0.0.6 + +%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-pyrituals -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.6-1 +- Package Spec generated @@ -0,0 +1 @@ +02a91c20c071068c0768447c64839c35 pyrituals-0.0.6.tar.gz |
