{% extends 'base.html' %} {% block content %} {% from '_helpers.html' import render_field, render_checkbox_field, render_button, render_time_schedule_form, playwright_warning, only_playwright_type_watches_warning, render_conditions_fieldlist_of_formfields_as_table %} {% from '_common_fields.html' import render_common_settings_form %} {% if playwright_enabled %} {% endif %} {% set has_tag_filters_extra="WARNING: Watch has tag/groups set with special filters\n" if has_special_tag_options else '' %}
{{ render_field(form.url, placeholder="https://...", required=true, class="m-d") }}
Some sites use JavaScript to create the content, for this you should use the Chrome/WebDriver Fetcher
Variables are supported in the URL (help and examples here).
{{ render_field(form.processor) }}
{{ render_field(form.title, class="m-d") }}
{{ render_field(form.tags) }} Organisational tag/group name used in the main listing page
{{ render_checkbox_field(form.time_between_check_use_default, class="use-default-timecheck") }}
{{ render_field(form.time_between_check, class="time-check-widget") }} The interval/amount of time between each check.
{{ render_time_schedule_form(form, available_timezones, timezone_default_config) }}

{{ render_checkbox_field(form.extract_title_as_title) }}
{{ render_checkbox_field(form.filter_failure_notification_send) }} Sends a notification when the filter can no longer be seen on the page, good for knowing when the page changed and your filter will not work anymore.
{{ render_field(form.fetch_backend, class="fetch-backend") }}

Use the Basic method (default) where your watched site doesn't need Javascript to render.

The Chrome/Javascript method requires a network connection to a running WebDriver+Chrome server, set by the ENV var 'WEBDRIVER_URL'.

Tip: Connect using Bright Data and Oxylabs Proxies, find out more here.
{% if form.proxy %}
{{ form.proxy.label }} Check/Scan all
{{ form.proxy(class="fetch-backend-proxy") }}
Choose a proxy for this watch
{% endif %}
{{ render_field(form.webdriver_delay) }}
If you're having trouble waiting for the page to be fully rendered (text missing etc), try increasing the 'wait' time here.
This will wait n seconds before extracting the text. {% if using_global_webdriver_wait %}
Using the current global default settings {% endif %}
{% if watch_needs_selenium_or_playwright %} {# Only works with playwright #} {% if system_has_playwright_configured %}

Click here to Start


Please allow 10-15 seconds for the browser to connect.
Loading (?) {{ render_field(form.browser_steps) }}
{% else %} {# it's configured to use selenium or chrome but system says its not configured #} {{ playwright_warning() }} {% if system_has_webdriver_configured %} Selenium/Webdriver cant be used here because it wont fetch screenshots reliably. {% endif %} {% endif %} {% else %} {# "This functionality needs chrome.." #} {{ only_playwright_type_watches_warning() }} {% endif %}
{{ render_checkbox_field(form.notification_muted) }}
{% if watch_needs_selenium_or_playwright %}
{{ render_checkbox_field(form.notification_screenshot) }} Use with caution! This will easily fill up your email storage quota or flood other storages.
{% endif %}
{% if has_default_notification_urls %}
Look out! There are system-wide notification URLs enabled, this form will override notification settings for this watch only ‐ an empty Notification URL list here will still send notifications.
{% endif %} Use system defaults {{ render_common_settings_form(form, emailprefix, settings_application, extra_notification_token_placeholder_info) }}
{% if watch['processor'] == 'text_json_diff' %}
{{ render_field(form.conditions_match_logic) }} {{ render_conditions_fieldlist_of_formfields_as_table(form.conditions) }}

Use the verify (✓) button to test if a condition passes against the current snapshot.

Read a quick tutorial about using conditional web page changes here.
Activate preview
Pro-tips:
  • Use the preview page to see your filters and triggers highlighted.
  • Some sites use JavaScript to create the content, for this you should use the Chrome/WebDriver Fetcher
{% include "edit/include_subtract.html" %}

Text filtering

Limit trigger/ignore/block/extract to;
{{ render_checkbox_field(form.filter_text_added) }} {{ render_checkbox_field(form.filter_text_replaced) }} {{ render_checkbox_field(form.filter_text_removed) }} Note: Depending on the length and similarity of the text on each line, the algorithm may consider an addition instead of replacement for example.
 So it's always better to select Added+Replaced when you're interested in new content.
 When content is merely moved in a list, it will also trigger an addition, consider enabling Only trigger when unique lines appear
{{ render_checkbox_field(form.check_unique_lines) }} Good for websites that just move the content around, and you want to know when NEW content is added, compares new lines against all history for this watch.
{{ render_checkbox_field(form.remove_duplicate_lines) }} Remove duplicate lines of text
{{ render_checkbox_field(form.sort_text_alphabetically) }} Helps reduce changes detected caused by sites shuffling lines around, combine with check unique lines below.
{{ render_checkbox_field(form.trim_text_whitespace) }} Remove any whitespace before and after each line of text
{% include "edit/text-options.html" %}
{% endif %} {# rendered sub Template #} {% if extra_form_content %}
{{ extra_form_content|safe }}
{% endif %} {% if watch['processor'] == 'text_json_diff' %}
{% if watch_needs_selenium_or_playwright %} {% if system_has_playwright_configured %} The Visual Selector tool lets you select the text elements that will be used for the change detection. It automatically fills-in the filters in the "CSS/JSONPath/JQ/XPath Filters" box of the Filters & Triggers tab. Use Shift+Click to select multiple items.
Clear selection One moment, fetching screenshot and element information..
Currently: Loading...
{% else %} {# The watch needed chrome but system says that playwright is not ready #} {{ playwright_warning() }} {% endif %} {% if system_has_webdriver_configured %} Selenium/Webdriver cant be used here because it wont fetch screenshots reliably. {% endif %} {% else %} {# "This functionality needs chrome.." #} {{ only_playwright_type_watches_warning() }} {% endif %}
{% endif %}
Check count {{ "{:,}".format( watch.check_count) }}
Consecutive filter failures {{ "{:,}".format( watch.consecutive_filter_failures) }}
History length {{ "{:,}".format(watch.history|length) }}
Last fetch duration {{ watch.fetch_time }}s
Notification alert count {{ watch.notification_alert_count }}
Server type reply {{ watch.get('remote_server_reply') }}
{% if watch.history_n %}

Download latest HTML snapshot

{% endif %}
{{ render_button(form.save_button) }} Delete {% if watch.history_n %}Clear History{% endif %} Clone & Edit
{% endblock %}