You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I mainly use changedetection for keeping an eye on prices, for a potential price match in the future. Changedetection doesn't have a way to make conditional notifications. If there is a change, a notification will be sent. I however, only want a notification if the price has dropped, and I also want the historic pricing.
I've solved this by making two monitors.
One monitor has the xpath selector for the price field, and this monitor is muted. This gives me the historic pricing.
The second monitor uses xpath filters so it only matches when a price is lower than the specified threshold. This monitor will therefore be in a constant error state, but it is still checking. When the price is within the threshold, this monitor will match and send a notification.
Tip: when you make a new xpath filter, use your browsers "inspect" function on the website. You can input your filter in the console, and test whether it works or not.
This is the only way I know how to achieve this at the momemt. I.e. price conditional notification + historic pricing. Disadvantage is that each website price monitor requires two changedetection checks. I would love to hear if anyone can accomplish this with only one monitor!
Maybe @dgtlmoon would consider native support for conditional notifications at some point :) I'm thinking an option on notification page to only send notification if an xpath filter matches.
Here are some examples of how to use the xpath filter, on different values given by the xpath selector:
xpath selector: /html/body/div[5]/div/div[4]/div[1]/div[1]/div[4]/div[2]/div[2]/div/div/div[3]/div[3]/div[1]/div[2]/div/div[2]/div[2]/div/div[1]/span
xpath filter: [number(translate(text(), '€ ', '')) <= 133]
Full xpath: html/body/div[5]/div/div[4]/div[1]/div[1]/div[4]/div[2]/div[2]/div/div/div[3]/div[3]/div[1]/div[2]/div/div[2]/div[2]/div/div[1]/span[number(translate(text(), '€ ', '')) <= 133]
Output: € 134
Would match: "€ 133" and below
xpath selector: /html/body/app-root/main/div/main/div/app-landing/view-landing/section/div/app-pricing-promotions/div/div/div[1]/div[2]/div/span/span[2]
xpath filter: and text() <=6000
Full xpath: /html/body/app-root/main/div/main/div/app-landing/view-landing/section/div/app-pricing-promotions/div/div/div[1]/div[2]/div/span/span[2 and text() <=6000]
Output: 6500
Would match: "6000" and below
xpath selector: /html/body/app-root/div/cruise-planner-cruise-planner-page/div/main/cruise-planner-product-list-page/div/div[2]/div/cruise-planner-merchandising-product-list/div[4]/cruise-planner-product-list/div/div[1]/cruise-planner-product-card/div/a/div[2]/div[2]/div[2]/span[1]
xpath filter: and number(translate(text(), '(% OF)', '')) >= 58
Full xpath: /html/body/app-root/div/cruise-planner-cruise-planner-page/div/main/cruise-planner-product-list-page/div/div[2]/div/cruise-planner-merchandising-product-list/div[4]/cruise-planner-product-list/div/div[1]/cruise-planner-product-card/div/a/div[2]/div[2]/div[2]/span[1 and number(translate(text(), '(% OF)', '')) >= 58]
Output: (50% OFF)
Would match: "(58% OFF)" and above
xpath selector: /html/body/div[1]/div[2]/div/div[3]/div[6]/div[2]/div[1]/div/div/div[2]/div/section/div[2]/p[1]/span[2]
xpath filter: and number(translate(text(), ".", "")) <= 3000
Full xpath: /html/body/div[1]/div[2]/div/div[3]/div[6]/div[2]/div[1]/div/div/div[2]/div/section/div[2]/p[1]/span[2 and number(translate(text(), ".", "")) <= 3000]
Output: 3.500
Would match: "3.000" and below
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
I mainly use changedetection for keeping an eye on prices, for a potential price match in the future. Changedetection doesn't have a way to make conditional notifications. If there is a change, a notification will be sent. I however, only want a notification if the price has dropped, and I also want the historic pricing.
I've solved this by making two monitors.
One monitor has the xpath selector for the price field, and this monitor is muted. This gives me the historic pricing.
The second monitor uses xpath filters so it only matches when a price is lower than the specified threshold. This monitor will therefore be in a constant error state, but it is still checking. When the price is within the threshold, this monitor will match and send a notification.
Tip: when you make a new xpath filter, use your browsers "inspect" function on the website. You can input your filter in the console, and test whether it works or not.
This is the only way I know how to achieve this at the momemt. I.e. price conditional notification + historic pricing. Disadvantage is that each website price monitor requires two changedetection checks. I would love to hear if anyone can accomplish this with only one monitor!
Maybe @dgtlmoon would consider native support for conditional notifications at some point :) I'm thinking an option on notification page to only send notification if an xpath filter matches.
Here are some examples of how to use the xpath filter, on different values given by the xpath selector:
xpath selector:
/html/body/div[5]/div/div[4]/div[1]/div[1]/div[4]/div[2]/div[2]/div/div/div[3]/div[3]/div[1]/div[2]/div/div[2]/div[2]/div/div[1]/span
xpath filter:
[number(translate(text(), '€ ', '')) <= 133]
Full xpath:
html/body/div[5]/div/div[4]/div[1]/div[1]/div[4]/div[2]/div[2]/div/div/div[3]/div[3]/div[1]/div[2]/div/div[2]/div[2]/div/div[1]/span[number(translate(text(), '€ ', '')) <= 133]
Output:
€ 134
Would match:
"€ 133" and below
xpath selector:
/html/body/app-root/main/div/main/div/app-landing/view-landing/section/div/app-pricing-promotions/div/div/div[1]/div[2]/div/span/span[2]
xpath filter:
and text() <=6000
Full xpath:
/html/body/app-root/main/div/main/div/app-landing/view-landing/section/div/app-pricing-promotions/div/div/div[1]/div[2]/div/span/span[2 and text() <=6000]
Output:
6500
Would match:
"6000" and below
xpath selector:
/html/body/app-root/div/cruise-planner-cruise-planner-page/div/main/cruise-planner-product-list-page/div/div[2]/div/cruise-planner-merchandising-product-list/div[4]/cruise-planner-product-list/div/div[1]/cruise-planner-product-card/div/a/div[2]/div[2]/div[2]/span[1]
xpath filter:
and number(translate(text(), '(% OF)', '')) >= 58
Full xpath:
/html/body/app-root/div/cruise-planner-cruise-planner-page/div/main/cruise-planner-product-list-page/div/div[2]/div/cruise-planner-merchandising-product-list/div[4]/cruise-planner-product-list/div/div[1]/cruise-planner-product-card/div/a/div[2]/div[2]/div[2]/span[1 and number(translate(text(), '(% OF)', '')) >= 58]
Output:
(50% OFF)
Would match:
"(58% OFF)" and above
xpath selector:
/html/body/div[1]/div[2]/div/div[3]/div[6]/div[2]/div[1]/div/div/div[2]/div/section/div[2]/p[1]/span[2]
xpath filter:
and number(translate(text(), ".", "")) <= 3000
Full xpath:
/html/body/div[1]/div[2]/div/div[3]/div[6]/div[2]/div[1]/div/div/div[2]/div/section/div[2]/p[1]/span[2 and number(translate(text(), ".", "")) <= 3000]
Output:
3.500
Would match:
"3.000" and below
Beta Was this translation helpful? Give feedback.
All reactions