get translation keys
This commit is contained in:
		
							
								
								
									
										19
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								README.md
									
									
									
									
									
								
							@@ -83,11 +83,26 @@ async with HonConnection(USER, PASSWORD) as hon:
 | 
				
			|||||||
            setting.value = setting.min + setting.step
 | 
					            setting.value = setting.min + setting.step
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Translation
 | 
				
			||||||
 | 
					To get the translation of some keys like programs, you can use the translation command to see all of hOn's available translations
 | 
				
			||||||
 | 
					```commandline
 | 
				
			||||||
 | 
					$ pyhOn translate es
 | 
				
			||||||
 | 
					AC:
 | 
				
			||||||
 | 
					  APPLIANCE_RENAME:
 | 
				
			||||||
 | 
					    CONTENT_CHOOSE_NAME: Antes de continuar, debes elegir un nombre...
 | 
				
			||||||
 | 
					    DEFAULT_NAME: Aire acondicionado
 | 
				
			||||||
 | 
					    TITLE_CHOOSE_NAME: ¡Elije un nombre para tu aire acondicionado!
 | 
				
			||||||
 | 
					    TITLE_SAVE_NAME: Para cambiar el nombre de tu aparato:
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					This generates a huge output. It is recommended to pipe this into a file
 | 
				
			||||||
 | 
					```commandline
 | 
				
			||||||
 | 
					$ pyhOn translate fr > hon_fr.yaml
 | 
				
			||||||
 | 
					$ pyhOn translate en --json > hon_en.json
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
## Tested devices
 | 
					## Tested devices
 | 
				
			||||||
- Haier Washing Machine HW90
 | 
					- Haier Washing Machine HW90
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_Unfortunately I don't have any more Haier appliances..._
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Usage example
 | 
					## Usage example
 | 
				
			||||||
