Support item quantities and unique result lines

This commit is contained in:
2026-08-11 18:06:29 +03:00
parent cf1cb41f04
commit e95e43bd92
5 changed files with 143 additions and 21 deletions
+22 -4
View File
@@ -51,13 +51,22 @@ export function parseTooltipText(text) {
.split(/\r?\n/)
.map(normalizeOcrText)
.filter(Boolean);
const priceIndex = lines.findIndex((line) => /pr[i1l]ce\s*[:;]?/i.test(line));
const priceIndex = lines.findIndex(
(line) =>
/\d[\d\s,.'`]*\s*adena/i.test(line) ||
/pr[i1l]ce\s*[:;]?/i.test(line) ||
/^\s*\d[\d\s,.'`]*\s*$/.test(line),
);
if (priceIndex < 0) return null;
const priceLine = lines[priceIndex];
const priceMatch = priceLine.match(/pr[i1l]ce\s*[:;]?\s*([\d\s,.'`]+)\s*adena/i);
const digits = priceMatch?.[1].replace(/\D/g, "") ?? "";
const priceText =
priceLine.match(/([\d][\d\s,.'`]*)\s*adena/i)?.[1] ??
priceLine.match(/pr[i1l]ce\s*[:;]?\s*([\d][\d\s,.'`]*)/i)?.[1] ??
priceLine.match(/^\s*([\d][\d\s,.'`]*)\s*$/)?.[1] ??
"";
const digits = priceText.replace(/\D/g, "");
let name = lines[priceIndex - 1] ?? "";
if (!name) {
@@ -66,7 +75,16 @@ export function parseTooltipText(text) {
if (!name || !digits) return null;
return { name, priceAdena: Number(digits), rawText: lines.join("\n") };
const quantityMatch = name.match(/^(.*?)\s*\(([\d][\d\s,.]*)\)\s*$/);
const quantityText = quantityMatch?.[2].replace(/\D/g, "") ?? "";
if (quantityMatch) name = quantityMatch[1].trim();
return {
name,
quantity: quantityText ? Number(quantityText) : null,
priceAdena: Number(digits),
rawText: lines.join("\n"),
};
}
export function isCalibrationReady(calibration) {