mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2026-08-29 09:37:39 +00:00
* Restock detection - fix inverted condition that skipped the OpenGraph availability fallback get_itemprop_availability() only dug through OpenGraph properties when price was missing OR when availability was ALREADY found - so on pages that expose price via JSON-LD but stock state only via the OpenGraph commerce tags (<meta property="product:availability">), the availability (and currency) was silently dropped. The inner loop already guards each field with 'if not value.get(...)', so the outer gate now matches that intent: dig OpenGraph when any of price/availability/currency is still missing. Co-Authored-By: Claude <noreply@anthropic.com> * Normalise availability after the OpenGraph fallback, not before An availability found via OpenGraph was left raw, so the Facebook commerce spelling 'in stock' never matched the 'instock' test and the product read as out of stock. --------- Co-authored-by: Claude <noreply@anthropic.com>
Change detection post-processors
The concept here is to be able to switch between different domain specific problems to solve.
text_json_diffThe traditional text and JSON comparison handlerrestock_diffOnly 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