from typing import Any, List
from pydantic import BaseModel, Field, validator
tr_producers = {
'1337': '49'
}
tr_names = {
'настенная сплит-система': 'Настенные кондиционеры'
}
transformer = {
'производитель': tr_producers,
'тип_кондиционера': tr_names
}
meta_data = [
{"key": "галерея", "value": ["1378"]},
{"key": "производитель", "value": "1337"},
{"key": "тип_кондиционера", "value": "настенная сплит-система"},
{"key": "площадь", "value": "84"},
{"key": "мощность_в_режиме_охлаждения", "value": "8000"},
{"key": "мощность_в_режиме_обогрева", "value": "8500"},
{"key": "потребляемая_мощность_при_обогреве", "value": "2640"},
{"key": "потребляемая_мощность_при_охлаждении", "value": "2840"},
{"key": "инверторный", "value": "0"}
]
class ProductMetaData(BaseModel):
key: str = Field(..., description='Ключ мета.')
value: Any = Field(..., description='Значение мета.')
@validator('value')
def update_data(cls, value, values):
tr = transformer.get(values['key'])
if tr:
return tr.get(value, value)
return value
class Product(BaseModel):
meta_data: List[ProductMetaData] = Field(..., description='метаданные продукта')
print(Product.parse_obj({'meta_data': meta_data}).json(indent=4, ensure_ascii=False))
{
"meta_data": [
{
"key": "галерея",
"value": [
"1378"
]
},
{
"key": "производитель",
"value": "49"
},
{
"key": "тип_кондиционера",
"value": "Настенные кондиционеры"
},
{
"key": "площадь",
"value": "84"
},
{
"key": "мощность_в_режиме_охлаждения",
"value": "8000"
},
{
"key": "мощность_в_режиме_обогрева",
"value": "8500"
},
{
"key": "потребляемая_мощность_при_обогреве",
"value": "2640"
},
{
"key": "потребляемая_мощность_при_охлаждении",
"value": "2840"
},
{
"key": "инверторный",
"value": "0"
}
]
}
надо смотреть что еще генерится и отправляется, всяко там идут какие-нибудь куки/хедерсы, которые генерятся JS