Files
changedetection.io/changedetectionio/processors
dgtlmoonandClaude Opus 5.5 7ec79fc231 LLM restock: fix locale-formatted string prices (1.299,95 read as 1.29995) (#4544)
* LLM restock: parse string prices with price_parser instead of stripping separators

If the model returns the price as page text, e.g. "1.299,95 €", stripping
everything but digits and dots gave 1.29995. price_parser (already a
dependency) handles the locale formats the prompt lists.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* LLM restock: use Restock.parse_currency() like the other price extractors

Same parser c8afea1b (#4494) moved the structured-data extractors to, so
there's one place price text becomes a number. parse_currency() now lists
every caller, and the call sites point back to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:21:06 +02:00
..

Change detection post-processors

The concept here is to be able to switch between different domain specific problems to solve.

  • text_json_diff The traditional text and JSON comparison handler
  • restock_diff Only cares about detecting if a product looks like it has some text that suggests that it's out of stock, otherwise assumes that it's in stock.

Some suggestions for the future

  • graphical

API schema extension (api.yaml)

A processor can extend the Watch/Tag API schema by placing an api.yaml alongside its __init__.py. Define a components.schemas.processor_config_<name> entry and it will be merged into WatchBase at startup, making processor_config_<name> a valid field on all watch create/update API calls. The fully merged spec is served live at /api/v1/full-spec.

See restock_diff/api.yaml for a working example.

Todo

  • Make each processor return a extra list of sub-processed (so you could configure a single processor in different ways)
  • move restock_diff to its own pip/github repo