{% extends "base.html" %} {% block title %}{{ keyword.keyword }} — Willhaben Tracker{% endblock %} {% block content %} {% if keyword %}
Status
{% if keyword.is_active %} Active {% else %} Stopped {% endif %}
Interval
{{ keyword.interval_minutes }}m
Subscribers
{{ subscriber_count }}
Price Range
{% if keyword.price_min %}€{{ (keyword.price_min / 100)|round(2) }}{% else %}No min{% endif %} — {% if keyword.price_max %}€{{ (keyword.price_max / 100)|round(2) }}{% else %}No max{% endif %}
Postcodes
{{ ', '.join(keyword.allowed_postcodes) if keyword.allowed_postcodes else 'All' }}
Last Scraped
{{ keyword.last_scraped_at.strftime('%Y-%m-%d %H:%M') if keyword.last_scraped_at else 'Never' }}

Recent Ads

{% if ads %}
{% for ad in ads %} {% endfor %}
Title Price Location Postcode URL Published
{{ ad.title[:60] }}{% if ad.title|length > 60 %}…{% endif %} {{ format_price(ad.price) }} {{ ad.location or '—' }} {{ ad.postcode or '—' }} Link {{ ad.published_at.strftime('%Y-%m-%d') if ad.published_at else '—' }}
{% else %}
No ads found for this keyword.
{% endif %}

Recent Scrape Logs

{% if logs %}
{% for log in logs %} {% endfor %}
Time Status Ads Found New Ads Error
{{ log.scraped_at.strftime('%Y-%m-%d %H:%M:%S') }} {% if log.status == 'success' %} Success {% elif log.status == 'rate_limited' %} Rate Limited {% else %} Error {% endif %} {{ log.ads_found }} {{ log.new_ads }} {{ log.error_message or '—' }}
{% else %}
No scrape logs found.
{% endif %} {% endif %} {% endblock %}