This library is used for the custom [HomeAssistant Integration "Haier hOn"](https://github.com/Andre0512/hOn).
 | 
					This library is used for the custom [HomeAssistant Integration "Haier hOn"](https://github.com/Andre0512/hOn).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
#!/usr/bin/env python
 | 
					#!/usr/bin/env python
 | 
				
			||||||
import argparse
 | 
					import argparse
 | 
				
			||||||
import asyncio
 | 
					import asyncio
 | 
				
			||||||
 | 
					import json
 | 
				
			||||||
import logging
 | 
					import logging
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import time
 | 
					 | 
				
			||||||
from getpass import getpass
 | 
					from getpass import getpass
 | 
				
			||||||
from pathlib import Path
 | 
					from pathlib import Path
 | 
				
			||||||
from pprint import pprint
 | 
					from pprint import pprint
 | 
				
			||||||
@@ -25,6 +25,9 @@ def get_arguments():
 | 
				
			|||||||
    keys = subparser.add_parser("keys", help="print as key format")
 | 
					    keys = subparser.add_parser("keys", help="print as key format")
 | 
				
			||||||
    keys.add_argument("keys", help="print as key format", action="store_true")
 | 
					    keys.add_argument("keys", help="print as key format", action="store_true")
 | 
				
			||||||
    keys.add_argument("--all", help="print also full keys", action="store_true")
 | 
					    keys.add_argument("--all", help="print also full keys", action="store_true")
 | 
				
			||||||
 | 
					    translate = subparser.add_parser("translate", help="print available translation keys")
 | 
				
			||||||
 | 
					    translate.add_argument("translate", help="language (de, en, fr...)", metavar="LANGUAGE")
 | 
				
			||||||
 | 
					    translate.add_argument("--json", help="print as json", action="store_true")
 | 
				
			||||||
    return vars(parser.parse_args())
 | 
					    return vars(parser.parse_args())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -81,8 +84,22 @@ def create_command(commands, concat=False):
 | 
				
			|||||||
    return result
 | 
					    return result
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async def translate(language, json_output=False):
 | 
				
			||||||
 | 
					    async with HonConnection() as hon:
 | 
				
			||||||
 | 
					        keys = await hon.translation_keys(language)
 | 
				
			||||||
 | 
					    if json_output:
 | 
				
			||||||
 | 
					        print(json.dumps(keys, indent=4))
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        clean_keys = json.dumps(keys).replace("\\n", "\\\\n").replace("\\\\r", "").replace("\\r", "")
 | 
				
			||||||
 | 
					        keys = json.loads(clean_keys)
 | 
				
			||||||
 | 
					        pretty_print(keys)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async def main():
 | 
					async def main():
 | 
				
			||||||
    args = get_arguments()
 | 
					    args = get_arguments()
 | 
				
			||||||
 | 
					    if language := args.get("translate"):
 | 
				
			||||||
 | 
					        await translate(language, json_output=args.get("json"))
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
    if not (user := args["user"]):
 | 
					    if not (user := args["user"]):
 | 
				
			||||||
        user = input("User for hOn account: ")
 | 
					        user = input("User for hOn account: ")
 | 
				
			||||||
    if not (password := args["password"]):
 | 
					    if not (password := args["password"]):
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								pyhon/api.py
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								pyhon/api.py
									
									
									
									
									
								
							@@ -3,7 +3,6 @@ import json
 | 
				
			|||||||
import logging
 | 
					import logging
 | 
				
			||||||
import secrets
 | 
					import secrets
 | 
				
			||||||
from datetime import datetime
 | 
					from datetime import datetime
 | 
				
			||||||
from pprint import pprint
 | 
					 | 
				
			||||||
from typing import List
 | 
					from typing import List
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import aiohttp as aiohttp
 | 
					import aiohttp as aiohttp
 | 
				
			||||||
@@ -16,7 +15,7 @@ _LOGGER = logging.getLogger()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HonConnection:
 | 
					class HonConnection:
 | 
				
			||||||
    def __init__(self, email, password, session=None) -> None:
 | 
					    def __init__(self, email="", password="", session=None) -> None:
 | 
				
			||||||
        super().__init__()
 | 
					        super().__init__()
 | 
				
			||||||
        self._email = email
 | 
					        self._email = email
 | 
				
			||||||
        self._password = password
 | 
					        self._password = password
 | 
				
			||||||
@@ -27,7 +26,8 @@ class HonConnection:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    async def __aenter__(self):
 | 
					    async def __aenter__(self):
 | 
				
			||||||
        self._session = aiohttp.ClientSession()
 | 
					        self._session = aiohttp.ClientSession()
 | 
				
			||||||
        await self.setup()
 | 
					        if self._email and self._password:
 | 
				
			||||||
 | 
					            await self.setup()
 | 
				
			||||||
        return self
 | 
					        return self
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async def __aexit__(self, exc_type, exc_val, exc_tb):
 | 
					    async def __aexit__(self, exc_type, exc_val, exc_tb):
 | 
				
			||||||
@@ -128,9 +128,9 @@ class HonConnection:
 | 
				
			|||||||
                return data
 | 
					                return data
 | 
				
			||||||
        return {}
 | 
					        return {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async def translation_keys(self):
 | 
					    async def translation_keys(self, language="en"):
 | 
				
			||||||
        headers = {"x-api-key": const.API_KEY, "content-type": "application/json"}
 | 
					        headers = {"x-api-key": const.API_KEY, "content-type": "application/json"}
 | 
				
			||||||
        config = await self.app_config()
 | 
					        config = await self.app_config(language=language)
 | 
				
			||||||
        if url := config.get("language", {}).get("jsonPath"):
 | 
					        if url := config.get("language", {}).get("jsonPath"):
 | 
				
			||||||
            async with self._session.get(url, headers=headers) as response:
 | 
					            async with self._session.get(url, headers=headers) as response:
 | 
				
			||||||
                if result := await response.json():
 | 
					                if result := await response.json():
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user