Skip to content

Commit ae8b869

Browse files
committed
feat: function to get category details
1 parent eeed070 commit ae8b869

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

src/python_picnic_api2/client.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
_extract_search_results,
99
_tree_generator,
1010
_url_generator,
11+
find_nodes_by_content,
1112
)
1213
from .session import PicnicAPISession, PicnicAuthError
1314

@@ -172,6 +173,17 @@ def get_current_deliveries(self):
172173
def get_categories(self, depth: int = 0):
173174
return self._get(f"/my_store?depth={depth}")["catalog"]
174175

176+
def get_category_by_ids(self, l2_id: int, l3_id: int):
177+
path = "/pages/L2-category-page-root" + \
178+
f"?category_id={l2_id}&l3_category_id={l3_id}"
179+
data = self._get(path, add_picnic_headers=True)
180+
nodes = find_nodes_by_content(
181+
data, {"id": f"vertical-article-tiles-sub-header-{l3_id}"}, max_nodes=1)
182+
if len(nodes) == 0:
183+
raise KeyError("Could not find category with specified IDs")
184+
return {"l2_id": l2_id, "l3_id": l3_id,
185+
"name": nodes[0]["pml"]["component"]["accessibilityLabel"]}
186+
175187
def print_categories(self, depth: int = 0):
176188
tree = "\n".join(_tree_generator(self.get_categories(depth=depth)))
177189
print(tree)

0 commit comments

Comments
 (0)