first deployment of kikomiko with url photos
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
8d98304137
commit
ae3ed7c7b7
@@ -0,0 +1,71 @@
|
||||
"""Fetcher: pull one or more products from kikocosmetics.com product URLs.
|
||||
|
||||
Config JSON in admin Fetch panel:
|
||||
{
|
||||
"urls": [
|
||||
"https://www.kikocosmetics.com/en-gb/p/love-fusion-24h-moisture-radiant-foundation-1-52012/"
|
||||
],
|
||||
"market": "en-gb"
|
||||
}
|
||||
|
||||
Or a single "url" / "query" for one product.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from kiko_enrich import fetch_kiko_product
|
||||
|
||||
NAME = "KIKO Cosmetics (official site)"
|
||||
DESCRIPTION = (
|
||||
"Fetch product description, details table and color variants from kikocosmetics.com. "
|
||||
"Upserts by sku/name — does not invent duplicate families."
|
||||
)
|
||||
|
||||
|
||||
def fetch_products(config: dict):
|
||||
config = config or {}
|
||||
market = config.get("market") or "en-gb"
|
||||
urls = config.get("urls")
|
||||
rows = []
|
||||
if isinstance(urls, list) and urls:
|
||||
for url in urls:
|
||||
if not url:
|
||||
continue
|
||||
rows.append(fetch_kiko_product(url=str(url), market=market))
|
||||
return rows
|
||||
product = fetch_kiko_product(
|
||||
url=config.get("url"),
|
||||
query=config.get("query") or config.get("name"),
|
||||
market=market,
|
||||
)
|
||||
return [product]
|
||||
|
||||
|
||||
def sync_stocks(config: dict, products: list):
|
||||
"""Refresh sellable flags from KIKO for products that already have sourceUrl/sku."""
|
||||
config = config or {}
|
||||
market = config.get("market") or "en-gb"
|
||||
out = []
|
||||
for p in products or []:
|
||||
url = p.get("sourceUrl")
|
||||
sku = p.get("sku")
|
||||
if not url and not sku:
|
||||
continue
|
||||
try:
|
||||
fetched = fetch_kiko_product(
|
||||
url=url,
|
||||
query=p.get("name") if not url else None,
|
||||
market=market,
|
||||
)
|
||||
except Exception:
|
||||
continue
|
||||
out.append(
|
||||
{
|
||||
"id": p.get("id"),
|
||||
"sku": fetched.get("sku") or sku,
|
||||
"external_id": fetched.get("externalId") or p.get("externalId"),
|
||||
"slug": p.get("slug"),
|
||||
"stock": int(fetched.get("stock") or 0),
|
||||
}
|
||||
)
|
||||
return out
|
||||
Reference in New Issue
Block a user