Merge pull request #140 from PiBrewing/brewfatherAPIV2Test

Brewfather apiv2 test
This commit is contained in:
Alexander Vollkopf 2024-06-18 20:57:58 +02:00 committed by GitHub
commit 0f7308b745
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 54 additions and 21 deletions

View file

@ -1,3 +1,3 @@
__version__ = "4.4.1" __version__ = "4.4.2.a3"
__codename__ = "Yeast Starter" __codename__ = "Yeast Starter"

View file

@ -23,7 +23,6 @@ from ..api.step import StepMove, StepResult, StepState
import re import re
import base64 import base64
class UploadController: class UploadController:
def __init__(self, cbpi): def __init__(self, cbpi):
@ -70,9 +69,12 @@ class UploadController:
return [] return []
async def get_brewfather_recipes(self,offset=0): async def get_brewfather_recipes(self,offset=0):
limit = 50
#loop=0
repeat = True
brewfather = True brewfather = True
result=[] result=[]
self.url="https://api.brewfather.app/v1/recipes" self.url="https://api.brewfather.app/v2/recipes"
brewfather_user_id = self.cbpi.config.get("brewfather_user_id", None) brewfather_user_id = self.cbpi.config.get("brewfather_user_id", None)
if brewfather_user_id == "" or brewfather_user_id is None: if brewfather_user_id == "" or brewfather_user_id is None:
brewfather = False brewfather = False
@ -84,25 +86,40 @@ class UploadController:
if brewfather == True: if brewfather == True:
encodedData = base64.b64encode(bytes(f"{brewfather_user_id}:{brewfather_api_key}", "ISO-8859-1")).decode("ascii") encodedData = base64.b64encode(bytes(f"{brewfather_user_id}:{brewfather_api_key}", "ISO-8859-1")).decode("ascii")
headers={"Authorization": "Basic %s" % encodedData} headers={"Authorization": "Basic %s" % encodedData}
parameters={"limit": 50, 'offset': offset} parameters={"limit": limit}
async with aiohttp.ClientSession(headers=headers) as bf_session: while repeat == True:
async with bf_session.get(self.url, params=parameters) as r: try:
bf_recipe_list = await r.json() async with aiohttp.ClientSession(headers=headers) as bf_session:
await bf_session.close() async with bf_session.get(self.url, params=parameters) as r:
bf_recipe_list = await r.json()
await bf_session.close()
except Exception as e:
logging.error(e)
if bf_recipe_list: if bf_recipe_list:
for row in bf_recipe_list: #loop +=1
recipe_id = row['_id'] for row in bf_recipe_list:
name = row['name'] recipe_id = row['_id']
element = {'value': recipe_id, 'label': name} name = row['name']
result.append(element) element = {'value': recipe_id, 'label': name}
return result result.append(element)
else: else:
return [] repeat = False
else:
return []
if len(bf_recipe_list) != limit:
#logging.info(loop)
repeat = False
else:
parameters={"limit": limit, 'start_after': recipe_id}
#logging.info(len(result))
try:
newlist = sorted(result, key=lambda d: d['label'])
#logging.info(newlist)
return newlist
except:
return result
def get_creation_path(self): def get_creation_path(self):
creation_path = self.cbpi.config.get("RECIPE_CREATION_PATH", "upload") creation_path = self.cbpi.config.get("RECIPE_CREATION_PATH", "upload")
@ -738,7 +755,7 @@ class UploadController:
brewfather = True brewfather = True
result=[] result=[]
self.bf_url="https://api.brewfather.app/v1/recipes/" + Recipe_ID self.bf_url="https://api.brewfather.app/v2/recipes/" + Recipe_ID
brewfather_user_id = self.cbpi.config.get("brewfather_user_id", None) brewfather_user_id = self.cbpi.config.get("brewfather_user_id", None)
if brewfather_user_id == "" or brewfather_user_id is None: if brewfather_user_id == "" or brewfather_user_id is None:
brewfather = False brewfather = False

View file

@ -61,6 +61,7 @@ class ConfigUpdate(CBPiExtension):
AddMashIn = self.cbpi.config.get("AddMashInStep", None) AddMashIn = self.cbpi.config.get("AddMashInStep", None)
bfuserid = self.cbpi.config.get("brewfather_user_id", None) bfuserid = self.cbpi.config.get("brewfather_user_id", None)
bfapikey = self.cbpi.config.get("brewfather_api_key", None) bfapikey = self.cbpi.config.get("brewfather_api_key", None)
bflistlength = self.cbpi.config.get("brewfather_list_length", None)
RecipeCreationPath = self.cbpi.config.get("RECIPE_CREATION_PATH", None) RecipeCreationPath = self.cbpi.config.get("RECIPE_CREATION_PATH", None)
BoilKettle = self.cbpi.config.get("BoilKettle", None) BoilKettle = self.cbpi.config.get("BoilKettle", None)
CONFIG_STATUS = self.cbpi.config.get("CONFIG_STATUS", None) CONFIG_STATUS = self.cbpi.config.get("CONFIG_STATUS", None)
@ -244,6 +245,21 @@ class ConfigUpdate(CBPiExtension):
await self.cbpi.config.add("brewfather_api_key", "", type=ConfigType.STRING, description="Brewfather API Key", source="craftbeerpi") await self.cbpi.config.add("brewfather_api_key", "", type=ConfigType.STRING, description="Brewfather API Key", source="craftbeerpi")
except: except:
logger.warning('Unable to update config') logger.warning('Unable to update config')
## Check if Brewfather API Key is in config
if bflistlength is None:
logger.info("INIT Brewfather Recipe List Length")
try:
await self.cbpi.config.add("brewfather_list_length", 50, type=ConfigType.SELECT, description="Brewfather Recipe List length",
source="craftbeerpi",
options= [{"label": "5", "value": 5},
{"label": "10", "value": 10},
{"label": "25", "value": 25},
{"label": "50", "value": 50},
{"label": "100", "value": 100}])
except:
logger.warning('Unable to update config')
## Check if Brewfather API Key is in config ## Check if Brewfather API Key is in config