diff --git a/Парсер_IKEA/main_win proxy.py b/Парсер_IKEA/main_win proxy.py
new file mode 100644
index 0000000..eca2af1
--- /dev/null
+++ b/Парсер_IKEA/main_win proxy.py
@@ -0,0 +1,677 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+import os, json, re, math, time, html, requests, datetime
+from bs4 import BeautifulSoup
+from openpyxl import Workbook
+
+# ───────────────────────── ПУТИ / ФАЙЛЫ ───────────────────────────
+BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+RECORDS_DIR = os.path.join(BASE_DIR, "records_folder")
+os.makedirs(RECORDS_DIR, exist_ok=True)
+
+INPUT_FILE = os.path.join(BASE_DIR, "product_links.txt")
+OUTPUT_FILE = os.path.join(RECORDS_DIR, "records.xlsx")
+DICT_FILE = os.path.join(BASE_DIR, "dictionary_main.txt")
+EXCL_FILE = os.path.join(BASE_DIR, "exclusion_materials.txt")
+POST_LOG = os.path.join(RECORDS_DIR, "post_log.txt")
+
+# ───────────────────────── ПРОКСИ ДЛЯ САЙТА ───────────────────────
+"""
+УКАЖИТЕ СВОИ ДАННЫЕ НИЖЕ и всё заработает через прокси именно для запросов к IKEA.
+
+Примеры формата:
+ - без авторизации: http://proxy.host.com:8080
+ - c авторизацией: http://username:password@proxy.host.com:8080
+ - socks5 (если нужно): socks5://user:pass@host:1080
+
+ПОЖАЛУЙСТА, замените значения PROXY_SCHEME, PROXY_USER, PROXY_PASS, PROXY_HOST, PROXY_PORT.
+"""
+PROXY_SCHEME = "http" # "http", "https" или "socks5"
+PROXY_USER = "vdE9MRLB"
+PROXY_PASS = "YW9ZvHLU"
+PROXY_HOST = "146.19.76.243"
+PROXY_PORT = 63276
+
+# Собираем URL прокси. Если логин/пароль не нужны — оставьте PROXY_USER/PROXY_PASS пустыми строками.
+if PROXY_USER and PROXY_PASS:
+ _AUTH = f"{PROXY_USER}:{PROXY_PASS}@"
+else:
+ _AUTH = ""
+
+PROXY_URL = f"{PROXY_SCHEME}://{_AUTH}{PROXY_HOST}:{PROXY_PORT}"
+
+# Прокси используем ТОЛЬКО для запросов к сайту IKEA (GET). POST в API — напрямую.
+PROXIES_WEB = {
+ "http": PROXY_URL,
+ "https": PROXY_URL,
+}
+
+REQUEST_TIMEOUT = 20
+
+# ───────────────────────── НАСТРОЙКИ POST ─────────────────────────
+POST_URL = os.getenv("IKEA_POST_URL", "http://localhost:3005/parser/data")
+POST_API_KEY = os.getenv("IKEA_POST_API_KEY", "")
+POST_TIMEOUT = 20
+BATCH_SIZE = 50
+# Если нужно тоже слать POST через прокси — раскомментируйте и поменяйте на нужный:
+# PROXIES_API = {"http": PROXY_URL, "https": PROXY_URL}
+
+# ───────────────────────── НАСТРОЙКИ САЙТА ────────────────────────
+HEADERS = {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
+ "AppleWebKit/537.36 (KHTML, like Gecko) "
+ "Chrome/126.0.0.0 Safari/537.36",
+ "Accept-Language": "pl-PL,pl;q=0.9,en;q=0.8,ru;q=0.7",
+}
+CSS_SELECTOR = ".pip-product__subgrid.product-pip.js-product-pip"
+
+BLOCKS = [
+ "buyModule",
+ "productSummary",
+ "pipPricePackage",
+ "productInformationSection",
+ "keyFacts",
+ "stockcheckSection",
+ "availabilityGroup",
+ "productGallery",
+]
+
+# Whitelist колонок для Excel.
+KEEP_COLUMNS = [
+ "availabilityGroup.serverOnlineSellable",
+ "availabilityGroup.storeHeader",
+ "buyModule.onlineSellable",
+ "buyModule.productName",
+ "buyModule.productPrice",
+ "buyModule.productType",
+ "keyFacts.ariaLabels",
+ "keyFacts.gaLabel",
+ "keyFacts.keyFacts",
+ "keyFacts.keyFacts_formatted",
+ "pipPricePackage.measurementText",
+ "pipPricePackage.productDescription",
+ "productGallery.urls",
+ "productInformationSection.dimensionProps",
+ "productInformationSection.dimensionProps_formatted",
+ "productInformationSection.dimensionProps_formatted_html_translated",
+ "productInformationSection.productDetailsProps",
+ "productInformationSection.productDetailsProps_formatted",
+ "productInformationSection.productDetailsProps_formatted_html",
+ "productSummary.description",
+ "productSummary.visibleItemNo",
+ "stockcheckSection.packagingProps",
+ "stockcheckSection.typeName",
+ "total brutto",
+ "prductVariantColorMeasure",
+ "categoryBreadcrumb",
+ "originalName",
+ "url",
+]
+
+# ───────────────────────── УТИЛИТЫ I/O ────────────────────────────
+def ask_bool(prompt: str, default: str = "1") -> bool:
+ try:
+ val = input(f"{prompt} (1=yes, 0=no) [{default}]: ").strip() or default
+ except EOFError:
+ val = default
+ return val == "1"
+
+def _post_log(msg: str):
+ try:
+ with open(POST_LOG, "a", encoding="utf-8") as f:
+ f.write(msg.rstrip() + "\n")
+ except Exception:
+ pass
+
+def _now_tag():
+ return datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
+
+def _save_json_batch(payload: dict, batch_index: int):
+ fname = f"ikea_batch_{_now_tag()}_{batch_index:04d}.json"
+ fpath = os.path.join(RECORDS_DIR, fname)
+ with open(fpath, "w", encoding="utf-8") as fh:
+ json.dump(payload, fh, ensure_ascii=False, indent=2)
+ print(f"💾 JSON saved: {fname}")
+ return fpath
+
+# ───────────────────────── СЛОВАРИ / ФИЛЬТРЫ ──────────────────────
+def load_dictionary(path: str) -> dict:
+ if not os.path.isfile(path):
+ return {}
+ txt = open(path, "r", encoding="utf-8").read()
+ pairs = re.findall(r'"([^"]+)"\s*:\s*"([^"]+)"', txt)
+ return {k: v for k, v in pairs}
+
+DICT = load_dictionary(DICT_FILE)
+
+def translate_token(token: str) -> str:
+ return DICT.get(token, token)
+
+def load_exclusions(path: str) -> set:
+ if not os.path.isfile(path):
+ return set()
+ txt = open(path, "r", encoding="utf-8").read()
+ quoted = re.findall(r'"([^"]+)"', txt, flags=re.S)
+ tokens = quoted if quoted else re.split(r"[,;\n\r]+", txt)
+ return {t.strip().lower() for t in tokens if t.strip()}
+
+EXCLUSIONS = load_exclusions(EXCL_FILE)
+
+def materials_from_details_json(details: dict) -> list[str]:
+ out = []
+ def walk(node):
+ if isinstance(node, dict):
+ for k, v in node.items():
+ if k == "material" and isinstance(v, str):
+ out.append(v)
+ else:
+ walk(v)
+ elif isinstance(node, list):
+ for x in node:
+ walk(x)
+ walk(details or {})
+ return out
+
+def materials_match_exclusions(details: dict, exclusion_tokens: set) -> bool:
+ if not exclusion_tokens:
+ return False
+ mats = materials_from_details_json(details)
+ joined = "\n".join(mats).lower()
+ return any(tok in joined for tok in exclusion_tokens)
+
+# ───────────────────────── ФОРМАТТЕРЫ ─────────────────────────────
+def _parse_json_value(val):
+ if isinstance(val, (dict, list)) or val is None:
+ return val
+ if isinstance(val, str):
+ s = val.strip()
+ if not s:
+ return val
+ try:
+ return json.loads(s)
+ except Exception:
+ return val
+ return val
+
+def flatten_block(block_name, data):
+ if not isinstance(data, dict):
+ return {}
+ flat = {}
+ for k, v in data.items():
+ if block_name == "productGallery" and k == "mediaList":
+ if isinstance(v, list):
+ urls = []
+ for item in v:
+ content = item.get("content", {})
+ if isinstance(content, dict) and "url" in content:
+ urls.append(content["url"])
+ flat["productGallery.urls"] = "\n".join(urls)
+ return flat
+ key = f"{block_name}.{k}"
+ flat[key] = v
+ return flat
+
+def format_keyfacts(raw_keyfacts):
+ if not isinstance(raw_keyfacts, list):
+ return ""
+ out = []
+ header_added = False
+ for el in raw_keyfacts:
+ lbl = (el or {}).get("label")
+ name = (el or {}).get("name", "Właściwości")
+ if not header_added:
+ out.append(name)
+ header_added = True
+ if lbl:
+ out.append(lbl)
+ return "\n".join(out)
+
+def _fmt_float(x):
+ try:
+ return f"{float(x):.2f}".rstrip("0").rstrip(".")
+ except Exception:
+ return ""
+
+def _collect_packaging_total_kg(packaging):
+ total = 0.0
+ if not isinstance(packaging, dict):
+ return total
+ content = (packaging.get("contentProps") or {}).get("packages") or []
+ for pkg in content:
+ qty = ((pkg.get("quantity") or {}).get("value")) or 1
+ ms = pkg.get("measurements") or []
+ for block in ms:
+ if not isinstance(block, list):
+ continue
+ weight_lbl = next((m for m in block if (m.get("type") == "weight" or m.get("label") == "Waga")), None)
+ if weight_lbl and isinstance(weight_lbl.get("value"), (int, float)):
+ total += float(weight_lbl["value"]) * (qty or 1)
+ return total
+
+def format_dimensions(raw_dim_props, with_html=False, translated=False):
+ if not isinstance(raw_dim_props, dict):
+ return ""
+ lines = []
+ br = "
" if with_html else "\n"
+
+ title = translate_token("Wymiary") if translated else "Wymiary"
+ lines.append(f"{title}" if with_html else title)
+
+ for d in raw_dim_props.get("dimensions", []):
+ name = d.get("name", "")
+ meas = d.get("measure", "")
+ if not name and not meas:
+ continue
+ if translated:
+ name_t = translate_token(name)
+ line = f"{name_t}: {meas}".strip()
+ else:
+ line = f"{name}: {meas}".strip()
+ lines.append(line)
+
+ pack = (raw_dim_props.get("packaging") or {})
+ pack_title = translate_token("Opakowanie") if translated else "Opakowanie"
+ lines.append(br if with_html else "")
+ lines.append(f"{pack_title}" if with_html else pack_title)
+
+ content = (pack.get("contentProps") or {}).get("packages") or []
+ for pkg in content:
+ name = pkg.get("name") or ""
+ if name:
+ lines.append(name)
+
+ art = (pkg.get("articleNumber") or {}).get("value")
+ if art:
+ art_lbl = "Numer artykułu"
+ if translated:
+ art_lbl = translate_token(art_lbl)
+ lines.append(art_lbl)
+ lines.append(f"{art}")
+
+ ms = pkg.get("measurements") or []
+ for block in ms:
+ if not isinstance(block, list):
+ continue
+ for m in block:
+ lbl = m.get("label", "")
+ txt = m.get("text", "")
+ if translated:
+ lbl = translate_token(lbl) if lbl else lbl
+ if lbl or txt:
+ lines.append(f"{lbl}: {txt}".strip(": "))
+
+ q_val = ((pkg.get("quantity") or {}).get("value"))
+ if q_val:
+ q_lbl = "Paczka(i)"
+ if translated:
+ q_lbl = translate_token(q_lbl)
+ lines.append(f"{q_lbl}: {q_val}")
+
+ if with_html:
+ s = br.join([x for x in lines if x is not None])
+ s = re.sub(r"(" + re.escape(br) + r"){2,}", br*2, s)
+ s = s.strip(br)
+ if s.startswith("strong>"):
+ s = "<" + s
+ return s
+ return "\n".join([x for x in lines if x is not None]).strip()
+
+def format_product_details(raw_details, add_summary_desc="", with_html=False, skip_assembly=True):
+ if not isinstance(raw_details, dict):
+ return add_summary_desc if with_html else add_summary_desc
+
+ br = "
" if with_html else "\n"
+ out = []
+
+ if add_summary_desc:
+ out.append(add_summary_desc)
+ out.append(br if with_html else "")
+
+ t1 = "Informacje o produkcie"
+ out.append(f"{t1}" if with_html else t1)
+ pd = (raw_details.get("productDescriptionProps") or {})
+ paragraphs = pd.get("paragraphs") or []
+ for p in paragraphs:
+ out.append(p)
+
+ dlabel = pd.get("designerLabel")
+ dname = pd.get("designerName")
+ if dlabel and dname:
+ out.append(dlabel)
+ out.append(dname)
+
+ if raw_details.get("productId"):
+ out.append("Numer artykułu")
+ out.append(raw_details["productId"])
+
+ acc = (raw_details.get("accordionObject") or {})
+ gk = ((acc.get("goodToKnow") or {}).get("contentProps") or {}).get("goodToKnow") or []
+ if gk:
+ out.append(br if with_html else "")
+ t2 = "Dobrze wiedzieć"
+ out.append(f"{t2}" if with_html else t2)
+ for item in gk:
+ txt = item.get("text")
+ if txt:
+ out.append(txt)
+
+ mac = (acc.get("materialsAndCare") or {}).get("contentProps") or {}
+ mats = mac.get("materials") or []
+ care = mac.get("careInstructions") or []
+
+ t3 = "Materiały i pielęgnacja"
+ if mats or care:
+ out.append(br if with_html else "")
+ out.append(f"{t3}" if with_html else t3)
+
+ if mats:
+ out.append("Materiały")
+ for m in mats:
+ ptype = m.get("productType", "")
+ for mat in (m.get("materials") or []):
+ material = mat.get("material", "")
+ if ptype:
+ out.append(ptype)
+ if material:
+ out.append(material)
+
+ if care:
+ detailsCareText = mac.get("detailsCareText", "Pielęgnacja")
+ out.append(detailsCareText)
+ for c in care:
+ ptype = c.get("productType", "")
+ texts = c.get("texts") or []
+ if ptype:
+ out.append(ptype)
+ for t in texts:
+ out.append(t)
+
+ safety = (raw_details.get("safetyAndCompliance") or {}).get("contentProps") or {}
+ sc = safety.get("safetyAndCompliance") or []
+ if sc:
+ out.append(br if with_html else "")
+ t4 = "Bezpieczeństwo i zgodność с przepisami"
+ out.append(f"{t4}" if with_html else t4)
+ for s in sc:
+ txt = s.get("text")
+ if txt:
+ out.append(txt)
+
+ if with_html:
+ s = br.join([x for x in out if x is not None])
+ s = re.sub(r"(" + re.escape(br) + r"){2,}", br*2, s)
+ return s.strip(br)
+ return "\n".join([x for x in out if x is not None]).strip()
+
+def build_variant_color_measure(desc: str, type_name: str, measurement: str) -> str:
+ s = (desc or "")
+ t = (type_name or "").strip()
+ if t:
+ pattern = r"^\s*" + re.escape(t) + r"[\s,;:\-–—/]*"
+ s = re.sub(pattern, "", s, flags=re.IGNORECASE)
+ if not re.search(r"[0-9A-Za-zА-Яа-яЁёÀ-ž]", s or ""):
+ s = ""
+ s = s.strip()
+ meas = (measurement or "").strip()
+ if not s:
+ return meas if meas else ""
+ s = s[:1].upper() + s[1:]
+ return f"{s}, {meas}" if meas else s
+
+# ───────────────────── СКРАПИНГ КАРТОЧКИ ──────────────────────────
+def extract_data(url: str) -> dict:
+ """
+ Возвращает плоский dict с полями KEEP_COLUMNS.
+ Работает ЧЕРЕЗ ПРОКСИ (см. PROXIES_WEB).
+ """
+ try:
+ resp = requests.get(
+ url,
+ headers=HEADERS,
+ timeout=REQUEST_TIMEOUT,
+ proxies=PROXIES_WEB,
+ allow_redirects=True,
+ )
+ resp.raise_for_status()
+ soup = BeautifulSoup(resp.text, "html.parser")
+
+ target = soup.select_one(CSS_SELECTOR)
+ if not target:
+ return {"url": url, "error": "CSS selector not found"}
+
+ raw = target.get("data-hydration-props")
+ if not raw:
+ return {"url": url, "error": "data-hydration-props not found"}
+
+ decoded = html.unescape(raw)
+ full_json = json.loads(decoded)
+
+ result = {"url": url}
+ for block in BLOCKS:
+ result.update(flatten_block(block, full_json.get(block, {})))
+
+ kf_json = _parse_json_value(result.get("keyFacts.keyFacts"))
+ dim_json = _parse_json_value(result.get("productInformationSection.dimensionProps"))
+ det_json = _parse_json_value(result.get("productInformationSection.productDetailsProps"))
+
+ result["keyFacts.keyFacts_formatted"] = format_keyfacts(kf_json)
+ result["productInformationSection.dimensionProps_formatted"] = format_dimensions(dim_json, with_html=False, translated=False)
+ html_trans = format_dimensions(dim_json, with_html=True, translated=True)
+ if isinstance(html_trans, str) and html_trans.startswith("strong>"):
+ html_trans = "<" + html_trans
+ result["productInformationSection.dimensionProps_formatted_html_translated"] = html_trans
+
+ total_kg = _collect_packaging_total_kg((dim_json or {}).get("packaging") or {})
+ result["total brutto"] = _fmt_float(total_kg)
+
+ summary_desc = result.get("productSummary.description", "") or ""
+ result["productInformationSection.productDetailsProps_formatted"] = format_product_details(det_json, add_summary_desc=summary_desc, with_html=False, skip_assembly=True)
+ result["productInformationSection.productDetailsProps_formatted_html"] = format_product_details(det_json, add_summary_desc=summary_desc, with_html=True, skip_assembly=True)
+
+ desc = result.get("pipPricePackage.productDescription", "") or ""
+ tname = result.get("stockcheckSection.typeName", "") or ""
+ meas = result.get("pipPricePackage.measurementText", "") or ""
+ result["prductVariantColorMeasure"] = build_variant_color_measure(desc, tname, meas)
+
+ # breadcrumb (из ld+json)
+ breadcrumb = None
+ for tag in soup.find_all("script", attrs={"type": lambda t: t and "ld+json" in t}):
+ try:
+ data = json.loads(tag.string)
+ except Exception:
+ continue
+ if isinstance(data, list):
+ data = next((d for d in data if isinstance(d, dict) and d.get("@type") == "BreadcrumbList"), None)
+ if isinstance(data, dict) and data.get("@type") == "BreadcrumbList":
+ items = data.get("itemListElement", [])
+ names = [it.get("name", "") for it in items]
+ breadcrumb = "/".join(names)
+ break
+ if breadcrumb:
+ result["categoryBreadcrumb"] = breadcrumb
+
+ # whitelist + originalName
+ filtered = {k: result.get(k) for k in KEEP_COLUMNS if k != "originalName"}
+ pn = (result.get("buyModule.productName") or "").strip()
+ tn = (result.get("stockcheckSection.typeName") or "").strip()
+ filtered["originalName"] = f"{pn} {tn}".strip() or pn or tn
+
+ return filtered
+
+ except Exception as e:
+ return {"url": url, "error": str(e)}
+
+# ───────────────────── ПОСТРОЕНИЕ ВАРИАНТА / POST ─────────────────
+def _split_color_size(text: str):
+ if not text:
+ return "", ""
+ parts = [p.strip() for p in text.split(",", 1)]
+ if len(parts) == 2:
+ return parts[0], parts[1]
+ return "", parts[0]
+
+def _ceil_price(v):
+ try:
+ return int(math.ceil(float(v)))
+ except Exception:
+ return None
+
+def _ceil_int(v):
+ try:
+ return int(math.ceil(float(v)))
+ except Exception:
+ return None
+
+def build_variant(row: dict) -> dict:
+ visible = row.get("productSummary.visibleItemNo") or ""
+ sku = visible.replace(" ", "")
+
+ csm = (row.get("prductVariantColorMeasure") or "").strip()
+ color, size = _split_color_size(csm)
+ if not color and not size:
+ size = (row.get("pipPricePackage.measurementText") or "").strip()
+
+ cost = _ceil_price(row.get("buyModule.productPrice"))
+ url = row.get("url") or ""
+ name = row.get("originalName") or row.get("buyModule.productName") or ""
+ desc_html = row.get("productInformationSection.productDetailsProps_formatted_html") or ""
+ composition_html = row.get("productInformationSection.dimensionProps_formatted_html_translated") or ""
+
+ imgs = []
+ raw_imgs = row.get("productGallery.urls") or ""
+ if isinstance(raw_imgs, str):
+ imgs = [x for x in raw_imgs.split("\n") if x.strip()]
+
+ in_stock = bool(row.get("availabilityGroup.serverOnlineSellable")) or bool(row.get("buyModule.onlineSellable"))
+ weight_kg = _ceil_int(row.get("total brutto"))
+
+ variant = {
+ "status_id": 1,
+ "color": (color.capitalize() if color else "none"),
+ "sku": sku,
+ "size": size,
+ "cost": cost,
+ "originalUrl": url,
+ "originalName": name,
+ "originalDescription": desc_html,
+ "originalComposition": composition_html,
+ "images": imgs,
+ "inStock": in_stock,
+ "weight": weight_kg if weight_kg is not None else 0,
+ }
+
+ return {
+ "category": {"name": "TEST/IKEA"},
+ "brand": {"name": "ikea"},
+ "variant": variant,
+ }
+
+def post_payload(payload: dict) -> dict:
+ headers = {"Content-Type": "application/json"}
+ if POST_API_KEY:
+ headers["Authorization"] = f"Bearer {POST_API_KEY}"
+
+ body = json.dumps(payload, ensure_ascii=False)
+ _post_log(f"→ POST {POST_URL}\nHeaders: {headers}\nBody: {body}")
+
+ try:
+ r = requests.post(
+ POST_URL,
+ headers=headers,
+ data=body.encode("utf-8"),
+ timeout=POST_TIMEOUT,
+ # proxies=PROXIES_API, # ← если хотите слать POST через прокси — раскомментируйте
+ )
+ text = r.text
+ _post_log(f"← {r.status_code}\n{text}\n{'-'*60}")
+ ok = 200 <= r.status_code < 300
+ return {"ok": ok, "status": r.status_code, "response": text}
+ except Exception as e:
+ _post_log(f"× ERROR: {e}\n{'-'*60}")
+ return {"ok": False, "status": None, "error": str(e)}
+
+# ───────────────────────── СЕРДЦЕ СКРИПТА ─────────────────────────
+def safe_cell(val):
+ if isinstance(val, (dict, list)):
+ return json.dumps(val, ensure_ascii=False)
+ return "" if val is None else val
+
+def main():
+ SAVE_JSON = ask_bool("SAVE_JSON (сохранять JSON на диск?)", "1")
+ SEND_JSON = ask_bool("SEND_JSON (отправлять на API?)", "1")
+
+ with open(INPUT_FILE, "r", encoding="utf-8") as f:
+ links = [line.strip() for line in f if line.strip()]
+ print(f"Всего ссылок: {len(links)}")
+
+ wb = Workbook()
+ ws = wb.active
+ ws.title = "IKEA Products"
+ ws.append(KEEP_COLUMNS)
+
+ batch_items = []
+ batch_index = 1
+
+ def flush_batch():
+ nonlocal batch_items, batch_index
+ if not batch_items:
+ return
+ payload = {"parserName": "ikea", "items": batch_items}
+ if SAVE_JSON:
+ _save_json_batch(payload, batch_index)
+ if SEND_JSON:
+ res = post_payload(payload)
+ ok = res.get("ok")
+ print(f"POST batch {batch_index}: {'OK' if ok else 'FAIL'} (status={res.get('status')})")
+ batch_index += 1
+ batch_items = []
+
+ for idx, link in enumerate(links, 1):
+ print(f"[{idx}/{len(links)}] {link}")
+ row = extract_data(link)
+
+ # Пишем в Excel всё (без фильтров)
+ ws.append([safe_cell(row.get(col, "")) for col in KEEP_COLUMNS])
+
+ # Фильтры для JSON/API
+ try:
+ price = float(row.get("buyModule.productPrice") or 0)
+ except Exception:
+ price = 0.0
+
+ try:
+ total_kg = float(row.get("total brutto") or 0)
+ except Exception:
+ total_kg = 0.0
+
+ details_json = row.get("productInformationSection.productDetailsProps") or {}
+
+ if not (20 <= price <= 1500):
+ pass
+ elif total_kg > 30:
+ pass
+ elif materials_match_exclusions(details_json, EXCLUSIONS):
+ pass
+ else:
+ try:
+ item = build_variant(row)
+ batch_items.append(item)
+ except Exception as e:
+ _post_log(f"× build_variant error for {link}: {e}")
+
+ if idx % 50 == 0:
+ wb.save(OUTPUT_FILE)
+ print(f"💾 autosave: {OUTPUT_FILE}")
+
+ if len(batch_items) >= BATCH_SIZE:
+ flush_batch()
+
+ wb.save(OUTPUT_FILE)
+ print(f"\n✅ Excel готов: {OUTPUT_FILE}")
+
+ flush_batch()
+ print("🎯 Готово.")
+
+if __name__ == "__main__":
+ main()
diff --git a/Парсер_IKEA/playwright_profile/BrowserMetrics/BrowserMetrics-68AC941C-159F2.pma b/Парсер_IKEA/playwright_profile/BrowserMetrics/BrowserMetrics-68AC941C-159F2.pma
deleted file mode 100644
index 42f70e1..0000000
Binary files a/Парсер_IKEA/playwright_profile/BrowserMetrics/BrowserMetrics-68AC941C-159F2.pma and /dev/null differ
diff --git a/Парсер_IKEA/playwright_profile/Default/AutofillStrikeDatabase/LOCK b/Парсер_IKEA/playwright_profile/Default/AutofillStrikeDatabase/LOCK
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/AutofillStrikeDatabase/LOG b/Парсер_IKEA/playwright_profile/Default/AutofillStrikeDatabase/LOG
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/BrowsingTopicsSiteData b/Парсер_IKEA/playwright_profile/Default/BrowsingTopicsSiteData
new file mode 100644
index 0000000..e2d621d
Binary files /dev/null and b/Парсер_IKEA/playwright_profile/Default/BrowsingTopicsSiteData differ
diff --git a/Парсер_IKEA/playwright_profile/Default/BrowsingTopicsSiteData-journal b/Парсер_IKEA/playwright_profile/Default/BrowsingTopicsSiteData-journal
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/BrowsingTopicsState b/Парсер_IKEA/playwright_profile/Default/BrowsingTopicsState
new file mode 100644
index 0000000..cba69c5
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/BrowsingTopicsState
@@ -0,0 +1,12 @@
+{
+ "epochs": [ {
+ "calculation_time": "13400615113864626",
+ "config_version": 0,
+ "model_version": "0",
+ "padded_top_topics_start_index": 0,
+ "taxonomy_version": 0,
+ "top_topics_and_observing_domains": [ ]
+ } ],
+ "hex_encoded_hmac_key": "BCC6F5095863837B723E8CFA5D27BBE0A8488A2D6EB32D70BDD1BC74189A557F",
+ "next_scheduled_calculation_time": "13401219913864927"
+}
diff --git a/Парсер_IKEA/playwright_profile/Default/BudgetDatabase/LOCK b/Парсер_IKEA/playwright_profile/Default/BudgetDatabase/LOCK
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/BudgetDatabase/LOG b/Парсер_IKEA/playwright_profile/Default/BudgetDatabase/LOG
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Cache/Cache_Data/52dc335c54bad61e_0 b/Парсер_IKEA/playwright_profile/Default/Cache/Cache_Data/52dc335c54bad61e_0
deleted file mode 100644
index 381a430..0000000
Binary files a/Парсер_IKEA/playwright_profile/Default/Cache/Cache_Data/52dc335c54bad61e_0 and /dev/null differ
diff --git a/Парсер_IKEA/playwright_profile/Default/Cache/Cache_Data/7db87492dde7e2f7_0 b/Парсер_IKEA/playwright_profile/Default/Cache/Cache_Data/7db87492dde7e2f7_0
deleted file mode 100644
index a848a81..0000000
Binary files a/Парсер_IKEA/playwright_profile/Default/Cache/Cache_Data/7db87492dde7e2f7_0 and /dev/null differ
diff --git a/Парсер_IKEA/playwright_profile/Default/Cache/Cache_Data/index-dir/the-real-index b/Парсер_IKEA/playwright_profile/Default/Cache/Cache_Data/index-dir/the-real-index
index 413c70e..258feb3 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/Cache/Cache_Data/index-dir/the-real-index and b/Парсер_IKEA/playwright_profile/Default/Cache/Cache_Data/index-dir/the-real-index differ
diff --git a/Парсер_IKEA/playwright_profile/Default/ClientCertificates/LOG.old b/Парсер_IKEA/playwright_profile/Default/ClientCertificates/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Cookies b/Парсер_IKEA/playwright_profile/Default/Cookies
index 24a4478..dfc5925 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/Cookies and b/Парсер_IKEA/playwright_profile/Default/Cookies differ
diff --git a/Парсер_IKEA/playwright_profile/Default/DIPS b/Парсер_IKEA/playwright_profile/Default/DIPS
new file mode 100644
index 0000000..ca990a9
Binary files /dev/null and b/Парсер_IKEA/playwright_profile/Default/DIPS differ
diff --git a/Парсер_IKEA/playwright_profile/Default/DawnGraphiteCache/data_1 b/Парсер_IKEA/playwright_profile/Default/DawnGraphiteCache/data_1
index e2cdc77..a4f3cc8 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/DawnGraphiteCache/data_1 and b/Парсер_IKEA/playwright_profile/Default/DawnGraphiteCache/data_1 differ
diff --git a/Парсер_IKEA/playwright_profile/Default/DawnGraphiteCache/index b/Парсер_IKEA/playwright_profile/Default/DawnGraphiteCache/index
index 5a09c84..1942013 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/DawnGraphiteCache/index and b/Парсер_IKEA/playwright_profile/Default/DawnGraphiteCache/index differ
diff --git a/Парсер_IKEA/playwright_profile/Default/DawnWebGPUCache/data_1 b/Парсер_IKEA/playwright_profile/Default/DawnWebGPUCache/data_1
index 47890b6..c697416 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/DawnWebGPUCache/data_1 and b/Парсер_IKEA/playwright_profile/Default/DawnWebGPUCache/data_1 differ
diff --git a/Парсер_IKEA/playwright_profile/Default/DawnWebGPUCache/index b/Парсер_IKEA/playwright_profile/Default/DawnWebGPUCache/index
index 81a9d44..f455263 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/DawnWebGPUCache/index and b/Парсер_IKEA/playwright_profile/Default/DawnWebGPUCache/index differ
diff --git a/Парсер_IKEA/playwright_profile/Default/Download Service/EntryDB/LOCK b/Парсер_IKEA/playwright_profile/Default/Download Service/EntryDB/LOCK
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Download Service/EntryDB/LOG b/Парсер_IKEA/playwright_profile/Default/Download Service/EntryDB/LOG
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Extension State/LOG b/Парсер_IKEA/playwright_profile/Default/Extension State/LOG
index 8d1ca1a..37ef0e4 100644
--- a/Парсер_IKEA/playwright_profile/Default/Extension State/LOG
+++ b/Парсер_IKEA/playwright_profile/Default/Extension State/LOG
@@ -1,2 +1,3 @@
-2025/08/25-19:49:38.245 2835af5 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Extension State since it was missing.
-2025/08/25-19:49:38.250 2835af5 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Extension State/MANIFEST-000001
+2025/08/25-20:05:08.149 284098d Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Extension State/MANIFEST-000001
+2025/08/25-20:05:08.152 284098d Recovering log #3
+2025/08/25-20:05:08.153 284098d Reusing old log /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Extension State/000003.log
diff --git a/Парсер_IKEA/playwright_profile/Default/Extension State/LOG.old b/Парсер_IKEA/playwright_profile/Default/Extension State/LOG.old
new file mode 100644
index 0000000..8d1ca1a
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/Extension State/LOG.old
@@ -0,0 +1,2 @@
+2025/08/25-19:49:38.245 2835af5 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Extension State since it was missing.
+2025/08/25-19:49:38.250 2835af5 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Extension State/MANIFEST-000001
diff --git a/Парсер_IKEA/playwright_profile/Default/Feature Engagement Tracker/AvailabilityDB/LOCK b/Парсер_IKEA/playwright_profile/Default/Feature Engagement Tracker/AvailabilityDB/LOCK
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Feature Engagement Tracker/AvailabilityDB/LOG b/Парсер_IKEA/playwright_profile/Default/Feature Engagement Tracker/AvailabilityDB/LOG
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Feature Engagement Tracker/EventDB/LOCK b/Парсер_IKEA/playwright_profile/Default/Feature Engagement Tracker/EventDB/LOCK
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Feature Engagement Tracker/EventDB/LOG b/Парсер_IKEA/playwright_profile/Default/Feature Engagement Tracker/EventDB/LOG
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/GCM Store/000003.log b/Парсер_IKEA/playwright_profile/Default/GCM Store/000003.log
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/GCM Store/CURRENT b/Парсер_IKEA/playwright_profile/Default/GCM Store/CURRENT
new file mode 100644
index 0000000..7ed683d
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/GCM Store/CURRENT
@@ -0,0 +1 @@
+MANIFEST-000001
diff --git a/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/000003.log b/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/000003.log
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/CURRENT b/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/CURRENT
new file mode 100644
index 0000000..7ed683d
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/CURRENT
@@ -0,0 +1 @@
+MANIFEST-000001
diff --git a/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/LOCK b/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/LOCK
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/LOG b/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/LOG
new file mode 100644
index 0000000..54262fc
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/LOG
@@ -0,0 +1,2 @@
+2025/08/25-20:05:16.180 2840990 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption since it was missing.
+2025/08/25-20:05:16.209 2840990 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/MANIFEST-000001
diff --git a/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/MANIFEST-000001 b/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/MANIFEST-000001
new file mode 100644
index 0000000..18e5cab
Binary files /dev/null and b/Парсер_IKEA/playwright_profile/Default/GCM Store/Encryption/MANIFEST-000001 differ
diff --git a/Парсер_IKEA/playwright_profile/Default/GCM Store/LOCK b/Парсер_IKEA/playwright_profile/Default/GCM Store/LOCK
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/GCM Store/LOG b/Парсер_IKEA/playwright_profile/Default/GCM Store/LOG
new file mode 100644
index 0000000..a23aad9
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/GCM Store/LOG
@@ -0,0 +1,2 @@
+2025/08/25-20:05:16.156 2840990 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/GCM Store since it was missing.
+2025/08/25-20:05:16.178 2840990 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/GCM Store/MANIFEST-000001
diff --git a/Парсер_IKEA/playwright_profile/Default/GCM Store/MANIFEST-000001 b/Парсер_IKEA/playwright_profile/Default/GCM Store/MANIFEST-000001
new file mode 100644
index 0000000..18e5cab
Binary files /dev/null and b/Парсер_IKEA/playwright_profile/Default/GCM Store/MANIFEST-000001 differ
diff --git a/Парсер_IKEA/playwright_profile/Default/GPUCache/data_1 b/Парсер_IKEA/playwright_profile/Default/GPUCache/data_1
index 55700d8..c03f2d3 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/GPUCache/data_1 and b/Парсер_IKEA/playwright_profile/Default/GPUCache/data_1 differ
diff --git a/Парсер_IKEA/playwright_profile/Default/GPUCache/index b/Парсер_IKEA/playwright_profile/Default/GPUCache/index
index f4072a3..9c778b4 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/GPUCache/index and b/Парсер_IKEA/playwright_profile/Default/GPUCache/index differ
diff --git a/Парсер_IKEA/playwright_profile/Default/History b/Парсер_IKEA/playwright_profile/Default/History
index c80206b..0076b9e 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/History and b/Парсер_IKEA/playwright_profile/Default/History differ
diff --git a/Парсер_IKEA/playwright_profile/Default/LOG.old b/Парсер_IKEA/playwright_profile/Default/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/000003.log b/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/000003.log
index 37ea3f1..7af6124 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/000003.log and b/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/000003.log differ
diff --git a/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/LOG b/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/LOG
index cbea199..9ece08f 100644
--- a/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/LOG
+++ b/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/LOG
@@ -1,2 +1,3 @@
-2025/08/25-19:49:36.822 2835c4a Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb since it was missing.
-2025/08/25-19:49:36.832 2835c4a Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/MANIFEST-000001
+2025/08/25-20:05:06.460 2840a8a Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/MANIFEST-000001
+2025/08/25-20:05:06.466 2840a8a Recovering log #3
+2025/08/25-20:05:06.467 2840a8a Reusing old log /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/000003.log
diff --git a/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/LOG.old b/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/LOG.old
new file mode 100644
index 0000000..cbea199
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/LOG.old
@@ -0,0 +1,2 @@
+2025/08/25-19:49:36.822 2835c4a Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb since it was missing.
+2025/08/25-19:49:36.832 2835c4a Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Local Storage/leveldb/MANIFEST-000001
diff --git a/Парсер_IKEA/playwright_profile/Default/Network Action Predictor b/Парсер_IKEA/playwright_profile/Default/Network Action Predictor
new file mode 100644
index 0000000..8b59e97
Binary files /dev/null and b/Парсер_IKEA/playwright_profile/Default/Network Action Predictor differ
diff --git a/Парсер_IKEA/playwright_profile/Default/Network Action Predictor-journal b/Парсер_IKEA/playwright_profile/Default/Network Action Predictor-journal
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Network Persistent State b/Парсер_IKEA/playwright_profile/Default/Network Persistent State
index ae192c6..0dfe27a 100644
--- a/Парсер_IKEA/playwright_profile/Default/Network Persistent State
+++ b/Парсер_IKEA/playwright_profile/Default/Network Persistent State
@@ -1 +1 @@
-{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13403206180051278","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"server":"https://accounts.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13403206187281607","port":443,"protocol_str":"quic"}],"anonymization":["MAAAACsAAABodHRwczovL29wdGltaXphdGlvbmd1aWRlLXBhLmdvb2dsZWFwaXMuY29tAA==",false,0],"server":"https://optimizationguide-pa.googleapis.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13403206214960281","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://content-autofill.googleapis.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://privacyportal-eu.onetrust.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://csp-reporting.cloudflare.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":80122},"server":"https://www.google.com"},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://api.ingka.ikea.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://geolocation.onetrust.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://cdn.cookielaw.org","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://accounts.ikea.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://web-api.ikea.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://www.ikea.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13400700680535773","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"network_stats":{"srtt":65155},"server":"https://api.salesitem.ingka.com"}],"supports_quic":{"address":"10.8.1.3","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G"}}}
\ No newline at end of file
+{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13403206214960281","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://content-autofill.googleapis.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://privacyportal-eu.onetrust.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://csp-reporting.cloudflare.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":80122},"server":"https://www.google.com"},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://api.ingka.ikea.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://geolocation.onetrust.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://cdn.cookielaw.org","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://accounts.ikea.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://web-api.ikea.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13400700680535773","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"network_stats":{"srtt":65155},"server":"https://api.salesitem.ingka.com"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13403206187281607","port":443,"protocol_str":"quic"}],"anonymization":["MAAAACsAAABodHRwczovL29wdGltaXphdGlvbmd1aWRlLXBhLmdvb2dsZWFwaXMuY29tAA==",false,0],"server":"https://optimizationguide-pa.googleapis.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwczovL2lrZWEuY29t",false,0],"server":"https://www.ikea.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13403206180051278","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"server":"https://accounts.google.com","supports_spdy":true}],"supports_quic":{"address":"10.8.1.3","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G"}}}
\ No newline at end of file
diff --git a/Парсер_IKEA/playwright_profile/Default/PersistentOriginTrials/LOG.old b/Парсер_IKEA/playwright_profile/Default/PersistentOriginTrials/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Preferences b/Парсер_IKEA/playwright_profile/Default/Preferences
index 513bc7a..69e242a 100644
--- a/Парсер_IKEA/playwright_profile/Default/Preferences
+++ b/Парсер_IKEA/playwright_profile/Default/Preferences
@@ -1 +1 @@
-{"accessibility":{"captions":{"headless_caption_enabled":false,"live_caption_language":"ru-RU"}},"account_tracker_service_last_update":"13400614178160075","ack_existing_ntp_extensions":true,"alternate_error_pages":{"backup":true},"apps":{"shortcuts_arch":"arm64","shortcuts_version":7},"autocomplete":{"retention_policy_last_version":139},"autofill":{"last_version_deduped":139},"bookmark":{"storage_computation_last_update":"13400614178155243"},"browser":{"window_placement":{"bottom":1037,"left":22,"maximized":false,"right":1390,"top":47,"work_area_bottom":2089,"work_area_left":0,"work_area_right":3840,"work_area_top":25}},"commerce_daily_metrics_last_update_time":"13400614178162269","countryid_at_install":16985,"default_search_provider":{"guid":""},"domain_diversity":{"last_reporting_timestamp":"13400614178160985"},"enterprise_profile_guid":"e78731f4-f56f-4d2f-86b1-4ab086d26cfa","extensions":{"alerts":{"initialized":true},"chrome_url_overrides":{},"last_chrome_version":"139.0.7258.139"},"gaia_cookie":{"changed_time":1756140580.061514,"hash":"2jmj7l5rSw0yVb/vlWAYkK/YBwk=","last_list_accounts_binary_data":"","periodic_report_time_2":"13400614176678735"},"gcm":{"product_category_for_subtypes":"com.chrome.macosx"},"google":{"services":{"signin_scoped_device_id":"2af4fedf-6d9c-438b-aa67-88366fb46df8"}},"https_upgrade_navigations":{"2025-08-25":20},"intl":{"selected_languages":"ru-RU,ru,en-US,en"},"invalidation":{"per_sender_topics_to_handler":{"1013309121859":{}}},"media":{"engagement":{"schema_version":5}},"migrated_user_scripts_toggle":true,"ntp":{"num_personal_suggestions":2},"optimization_guide":{"predictionmodelfetcher":{"last_fetch_attempt":"13400614186677355","last_fetch_success":"13400614187283923"},"previously_registered_optimization_types":{"ABOUT_THIS_SITE":true,"DIGITAL_CREDENTIALS_LOW_FRICTION":true,"LOADING_PREDICTOR":true,"MERCHANT_TRUST_SIGNALS_V2":true,"PRICE_TRACKING":true,"SAVED_TAB_GROUP":true,"V8_COMPILE_HINTS":true}},"password_manager":{"account_store_migrated_to_os_crypt_async":true,"autofillable_credentials_account_store_login_database":false,"autofillable_credentials_profile_store_login_database":false,"profile_store_migrated_to_os_crypt_async":true},"privacy_sandbox":{"first_party_sets_data_access_allowed_initialized":true},"profile":{"avatar_index":26,"background_password_check":{"check_fri_weight":9,"check_interval":"2592000000000","check_mon_weight":6,"check_sat_weight":6,"check_sun_weight":6,"check_thu_weight":9,"check_tue_weight":9,"check_wed_weight":9,"next_check_time":"13401833613968353"},"content_settings":{"exceptions":{"3pcd_heuristics_grants":{},"3pcd_support":{},"abusive_notification_permissions":{},"access_to_get_all_screens_media_in_session":{},"anti_abuse":{},"app_banner":{},"ar":{},"are_suspicious_notifications_allowlisted_by_user":{},"auto_picture_in_picture":{},"auto_select_certificate":{},"automatic_downloads":{},"automatic_fullscreen":{},"autoplay":{},"background_sync":{},"bluetooth_chooser_data":{},"bluetooth_guard":{},"bluetooth_scanning":{},"camera_pan_tilt_zoom":{},"captured_surface_control":{},"client_hints":{},"clipboard":{},"controlled_frame":{},"cookie_controls_metadata":{"https://[*.]ikea.com,*":{"last_modified":"13400614278965793","setting":{}}},"cookies":{},"direct_sockets":{},"direct_sockets_private_network_access":{},"display_media_system_audio":{},"disruptive_notification_permissions":{},"durable_storage":{},"fedcm_idp_registration":{},"fedcm_idp_signin":{"https://accounts.google.com:443,*":{"last_modified":"13400614180066366","setting":{"chosen-objects":[{"idp-origin":"https://accounts.google.com","idp-signin-status":false}]}}},"fedcm_share":{},"file_system_access_chooser_data":{},"file_system_access_extended_permission":{},"file_system_access_restore_permission":{},"file_system_last_picked_directory":{},"file_system_read_guard":{},"file_system_write_guard":{},"formfill_metadata":{},"geolocation":{},"hand_tracking":{},"hid_chooser_data":{},"hid_guard":{},"http_allowed":{},"https_enforced":{},"idle_detection":{},"images":{},"important_site_info":{},"initialized_translations":{},"intent_picker_auto_display":{},"javascript":{},"javascript_jit":{},"javascript_optimizer":{},"keyboard_lock":{},"legacy_cookie_access":{},"legacy_cookie_scope":{},"local_fonts":{},"local_network_access":{},"media_engagement":{"https://www.ikea.com:443,*":{"expiration":"13408390283405470","last_modified":"13400614283405806","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}}},"media_stream_camera":{},"media_stream_mic":{},"midi_sysex":{},"mixed_script":{},"nfc_devices":{},"notification_interactions":{},"notification_permission_review":{},"notifications":{},"ondevice_languages_downloaded":{},"password_protection":{},"payment_handler":{},"permission_autoblocking_data":{},"permission_autorevocation_data":{},"pointer_lock":{},"popups":{},"private_network_chooser_data":{},"private_network_guard":{},"protocol_handler":{},"reduced_accept_language":{},"safe_browsing_url_check_data":{},"sensors":{},"serial_chooser_data":{},"serial_guard":{},"site_engagement":{"https://www.ikea.com:443,*":{"last_modified":"13400614278966879","setting":{"lastEngagementTime":1.3400614278966866e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":15.0,"rawScore":15.0}}},"sound":{},"speaker_selection":{},"ssl_cert_decisions":{},"storage_access":{},"storage_access_header_origin_trial":{},"subresource_filter":{},"subresource_filter_data":{},"suspicious_notification_ids":{},"third_party_storage_partitioning":{},"top_level_3pcd_origin_trial":{},"top_level_3pcd_support":{},"top_level_storage_access":{},"tracking_protection":{},"unused_site_permissions":{},"usb_chooser_data":{},"usb_guard":{},"vr":{},"web_app_installation":{},"webid_api":{},"webid_auto_reauthn":{},"window_placement":{}},"pref_version":1},"created_by_version":"139.0.7258.139","creation_time":"13400614176481313","exit_type":"Normal","family_member_role":"not_in_family","isolated_web_app":{"install":{"pending_initialization_count":0}},"last_engagement_time":"13400614278966866","last_time_obsolete_http_credentials_removed":1756140636.693519,"last_time_password_store_metrics_reported":1756140606.694669,"managed":{"locally_parent_approved_extensions":{},"locally_parent_approved_extensions_migration_state":1},"managed_user_id":"","name":"Настройки Chrome","password_hash_data_list":[],"were_old_google_logins_removed":true},"safebrowsing":{"event_timestamps":{},"hash_real_time_ohttp_expiration_time":"13400873380059929","hash_real_time_ohttp_key":"2AAgETtEl5cjzDpksr9J2MiGvUsUaS87sxbZ6vEn9Mxqv18ABAABAAI=","metrics_last_log_time":"13400614176","scout_reporting_enabled_when_deprecated":false},"safety_hub":{"unused_site_permissions_revocation":{"migration_completed":true}},"saved_tab_groups":{"did_enable_shared_tab_groups_in_last_session":false,"specifics_to_data_migration":true},"segmentation_platform":{"client_result_prefs":"ClIKDXNob3BwaW5nX3VzZXISQQo2DQAAAAAQ9PSogZr55hcaJAocChoNAAAAPxIMU2hvcHBpbmdVc2VyGgVPdGhlchIEEAIYBCADEJKFqYGa+eYX","device_switcher_util":{"result":{"labels":["NotSynced"]}},"last_db_compaction_time":"13400467199000000","uma_in_sql_start_time":"13400614176784391"},"sessions":{"event_log":[{"crashed":false,"time":"13400614176695061","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":2,"time":"13400614283383170","type":2,"window_count":1}],"session_data_status":5},"settings":{"force_google_safesearch":false},"signin":{"allowed":true,"cookie_clear_on_exit_migration_notice_complete":true},"site_search_settings":{"overridden_keywords":[]},"spellcheck":{"dictionaries":["ru"]},"sync":{"data_type_status_for_sync_to_signin":{"app_list":false,"app_settings":false,"apps":false,"arc_package":false,"autofill":false,"autofill_profiles":false,"autofill_valuable":false,"autofill_wallet":false,"autofill_wallet_credential":false,"autofill_wallet_metadata":false,"autofill_wallet_offer":false,"autofill_wallet_usage":false,"bookmarks":false,"collaboration_group":false,"contact_info":false,"cookies":false,"device_info":false,"dictionary":false,"extension_settings":false,"extensions":false,"history":false,"history_delete_directives":false,"incoming_password_sharing_invitation":false,"managed_user_settings":false,"nigori":false,"os_preferences":false,"os_priority_preferences":false,"outgoing_password_sharing_invitation":false,"passwords":false,"plus_address":false,"plus_address_setting":false,"power_bookmark":false,"preferences":false,"printers":false,"printers_authorization_servers":false,"priority_preferences":false,"product_comparison":false,"reading_list":false,"saved_tab_group":false,"search_engines":false,"security_events":false,"send_tab_to_self":false,"sessions":false,"shared_tab_group_account_data":false,"shared_tab_group_data":false,"sharing_message":false,"themes":false,"user_consent":false,"user_events":false,"web_apps":false,"webapks":false,"webauthn_credential":false,"wifi_configurations":false,"workspace_desk":false},"encryption_bootstrap_token_per_account_migration_done":true,"feature_status_for_sync_to_signin":5,"passwords_per_account_pref_migration_done":true},"syncing_theme_prefs_migrated_to_non_syncing":true,"toolbar":{"pinned_cast_migration_complete":true,"pinned_chrome_labs_migration_complete":true},"translate_ignored_count_for_language":{"pl":1},"translate_site_blacklist":[],"translate_site_blocklist_with_time":{}}
\ No newline at end of file
+{"accessibility":{"captions":{"headless_caption_enabled":false,"live_caption_language":"ru-RU"}},"account_tracker_service_last_update":"13400614178160075","ack_existing_ntp_extensions":true,"alternate_error_pages":{"backup":true},"apps":{"shortcuts_arch":"arm64","shortcuts_version":7},"autocomplete":{"retention_policy_last_version":139},"autofill":{"last_version_deduped":139},"bookmark":{"storage_computation_last_update":"13400614178155243"},"browser":{"window_placement":{"bottom":1037,"left":22,"maximized":false,"right":1390,"top":47,"work_area_bottom":2089,"work_area_left":0,"work_area_right":3840,"work_area_top":25}},"commerce_daily_metrics_last_update_time":"13400614178162269","countryid_at_install":16985,"default_search_provider":{"guid":""},"domain_diversity":{"last_reporting_timestamp":"13400614178160985"},"enterprise_profile_guid":"e78731f4-f56f-4d2f-86b1-4ab086d26cfa","extensions":{"alerts":{"initialized":true},"chrome_url_overrides":{},"last_chrome_version":"139.0.7258.139"},"gaia_cookie":{"changed_time":1756140580.061514,"hash":"2jmj7l5rSw0yVb/vlWAYkK/YBwk=","last_list_accounts_binary_data":"","periodic_report_time_2":"13400614176678735"},"gcm":{"product_category_for_subtypes":"com.chrome.macosx"},"google":{"services":{"signin_scoped_device_id":"bcb4e3b1-121d-4263-bfa4-10d247db8dff"}},"https_upgrade_navigations":{"2025-08-25":20},"intl":{"selected_languages":"ru-RU,ru,en-US,en"},"invalidation":{"per_sender_topics_to_handler":{"1013309121859":{}}},"media":{"engagement":{"schema_version":5}},"migrated_user_scripts_toggle":true,"ntp":{"num_personal_suggestions":8},"optimization_guide":{"predictionmodelfetcher":{"last_fetch_attempt":"13400615116357463","last_fetch_success":"13400614187283923"},"previously_registered_optimization_types":{"ABOUT_THIS_SITE":true,"DIGITAL_CREDENTIALS_LOW_FRICTION":true,"LOADING_PREDICTOR":true,"MERCHANT_TRUST_SIGNALS_V2":true,"PRICE_TRACKING":true,"SAVED_TAB_GROUP":true,"V8_COMPILE_HINTS":true}},"password_manager":{"account_store_migrated_to_os_crypt_async":true,"autofillable_credentials_account_store_login_database":false,"autofillable_credentials_profile_store_login_database":false,"profile_store_migrated_to_os_crypt_async":true},"privacy_sandbox":{"first_party_sets_data_access_allowed_initialized":true},"profile":{"avatar_index":26,"background_password_check":{"check_fri_weight":9,"check_interval":"2592000000000","check_mon_weight":6,"check_sat_weight":6,"check_sun_weight":6,"check_thu_weight":9,"check_tue_weight":9,"check_wed_weight":9,"next_check_time":"13401833613968353"},"content_settings":{"exceptions":{"3pcd_heuristics_grants":{},"3pcd_support":{},"abusive_notification_permissions":{},"access_to_get_all_screens_media_in_session":{},"anti_abuse":{},"app_banner":{},"ar":{},"are_suspicious_notifications_allowlisted_by_user":{},"auto_picture_in_picture":{},"auto_select_certificate":{},"automatic_downloads":{},"automatic_fullscreen":{},"autoplay":{},"background_sync":{},"bluetooth_chooser_data":{},"bluetooth_guard":{},"bluetooth_scanning":{},"camera_pan_tilt_zoom":{},"captured_surface_control":{},"client_hints":{},"clipboard":{},"controlled_frame":{},"cookie_controls_metadata":{"https://[*.]ikea.com,*":{"last_modified":"13400615175065405","setting":{}}},"cookies":{},"direct_sockets":{},"direct_sockets_private_network_access":{},"display_media_system_audio":{},"disruptive_notification_permissions":{},"durable_storage":{},"fedcm_idp_registration":{},"fedcm_idp_signin":{"https://accounts.google.com:443,*":{"last_modified":"13400614180066366","setting":{"chosen-objects":[{"idp-origin":"https://accounts.google.com","idp-signin-status":false}]}}},"fedcm_share":{},"file_system_access_chooser_data":{},"file_system_access_extended_permission":{},"file_system_access_restore_permission":{},"file_system_last_picked_directory":{},"file_system_read_guard":{},"file_system_write_guard":{},"formfill_metadata":{},"geolocation":{},"hand_tracking":{},"hid_chooser_data":{},"hid_guard":{},"http_allowed":{},"https_enforced":{},"idle_detection":{},"images":{},"important_site_info":{},"initialized_translations":{},"intent_picker_auto_display":{},"javascript":{},"javascript_jit":{},"javascript_optimizer":{},"keyboard_lock":{},"legacy_cookie_access":{},"legacy_cookie_scope":{},"local_fonts":{},"local_network_access":{},"media_engagement":{"https://www.ikea.com:443,*":{"expiration":"13408390283405470","last_modified":"13400614283405806","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}}},"media_stream_camera":{},"media_stream_mic":{},"midi_sysex":{},"mixed_script":{},"nfc_devices":{},"notification_interactions":{},"notification_permission_review":{},"notifications":{},"ondevice_languages_downloaded":{},"password_protection":{},"payment_handler":{},"permission_autoblocking_data":{},"permission_autorevocation_data":{},"pointer_lock":{},"popups":{},"private_network_chooser_data":{},"private_network_guard":{},"protocol_handler":{},"reduced_accept_language":{},"safe_browsing_url_check_data":{},"sensors":{},"serial_chooser_data":{},"serial_guard":{},"site_engagement":{"https://www.ikea.com:443,*":{"last_modified":"13400614278966879","setting":{"lastEngagementTime":1.3400614278966866e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":15.0,"rawScore":15.0}}},"sound":{},"speaker_selection":{},"ssl_cert_decisions":{},"storage_access":{},"storage_access_header_origin_trial":{},"subresource_filter":{},"subresource_filter_data":{},"suspicious_notification_ids":{},"third_party_storage_partitioning":{},"top_level_3pcd_origin_trial":{},"top_level_3pcd_support":{},"top_level_storage_access":{},"tracking_protection":{},"unused_site_permissions":{},"usb_chooser_data":{},"usb_guard":{},"vr":{},"web_app_installation":{},"webid_api":{},"webid_auto_reauthn":{},"window_placement":{}},"pref_version":1},"created_by_version":"139.0.7258.139","creation_time":"13400614176481313","exit_type":"Normal","family_member_role":"not_in_family","isolated_web_app":{"install":{"pending_initialization_count":0}},"last_engagement_time":"13400614278966866","last_time_obsolete_http_credentials_removed":1756140636.693519,"last_time_password_store_metrics_reported":1756140606.694669,"managed":{"locally_parent_approved_extensions":{},"locally_parent_approved_extensions_migration_state":1},"managed_user_id":"","name":"Настройки Chrome","password_hash_data_list":[],"were_old_google_logins_removed":true},"safebrowsing":{"event_timestamps":{},"hash_real_time_ohttp_expiration_time":"13400873380059929","hash_real_time_ohttp_key":"2AAgETtEl5cjzDpksr9J2MiGvUsUaS87sxbZ6vEn9Mxqv18ABAABAAI=","metrics_last_log_time":"13400614176","scout_reporting_enabled_when_deprecated":false},"safety_hub":{"unused_site_permissions_revocation":{"migration_completed":true}},"saved_tab_groups":{"did_enable_shared_tab_groups_in_last_session":false,"specifics_to_data_migration":true},"segmentation_platform":{"client_result_prefs":"ClIKDXNob3BwaW5nX3VzZXISQQo2DQAAAAAQ9PSogZr55hcaJAocChoNAAAAPxIMU2hvcHBpbmdVc2VyGgVPdGhlchIEEAIYBCADEJKFqYGa+eYX","device_switcher_util":{"result":{"labels":["NotSynced"]}},"last_db_compaction_time":"13400467199000000","uma_in_sql_start_time":"13400614176784391"},"sessions":{"event_log":[{"crashed":false,"time":"13400614176695061","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":2,"time":"13400614283383170","type":2,"window_count":1},{"crashed":false,"time":"13400615106391448","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":2,"time":"13400615184985160","type":2,"window_count":1}],"session_data_status":5},"settings":{"force_google_safesearch":false},"signin":{"allowed":true,"cookie_clear_on_exit_migration_notice_complete":true},"site_search_settings":{"overridden_keywords":[]},"spellcheck":{"dictionaries":["ru"]},"sync":{"data_type_status_for_sync_to_signin":{"app_list":false,"app_settings":false,"apps":false,"arc_package":false,"autofill":false,"autofill_profiles":false,"autofill_valuable":false,"autofill_wallet":false,"autofill_wallet_credential":false,"autofill_wallet_metadata":false,"autofill_wallet_offer":false,"autofill_wallet_usage":false,"bookmarks":false,"collaboration_group":false,"contact_info":false,"cookies":false,"device_info":false,"dictionary":false,"extension_settings":false,"extensions":false,"history":false,"history_delete_directives":false,"incoming_password_sharing_invitation":false,"managed_user_settings":false,"nigori":false,"os_preferences":false,"os_priority_preferences":false,"outgoing_password_sharing_invitation":false,"passwords":false,"plus_address":false,"plus_address_setting":false,"power_bookmark":false,"preferences":false,"printers":false,"printers_authorization_servers":false,"priority_preferences":false,"product_comparison":false,"reading_list":false,"saved_tab_group":false,"search_engines":false,"security_events":false,"send_tab_to_self":false,"sessions":false,"shared_tab_group_account_data":false,"shared_tab_group_data":false,"sharing_message":false,"themes":false,"user_consent":false,"user_events":false,"web_apps":false,"webapks":false,"webauthn_credential":false,"wifi_configurations":false,"workspace_desk":false},"encryption_bootstrap_token_per_account_migration_done":true,"feature_status_for_sync_to_signin":5,"passwords_per_account_pref_migration_done":true},"syncing_theme_prefs_migrated_to_non_syncing":true,"toolbar":{"pinned_cast_migration_complete":true,"pinned_chrome_labs_migration_complete":true},"translate_ignored_count_for_language":{"pl":1},"translate_site_blacklist":[],"translate_site_blocklist_with_time":{},"web_apps":{"did_migrate_default_chrome_apps":["MigrateDefaultChromeAppToWebAppsGSuite","MigrateDefaultChromeAppToWebAppsNonGSuite"],"last_preinstall_synchronize_version":"139"}}
\ No newline at end of file
diff --git a/Парсер_IKEA/playwright_profile/Default/PreferredApps b/Парсер_IKEA/playwright_profile/Default/PreferredApps
new file mode 100644
index 0000000..7d3a425
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/PreferredApps
@@ -0,0 +1 @@
+{"preferred_apps":[],"version":1}
\ No newline at end of file
diff --git a/Парсер_IKEA/playwright_profile/Default/Segmentation Platform/SegmentInfoDB/LOG.old b/Парсер_IKEA/playwright_profile/Default/Segmentation Platform/SegmentInfoDB/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Segmentation Platform/SignalDB/LOG.old b/Парсер_IKEA/playwright_profile/Default/Segmentation Platform/SignalDB/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Segmentation Platform/SignalStorageConfigDB/LOG.old b/Парсер_IKEA/playwright_profile/Default/Segmentation Platform/SignalStorageConfigDB/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Session Storage/000004.log b/Парсер_IKEA/playwright_profile/Default/Session Storage/000004.log
index b1e36d5..5ac84f8 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/Session Storage/000004.log and b/Парсер_IKEA/playwright_profile/Default/Session Storage/000004.log differ
diff --git a/Парсер_IKEA/playwright_profile/Default/Session Storage/LOG b/Парсер_IKEA/playwright_profile/Default/Session Storage/LOG
index 5e27d0f..e7f1ea4 100644
--- a/Парсер_IKEA/playwright_profile/Default/Session Storage/LOG
+++ b/Парсер_IKEA/playwright_profile/Default/Session Storage/LOG
@@ -1,5 +1,3 @@
-2025/08/25-19:49:37.345 2835c4a Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Session Storage since it was missing.
-2025/08/25-19:49:37.362 2835c4a Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Session Storage/MANIFEST-000001
-2025/08/25-19:51:23.422 2835c4d Level-0 table #5: started
-2025/08/25-19:51:23.428 2835c4d Level-0 table #5: 131697 bytes OK
-2025/08/25-19:51:23.433 2835c4d Delete type=0 #3
+2025/08/25-20:05:07.119 2840a8a Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Session Storage/MANIFEST-000001
+2025/08/25-20:05:07.120 2840a8a Recovering log #4
+2025/08/25-20:05:07.120 2840a8a Reusing old log /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Session Storage/000004.log
diff --git a/Парсер_IKEA/playwright_profile/Default/Session Storage/LOG.old b/Парсер_IKEA/playwright_profile/Default/Session Storage/LOG.old
new file mode 100644
index 0000000..5e27d0f
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/Session Storage/LOG.old
@@ -0,0 +1,5 @@
+2025/08/25-19:49:37.345 2835c4a Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Session Storage since it was missing.
+2025/08/25-19:49:37.362 2835c4a Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Session Storage/MANIFEST-000001
+2025/08/25-19:51:23.422 2835c4d Level-0 table #5: started
+2025/08/25-19:51:23.428 2835c4d Level-0 table #5: 131697 bytes OK
+2025/08/25-19:51:23.433 2835c4d Delete type=0 #3
diff --git a/Парсер_IKEA/playwright_profile/Default/Sessions/Session_13400615108895644 b/Парсер_IKEA/playwright_profile/Default/Sessions/Session_13400615108895644
new file mode 100644
index 0000000..33deb2c
Binary files /dev/null and b/Парсер_IKEA/playwright_profile/Default/Sessions/Session_13400615108895644 differ
diff --git a/Парсер_IKEA/playwright_profile/Default/Sessions/Tabs_13400615110521165 b/Парсер_IKEA/playwright_profile/Default/Sessions/Tabs_13400615110521165
new file mode 100644
index 0000000..4fa6ffc
Binary files /dev/null and b/Парсер_IKEA/playwright_profile/Default/Sessions/Tabs_13400615110521165 differ
diff --git a/Парсер_IKEA/playwright_profile/Default/Shortcuts b/Парсер_IKEA/playwright_profile/Default/Shortcuts
new file mode 100644
index 0000000..8e5a7db
Binary files /dev/null and b/Парсер_IKEA/playwright_profile/Default/Shortcuts differ
diff --git a/Парсер_IKEA/playwright_profile/Default/Shortcuts-journal b/Парсер_IKEA/playwright_profile/Default/Shortcuts-journal
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/LOG b/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/LOG
index b9fc462..21a6b3d 100644
--- a/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/LOG
+++ b/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/LOG
@@ -1,2 +1,3 @@
-2025/08/25-19:49:36.677 2835bc1 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database since it was missing.
-2025/08/25-19:49:36.710 2835bc1 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/MANIFEST-000001
+2025/08/25-20:05:06.360 2840a25 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/MANIFEST-000001
+2025/08/25-20:05:06.367 2840a25 Recovering log #3
+2025/08/25-20:05:06.368 2840a25 Reusing old log /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/000003.log
diff --git a/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/LOG.old b/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/LOG.old
new file mode 100644
index 0000000..b9fc462
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/LOG.old
@@ -0,0 +1,2 @@
+2025/08/25-19:49:36.677 2835bc1 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database since it was missing.
+2025/08/25-19:49:36.710 2835bc1 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Site Characteristics Database/MANIFEST-000001
diff --git a/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/LOG b/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/LOG
index 0d10d0f..9d6dfa3 100644
--- a/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/LOG
+++ b/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/LOG
@@ -1,2 +1,3 @@
-2025/08/25-19:49:36.658 2835af5 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB since it was missing.
-2025/08/25-19:49:36.710 2835af5 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/MANIFEST-000001
+2025/08/25-20:05:06.326 284098d Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/MANIFEST-000001
+2025/08/25-20:05:06.367 284098d Recovering log #3
+2025/08/25-20:05:06.368 284098d Reusing old log /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/000003.log
diff --git a/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/LOG.old b/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/LOG.old
new file mode 100644
index 0000000..0d10d0f
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/LOG.old
@@ -0,0 +1,2 @@
+2025/08/25-19:49:36.658 2835af5 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB since it was missing.
+2025/08/25-19:49:36.710 2835af5 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/Sync Data/LevelDB/MANIFEST-000001
diff --git a/Парсер_IKEA/playwright_profile/Default/Top Sites b/Парсер_IKEA/playwright_profile/Default/Top Sites
index b66f268..c5015e4 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/Top Sites and b/Парсер_IKEA/playwright_profile/Default/Top Sites differ
diff --git a/Парсер_IKEA/playwright_profile/Default/Trust Tokens b/Парсер_IKEA/playwright_profile/Default/Trust Tokens
index c3dac60..0a976f1 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/Trust Tokens and b/Парсер_IKEA/playwright_profile/Default/Trust Tokens differ
diff --git a/Парсер_IKEA/playwright_profile/Default/chrome_cart_db/LOG.old b/Парсер_IKEA/playwright_profile/Default/chrome_cart_db/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/commerce_subscription_db/LOG.old b/Парсер_IKEA/playwright_profile/Default/commerce_subscription_db/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/discount_infos_db/LOG.old b/Парсер_IKEA/playwright_profile/Default/discount_infos_db/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/discounts_db/LOG.old b/Парсер_IKEA/playwright_profile/Default/discounts_db/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/heavy_ad_intervention_opt_out.db b/Парсер_IKEA/playwright_profile/Default/heavy_ad_intervention_opt_out.db
new file mode 100644
index 0000000..a4be6dc
Binary files /dev/null and b/Парсер_IKEA/playwright_profile/Default/heavy_ad_intervention_opt_out.db differ
diff --git a/Парсер_IKEA/playwright_profile/Default/heavy_ad_intervention_opt_out.db-journal b/Парсер_IKEA/playwright_profile/Default/heavy_ad_intervention_opt_out.db-journal
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/optimization_guide_hint_cache_store/LOCK b/Парсер_IKEA/playwright_profile/Default/optimization_guide_hint_cache_store/LOCK
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/optimization_guide_hint_cache_store/LOG b/Парсер_IKEA/playwright_profile/Default/optimization_guide_hint_cache_store/LOG
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/parcel_tracking_db/LOG.old b/Парсер_IKEA/playwright_profile/Default/parcel_tracking_db/LOG.old
new file mode 100644
index 0000000..e69de29
diff --git a/Парсер_IKEA/playwright_profile/Default/shared_proto_db/000003.log b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/000003.log
index eab0bc5..6a9695c 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/shared_proto_db/000003.log and b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/000003.log differ
diff --git a/Парсер_IKEA/playwright_profile/Default/shared_proto_db/LOG b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/LOG
index 1015cdb..d0421f9 100644
--- a/Парсер_IKEA/playwright_profile/Default/shared_proto_db/LOG
+++ b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/LOG
@@ -1,2 +1,3 @@
-2025/08/25-19:49:38.161 2835af5 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db since it was missing.
-2025/08/25-19:49:38.164 2835af5 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db/MANIFEST-000001
+2025/08/25-20:05:07.984 284098d Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db/MANIFEST-000001
+2025/08/25-20:05:07.985 284098d Recovering log #3
+2025/08/25-20:05:07.985 284098d Reusing old log /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db/000003.log
diff --git a/Парсер_IKEA/playwright_profile/Default/shared_proto_db/LOG.old b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/LOG.old
new file mode 100644
index 0000000..1015cdb
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/LOG.old
@@ -0,0 +1,2 @@
+2025/08/25-19:49:38.161 2835af5 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db since it was missing.
+2025/08/25-19:49:38.164 2835af5 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db/MANIFEST-000001
diff --git a/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/000003.log b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/000003.log
index a1a9583..e715cf4 100644
Binary files a/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/000003.log and b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/000003.log differ
diff --git a/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/LOG b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/LOG
index e3ca163..0adfce2 100644
--- a/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/LOG
+++ b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/LOG
@@ -1,2 +1,3 @@
-2025/08/25-19:49:38.155 2835af5 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata since it was missing.
-2025/08/25-19:49:38.158 2835af5 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/MANIFEST-000001
+2025/08/25-20:05:07.979 284098d Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/MANIFEST-000001
+2025/08/25-20:05:07.979 284098d Recovering log #3
+2025/08/25-20:05:07.979 284098d Reusing old log /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/000003.log
diff --git a/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/LOG.old b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/LOG.old
new file mode 100644
index 0000000..e3ca163
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/LOG.old
@@ -0,0 +1,2 @@
+2025/08/25-19:49:38.155 2835af5 Creating DB /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata since it was missing.
+2025/08/25-19:49:38.158 2835af5 Reusing MANIFEST /Users/valis/MacOS_Parsers/Парсер_IKEA/playwright_profile/Default/shared_proto_db/metadata/MANIFEST-000001
diff --git a/Парсер_IKEA/playwright_profile/GrShaderCache/data_1 b/Парсер_IKEA/playwright_profile/GrShaderCache/data_1
index b5b4fb0..322f335 100644
Binary files a/Парсер_IKEA/playwright_profile/GrShaderCache/data_1 and b/Парсер_IKEA/playwright_profile/GrShaderCache/data_1 differ
diff --git a/Парсер_IKEA/playwright_profile/GrShaderCache/index b/Парсер_IKEA/playwright_profile/GrShaderCache/index
index fb89d43..f7077dc 100644
Binary files a/Парсер_IKEA/playwright_profile/GrShaderCache/index and b/Парсер_IKEA/playwright_profile/GrShaderCache/index differ
diff --git a/Парсер_IKEA/playwright_profile/GraphiteDawnCache/data_1 b/Парсер_IKEA/playwright_profile/GraphiteDawnCache/data_1
index 6aaae1b..fb6e224 100644
Binary files a/Парсер_IKEA/playwright_profile/GraphiteDawnCache/data_1 and b/Парсер_IKEA/playwright_profile/GraphiteDawnCache/data_1 differ
diff --git a/Парсер_IKEA/playwright_profile/GraphiteDawnCache/index b/Парсер_IKEA/playwright_profile/GraphiteDawnCache/index
index 3adab33..7d8798d 100644
Binary files a/Парсер_IKEA/playwright_profile/GraphiteDawnCache/index and b/Парсер_IKEA/playwright_profile/GraphiteDawnCache/index differ
diff --git a/Парсер_IKEA/playwright_profile/Local State b/Парсер_IKEA/playwright_profile/Local State
index dad78f5..6af1d90 100644
--- a/Парсер_IKEA/playwright_profile/Local State
+++ b/Парсер_IKEA/playwright_profile/Local State
@@ -1 +1 @@
-{"accessibility":{"captions":{"soda_registered_language_packs":["ru-RU"]}},"autofill":{"ablation_seed":"q5nR1xJxb+Y="},"breadcrumbs":{"enabled":false,"enabled_time":"13400614176476042"},"hardware_acceleration_mode_previous":true,"legacy":{"profile":{"name":{"migrated":true}}},"local":{"password_hash_data_list":[]},"management":{"platform":{"enterprise_mdm_mac":0}},"network_time":{"network_time_mapping":{"local":1.756140578854345e+12,"network":1.75614057884e+12,"ticks":565279615676.0,"uncertainty":10082294.0}},"optimization_guide":{"model_cache_key_mapping":{"15DC3E7836E4D434CA":"4F40902F3B6AE19A","20DC3E7836E4D434CA":"4F40902F3B6AE19A","25DC3E7836E4D434CA":"4F40902F3B6AE19A","26DC3E7836E4D434CA":"4F40902F3B6AE19A","2DC3E7836E4D434CA":"4F40902F3B6AE19A","45DC3E7836E4D434CA":"4F40902F3B6AE19A","9DC3E7836E4D434CA":"4F40902F3B6AE19A"},"model_execution":{"last_usage_by_feature":{}},"model_store_metadata":{},"on_device":{"last_version":"139.0.7258.139","model_crash_count":0}},"performance_intervention":{"last_daily_sample":"13400614177350141"},"policy":{"last_statistics_update":"13400614176455157"},"privacy_budget":{"meta_experiment_activation_salt":0.6655723031629135},"profile":{"info_cache":{"Default":{"active_time":1756140577.327447,"avatar_icon":"chrome://theme/IDR_PROFILE_AVATAR_26","background_apps":false,"default_avatar_fill_color":-2890755,"default_avatar_stroke_color":-16166200,"force_signin_profile_locked":false,"gaia_id":"","is_consented_primary_account":false,"is_ephemeral":false,"is_using_default_avatar":true,"is_using_default_name":true,"managed_user_id":"","metrics_bucket_index":1,"name":"Настройки Chrome","profile_color_seed":-16033840,"profile_highlight_color":-2890755,"signin.with_credential_provider":false,"user_name":""}},"last_active_profiles":["Default"],"metrics":{"next_bucket_index":2},"profile_counts_reported":"13400614176480733","profiles_order":["Default"]},"profile_network_context_service":{"http_cache_finch_experiment_groups":"None None None None"},"session_id_generator_last_value":"1620748284","signin":{"active_accounts_last_emitted":"13400614173288602"},"subresource_filter":{"ruleset_version":{"checksum":0,"content":"","format":0}},"tab_stats":{"discards_external":0,"discards_frozen":0,"discards_proactive":0,"discards_suggested":0,"discards_urgent":0,"last_daily_sample":"13400614176424553","max_tabs_per_window":2,"reloads_external":0,"reloads_frozen":0,"reloads_proactive":0,"reloads_suggested":0,"reloads_urgent":0,"total_tab_count_max":2,"window_count_max":1},"ukm":{"persisted_logs":[]},"uninstall_metrics":{"installation_date2":"1756140573"},"user_experience_metrics":{"client_id2":"ed68bd6e-168f-47c0-9816-8afdc0799ca3","client_id_timestamp":"1756140576","limited_entropy_randomization_source":"7B745D3CE9F5BFF97D8D44A0F7D5234D","log_record_id":1,"low_entropy_source3":236,"pseudo_low_entropy_source":5558,"session_id":0,"stability":{"browser_last_live_timestamp":"13400614283465600","exited_cleanly":true,"saved_system_profile":"CNeNjsUGEhExMzkuMC43MjU4LjEzOS02NBiAkbLFBiICcnUqEgoITWFjIE9TIFgSBjE1LjUuMDJgCgVhcm02NBCAgAEiDk1hY0Jvb2tQcm8xOCwzKAMwgDw44CFCCggAEAAaADIAOgBlAAAAQGoYCgxHZW51aW5lSW50ZWwQwI0IGAggACgCggEAigEAqgEGeDg2XzY0sAEBSgoNQZDythWAjX3KSgoNkrdXsxUwrvLcSgoNBQ7w9BWAjX3KUARaAGIER0dST2oICAAQADgAQACAAYCRssUGmAEA+AHsAYAC////////////AYgCAZICJGVkNjhiZDZlLTE2OGYtNDdjMC05ODE2LThhZmRjMDc5OWNhM6gCtiuyAogBZB450p7LUD034q1+xYgAKn7IsGwLj70v2MAtsf5bz4dGdDQ67motfyp+LMUZDNsJTLRUE0n9H/9UH43yymV+G2N3Hn15S6ppHgxGjeP7Ti5v2UFhTvrLmMhARP61EIfS1sYKphv1BfE5C92iJ0SDSS28C5tj623dU5++z0Lg4+uEi7j/TPMNXfECFl65KP9a0LQ=","saved_system_profile_hash":"2B86E3A3DE37EEB3DC79F2292D077F706E2083E3","stats_buildtime":"1755547351","stats_version":"139.0.7258.139-64"}},"variations_google_groups":{"Default":[]},"was":{"restarted":false}}
\ No newline at end of file
+{"accessibility":{"captions":{"soda_registered_language_packs":["ru-RU"]}},"autofill":{"ablation_seed":"q5nR1xJxb+Y="},"breadcrumbs":{"enabled":false,"enabled_time":"13400614176476042"},"hardware_acceleration_mode_previous":true,"legacy":{"profile":{"name":{"migrated":true}}},"local":{"password_hash_data_list":[]},"management":{"platform":{"enterprise_mdm_mac":0}},"network_time":{"network_time_mapping":{"local":1.756140578854345e+12,"network":1.75614057884e+12,"ticks":565279615676.0,"uncertainty":10082294.0}},"optimization_guide":{"model_cache_key_mapping":{"15DC3E7836E4D434CA":"4F40902F3B6AE19A","20DC3E7836E4D434CA":"4F40902F3B6AE19A","25DC3E7836E4D434CA":"4F40902F3B6AE19A","26DC3E7836E4D434CA":"4F40902F3B6AE19A","2DC3E7836E4D434CA":"4F40902F3B6AE19A","45DC3E7836E4D434CA":"4F40902F3B6AE19A","9DC3E7836E4D434CA":"4F40902F3B6AE19A"},"model_execution":{"last_usage_by_feature":{}},"model_store_metadata":{},"on_device":{"last_version":"139.0.7258.139","model_crash_count":0}},"performance_intervention":{"last_daily_sample":"13400614177350141"},"policy":{"last_statistics_update":"13400614176455157"},"privacy_budget":{"meta_experiment_activation_salt":0.6655723031629135},"profile":{"info_cache":{"Default":{"active_time":1756140577.327447,"avatar_icon":"chrome://theme/IDR_PROFILE_AVATAR_26","background_apps":false,"default_avatar_fill_color":-2890755,"default_avatar_stroke_color":-16166200,"enterprise_label":"","force_signin_profile_locked":false,"gaia_given_name":"","gaia_id":"","gaia_name":"","hosted_domain":"","is_consented_primary_account":false,"is_ephemeral":false,"is_glic_eligible":false,"is_managed":0,"is_using_default_avatar":true,"is_using_default_name":true,"managed_user_id":"","metrics_bucket_index":1,"name":"Настройки Chrome","profile_color_seed":-16033840,"profile_highlight_color":-2890755,"signin.with_credential_provider":false,"user_name":""}},"last_active_profiles":["Default"],"metrics":{"next_bucket_index":2},"profile_counts_reported":"13400614176480733","profiles_order":["Default"]},"profile_network_context_service":{"http_cache_finch_experiment_groups":"None None None None"},"session_id_generator_last_value":"1620748343","signin":{"active_accounts_last_emitted":"13400614173288602"},"subresource_filter":{"ruleset_version":{"checksum":0,"content":"","format":0}},"tab_stats":{"discards_external":0,"discards_frozen":0,"discards_proactive":0,"discards_suggested":0,"discards_urgent":0,"last_daily_sample":"13400614176424553","max_tabs_per_window":2,"reloads_external":0,"reloads_frozen":0,"reloads_proactive":0,"reloads_suggested":0,"reloads_urgent":0,"total_tab_count_max":2,"window_count_max":1},"ukm":{"persisted_logs":[]},"uninstall_metrics":{"installation_date2":"1756140573"},"user_experience_metrics":{"client_id2":"ed68bd6e-168f-47c0-9816-8afdc0799ca3","client_id_timestamp":"1756140576","limited_entropy_randomization_source":"7B745D3CE9F5BFF97D8D44A0F7D5234D","log_record_id":2,"low_entropy_source3":236,"machine_id":4006889,"pseudo_low_entropy_source":5558,"session_id":1,"stability":{"browser_last_live_timestamp":"13400615185062523","exited_cleanly":true,"saved_system_profile":"CNeNjsUGEhExMzkuMC43MjU4LjEzOS02NBiAkbLFBiICcnUqEgoITWFjIE9TIFgSBjE1LjUuMDJgCgVhcm02NBCAgAEiDk1hY0Jvb2tQcm8xOCwzKAMwgDw44CFCCggAEAAaADIAOgBlAAAAQGoYCgxHZW51aW5lSW50ZWwQwI0IGAggACgCggEAigEAqgEGeDg2XzY0sAEBSgoNQZDythWAjX3KSgoNkrdXsxUwrvLcSgoNBQ7w9BWAjX3KUARaAGIER0dST2oICAAQADgAQACAAYCRssUGmAEA+AHsAYAC////////////AYgCAJICJGVkNjhiZDZlLTE2OGYtNDdjMC05ODE2LThhZmRjMDc5OWNhM6gCtiuyAogBZB450p7LUD034q1+xYgAKn7IsGwLj70v2MAtsf5bz4dGdDQ67motfyp+LMUZDNsJTLRUE0n9H/9UH43yymV+G2N3Hn15S6ppHgxGjeP7Ti5v2UFhTvrLmMhARP61EIfS1sYKphv1BfE5C92iJ0SDSS28C5tj623dU5++z0Lg4+uEi7j/TPMNXfECYIzH5DhPcB8=","saved_system_profile_hash":"032953AC304F7CC55423677CABA681077E5523E5","stats_buildtime":"1755547351","stats_version":"139.0.7258.139-64"}},"variations_google_groups":{"Default":[]},"was":{"restarted":false}}
\ No newline at end of file
diff --git a/Парсер_IKEA/playwright_profile/ShaderCache/data_1 b/Парсер_IKEA/playwright_profile/ShaderCache/data_1
index 09a69eb..fcf306d 100644
Binary files a/Парсер_IKEA/playwright_profile/ShaderCache/data_1 and b/Парсер_IKEA/playwright_profile/ShaderCache/data_1 differ
diff --git a/Парсер_IKEA/playwright_profile/ShaderCache/index b/Парсер_IKEA/playwright_profile/ShaderCache/index
index 01277f9..f958c9c 100644
Binary files a/Парсер_IKEA/playwright_profile/ShaderCache/index and b/Парсер_IKEA/playwright_profile/ShaderCache/index differ
diff --git a/Парсер_IKEA/playwright_profile/extensions_crx_cache/metadata.json b/Парсер_IKEA/playwright_profile/extensions_crx_cache/metadata.json
new file mode 100644
index 0000000..4d15610
--- /dev/null
+++ b/Парсер_IKEA/playwright_profile/extensions_crx_cache/metadata.json
@@ -0,0 +1 @@
+{"hashes":{}}
\ No newline at end of file
diff --git a/Парсер_IKEA/playwright_profile/first_party_sets.db b/Парсер_IKEA/playwright_profile/first_party_sets.db
index bcb1222..f87190c 100644
Binary files a/Парсер_IKEA/playwright_profile/first_party_sets.db and b/Парсер_IKEA/playwright_profile/first_party_sets.db differ
diff --git a/Парсер_IKEA/playwright_profile/segmentation_platform/ukm_db b/Парсер_IKEA/playwright_profile/segmentation_platform/ukm_db
index 48ba0de..ba1e442 100644
Binary files a/Парсер_IKEA/playwright_profile/segmentation_platform/ukm_db and b/Парсер_IKEA/playwright_profile/segmentation_platform/ukm_db differ