mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2025-12-10 18:15:32 +00:00
Merge branch 'master' into 2039-restock-use-itemprop
This commit is contained in:
@@ -14,6 +14,7 @@ class processor_settings_form(processor_text_json_diff_form):
|
|||||||
price_change_max = FloatField('Maximum amount to trigger notification', [validators.Optional()],
|
price_change_max = FloatField('Maximum amount to trigger notification', [validators.Optional()],
|
||||||
render_kw={"placeholder": "No limit", "size": "10"})
|
render_kw={"placeholder": "No limit", "size": "10"})
|
||||||
price_change_threshold_percent = FloatField('Threshold in % for price changes since the original price', validators=[
|
price_change_threshold_percent = FloatField('Threshold in % for price changes since the original price', validators=[
|
||||||
|
|
||||||
validators.Optional(),
|
validators.Optional(),
|
||||||
validators.NumberRange(min=0, max=100, message="Should be between 0 and 100"),
|
validators.NumberRange(min=0, max=100, message="Should be between 0 and 100"),
|
||||||
], render_kw={"placeholder": "0%", "size": "5"})
|
], render_kw={"placeholder": "0%", "size": "5"})
|
||||||
@@ -57,7 +58,6 @@ class processor_settings_form(processor_text_json_diff_form):
|
|||||||
{{ render_field(form.price_change_threshold_percent) }}
|
{{ render_field(form.price_change_threshold_percent) }}
|
||||||
<span class="pure-form-message-inline">Price must change more than this % to trigger a change.</span><br>
|
<span class="pure-form-message-inline">Price must change more than this % to trigger a change.</span><br>
|
||||||
<span class="pure-form-message-inline">For example, If the product is $1,000 USD originally, <strong>2%</strong> would mean it has to change more than $20 since the first check.</span><br>
|
<span class="pure-form-message-inline">For example, If the product is $1,000 USD originally, <strong>2%</strong> would mean it has to change more than $20 since the first check.</span><br>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>"""
|
</fieldset>"""
|
||||||
@@ -338,12 +338,6 @@ class perform_site_check(difference_detection_processor):
|
|||||||
if blocked:
|
if blocked:
|
||||||
changed_detected = False
|
changed_detected = False
|
||||||
|
|
||||||
# Extract title as title
|
|
||||||
if is_html:
|
|
||||||
if self.datastore.data['settings']['application'].get('extract_title_as_title') or watch['extract_title_as_title']:
|
|
||||||
if not watch['title'] or not len(watch['title']):
|
|
||||||
update_obj['title'] = html_tools.extract_element(find='title', html_content=self.fetcher.content)
|
|
||||||
|
|
||||||
logger.debug(f"Watch UUID {watch.get('uuid')} content check - Previous MD5: {watch.get('previous_md5')}, Fetched MD5 {fetched_md5}")
|
logger.debug(f"Watch UUID {watch.get('uuid')} content check - Previous MD5: {watch.get('previous_md5')}, Fetched MD5 {fetched_md5}")
|
||||||
|
|
||||||
if changed_detected:
|
if changed_detected:
|
||||||
|
|||||||
@@ -1118,9 +1118,11 @@ ul {
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
}
|
}
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@extend .inline-tag;
|
@extend .inline-tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1194,9 +1194,11 @@ ul {
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
opacity: 0.7; }
|
opacity: 0.7; }
|
||||||
|
|
||||||
|
|
||||||
.restock-label svg {
|
.restock-label svg {
|
||||||
vertical-align: middle; }
|
vertical-align: middle; }
|
||||||
|
|
||||||
|
|
||||||
#chrome-extension-link {
|
#chrome-extension-link {
|
||||||
padding: 9px;
|
padding: 9px;
|
||||||
border: 1px solid var(--color-grey-800);
|
border: 1px solid var(--color-grey-800);
|
||||||
|
|||||||
@@ -505,6 +505,16 @@ class update_worker(threading.Thread):
|
|||||||
if update_handler.xpath_data:
|
if update_handler.xpath_data:
|
||||||
watch.save_xpath_data(data=update_handler.xpath_data)
|
watch.save_xpath_data(data=update_handler.xpath_data)
|
||||||
|
|
||||||
|
# Extract <title> as title if possible/requested.
|
||||||
|
if self.datastore.data['settings']['application'].get('extract_title_as_title') or watch['extract_title_as_title']:
|
||||||
|
if not watch['title'] or not len(watch['title']):
|
||||||
|
try:
|
||||||
|
update_obj['title'] = html_tools.extract_element(find='title', html_content=update_handler.fetcher.content)
|
||||||
|
logger.info(f"UUID: {uuid} Extract <title> updated title to '{update_obj['title']}")
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"UUID: {uuid} Extract <title> as watch title was enabled, but couldn't find a <title>.")
|
||||||
|
|
||||||
|
# Now update after running everything
|
||||||
try:
|
try:
|
||||||
self.datastore.update_watch(uuid=uuid, update_obj=update_obj)
|
self.datastore.update_watch(uuid=uuid, update_obj=update_obj)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user