Use Steam game names as feed display titles; custom.html are now partly rendered from Python
All checks were successful
Test and build Docker image / docker (push) Successful in 30s

This commit is contained in:
Joakim Hellsén 2026-08-12 21:55:08 +02:00
commit 6c0aea053b
Signed by: Joakim Hellsén
SSH key fingerprint: SHA256:/9h/CsExpFp+PRhsfA0xznFx2CGfTT5R/kpuFfUgEQk
15 changed files with 976 additions and 615 deletions

View file

@ -1,9 +1,9 @@
{% extends "base.html" %}
{% block title %}
Blacklist: {{ feed.title if feed.title else feed.url }} | discord-rss-bot
Blacklist: {{ feed_title if feed_title else feed.url }} | discord-rss-bot
{% endblock title %}
{% block description %}
Block matching entries from {{ feed.title if feed.title else feed.url }} before they are delivered to Discord.
Block matching entries from {{ feed_title if feed_title else feed.url }} before they are delivered to Discord.
{% endblock description %}
{% block content %}
<div class="row g-3 filter-page">

View file

@ -1,277 +1,65 @@
{% extends "base.html" %}
{% block title %}Message Template: {{ feed.title if feed.title else feed.url }} | discord-rss-bot{% endblock title %}
{% block description %}Customize the plain text Discord message template for {{ feed.title if feed.title else feed.url }}.{% endblock description %}
{% block title %}Message Template: {{ feed_title if feed_title else feed.url }} | discord-rss-bot{% endblock title %}
{% block description %}Customize the plain text Discord message template for {{ feed_title if feed_title else feed.url }}.{% endblock description %}
{% block content %}
<div class="p-2 border border-dark">
<form action="/custom" method="post">
<!-- Feed URL -->
<div class="row pb-2">
<div class="col-sm-12">
<div class="form-text">
<ul class="list-inline">
<li>You can modify the message that is sent to Discord.</li>
<li>You can use \n to create a new line.</li>
<li>
You can remove the embed from links by adding < and> around the link. (For example <
{% raw %} {{entry_link}} {% endraw %}>)
</li>
<br />
<li>
<code>
{% raw %}
{{feed_author}}
{% endraw %}
</code>{{ feed.authors_str }}
</li>
<li>
<code>
{% raw %}
{{feed_added}}
{% endraw %}
</code>{{ feed.added }}
</li>
<li>
<code>
{% raw %}
{{feed_last_exception}}
{% endraw %}
</code>{{ feed.last_exception }}
</li>
<li>
<code>
{% raw %}
{{feed_last_updated}}
{% endraw %}
</code>{{ feed.last_updated }}
</li>
<li>
<code>
{% raw %}
{{feed_link}}
{% endraw %}
</code>{{ feed.link }}
</li>
<li>
<code>
{% raw %}
{{feed_subtitle}}
{% endraw %}
</code>{{ feed.subtitle }}
</li>
<li>
<code>
{% raw %}
{{feed_title}}
{% endraw %}
</code>{{ feed.title }}
</li>
<li>
<code>
{% raw %}
{{feed_updated}}
{% endraw %}
</code>{{ feed.updated }}
</li>
<li>
<code>
{% raw %}
{{feed_updates_enabled}}
{% endraw %}
</code>{{ feed.updates_enabled }}
</li>
<li>
<code>
{% raw %}
{{feed_url}}
{% endraw %}
</code>{{ feed.url }}
</li>
<li>
<code>
{% raw %}
{{feed_user_title}}
{% endraw %}
</code>{{ feed.user_title }}
</li>
<li>
<code>
{% raw %}
{{feed_version}}
{% endraw %}
</code>{{ feed.version }}
</li>
<br />
{% if entry %}
<li>
<code>
{% raw %}
{{entry_added}}
{% endraw %}
</code>{{ entry.added }}
</li>
<li>
<code>
{% raw %}
{{entry_author}}
{% endraw %}
</code>{{ entry.authors_str }}
</li>
{% if entry.content %}
<li>
<code>
{% raw %}
{{entry_content}}
{% endraw %}
</code>{{ entry.content[0].value|discord_markdown }}
</li>
<li>
<code>
{% raw %}
{{entry_content_raw}}
{% endraw %}
</code>{{ entry.content[0].value }}
</li>
{% endif %}
<li>
<code>
{% raw %}
{{entry_id}}
{% endraw %}
</code>{{ entry.id }}
</li>
<li>
<code>
{% raw %}
{{entry_important}}
{% endraw %}
</code>{{ entry.important }}
</li>
<li>
<code>
{% raw %}
{{entry_link}}
{% endraw %}
</code>{{ entry.link }}
</li>
<li>
<code>
{% raw %}
{{entry_published}}
{% endraw %}
</code>{{ entry.published }}
</li>
<li>
<code>
{% raw %}
{{entry_read}}
{% endraw %}
</code>{{ entry.read }}
</li>
<li>
<code>
{% raw %}
{{entry_read_modified}}
{% endraw %}
</code>{{ entry.read_modified }}
</li>
{% if entry.summary %}
<li>
<code>
{% raw %}
{{entry_summary}}
{% endraw %}
</code>{{ entry.summary|discord_markdown }}
</li>
<li>
<code>
{% raw %}
{{entry_summary_raw}}
{% endraw %}
</code>{{ entry.summary }}
</li>
{% endif %}
<li>
<code>
{% raw %}
{{entry_title}}
{% endraw %}
</code>{{ entry.title }}
</li>
<li>
<code>
{% raw %}
{{entry_text}}
{% endraw %}
</code>{{ entry.content[0].value|discord_markdown if entry and entry.content else (entry.summary|discord_markdown if entry and entry.summary else '') }}
</li>
<li>
<code>
{% raw %}
{{entry_updated}}
{% endraw %}
</code>{{ entry.updated }}
</li>
<br />
<li>
<code>
{% raw %}
{{image_1}}
{% endraw %}
</code>{{ first_image }}
</li>
{% if extension_variables %}
<br />
<li>Extension variables (from enabled extensions):</li>
{% for var_name in extension_variables %}
<li>
<code>{% raw %}{{{% endraw %}{{ var_name }}{% raw %}}}{% endraw %}</code>
{% if var_name in extension_values and extension_values[var_name] %}
{{ extension_values[var_name] }}
{% else %}
(empty)
{% endif %}
</li>
{% endfor %}
{% endif %}
</ul>
{% else %}
Something went wrong, there was no entry found. If this feed has entries and you still see this
message, please contact the developer.
{% endif %}
<div class="p-2 border border-dark">
<form action="/custom" method="post">
<!-- Feed URL -->
<div class="row pb-2">
<div class="col-sm-12">
<div class="form-text">
<ul class="list-inline">
<li>You can modify the message that is sent to Discord.</li>
<li>You can use \n to create a new line.</li>
<li>
You can remove the embed from links by adding &lt; and &gt; around the link. (For example &lt;{% raw %}{{ entry_link }}{% endraw %}&gt;)
</li>
</ul>
{{ render_tag_reference_html(feed=feed, entry=entry, feed_title=feed_title, first_image=first_image, extension_variables=extension_variables, extension_values=extension_values) }}
</div>
<label for="custom_message" class="col-sm-6 col-form-label">Message</label>
<input name="custom_message"
type="text"
class="form-control bg-dark border-dark text-muted"
id="custom_message"
{% if custom_message %} value="{{- custom_message -}}" {% endif %} />
</div>
<label for="custom_message" class="col-sm-6 col-form-label">Message</label>
<input name="custom_message" type="text" class="form-control bg-dark border-dark text-muted"
id="custom_message" {% if custom_message %} value="{{- custom_message -}}" {% endif %} />
</div>
</div>
<!-- Optional Discord webhook username & avatar for this feed -->
<div class="row pb-2">
<div class="col-sm-12">
<div class="form-text">
<ul class="list-inline">
<li>Optional: override the Discord webhook username and avatar for messages from this feed.</li>
<li>Leave blank to use the webhook's default name and avatar.</li>
<li>Invalid values (empty, disallowed characters, or bad avatar URLs) are ignored when sending.</li>
<li>Username rules: 180 characters; cannot contain <code>@</code>, <code>#</code>, <code>:</code>, or <code>`</code>; cannot contain <code>clyde</code> or <code>discord</code>.</li>
<li>Avatar must be a full <code>http://</code> or <code>https://</code> image URL.</li>
</ul>
<!-- Optional Discord webhook username & avatar for this feed -->
<div class="row pb-2">
<div class="col-sm-12">
<div class="form-text">
<ul class="list-inline">
<li>Optional: override the Discord webhook username and avatar for messages from this feed.</li>
<li>Leave blank to use the webhook's default name and avatar.</li>
<li>Invalid values (empty, disallowed characters, or bad avatar URLs) are ignored when sending.</li>
<li>Username rules: 180 characters; cannot contain <code>@</code>, <code>#</code>, <code>:</code>, or <code>`</code>; cannot contain <code>clyde</code> or <code>discord</code>.</li>
<li>Avatar must be a full <code>http://</code> or <code>https://</code> image URL.</li>
</ul>
</div>
<label for="message_username" class="col-sm-6 col-form-label">Message Username</label>
<input name="message_username"
type="text"
class="form-control bg-dark border-dark text-muted"
id="message_username"
maxlength="80"
placeholder="e.g. Power Of The Shell"
{% if message_username %} value="{{- message_username -}}" {% endif %} />
<label for="message_avatar_url" class="col-sm-6 col-form-label">Message Avatar Image</label>
<input name="message_avatar_url"
type="url"
class="form-control bg-dark border-dark text-muted"
id="message_avatar_url"
placeholder="e.g. https://example.com/icon.png"
{% if message_avatar_url %} value="{{- message_avatar_url -}}" {% endif %} />
</div>
<label for="message_username" class="col-sm-6 col-form-label">Message Username</label>
<input name="message_username" type="text" class="form-control bg-dark border-dark text-muted"
id="message_username" maxlength="80" placeholder="e.g. Power Of The Shell"
{% if message_username %} value="{{- message_username -}}" {% endif %} />
<label for="message_avatar_url" class="col-sm-6 col-form-label">Message Avatar Image</label>
<input name="message_avatar_url" type="url" class="form-control bg-dark border-dark text-muted"
id="message_avatar_url" placeholder="e.g. https://example.com/icon.png"
{% if message_avatar_url %} value="{{- message_avatar_url -}}" {% endif %} />
</div>
</div>
<!-- Add a hidden feed_url field to the form -->
<input type="hidden" name="feed_url" value="{{ feed.url }}" />
<!-- Submit button -->
<div class="d-md-flex">
<button class="btn btn-dark btn-sm">Update message</button>
</div>
</form>
</div>
<!-- Add a hidden feed_url field to the form -->
<input type="hidden" name="feed_url" value="{{ feed.url }}" />
<!-- Submit button -->
<div class="d-md-flex">
<button class="btn btn-dark btn-sm">Update message</button>
</div>
</form>
</div>
{% endblock content %}

View file

@ -1,324 +1,137 @@
{% extends "base.html" %}
{% block title %}Embed Template: {{ feed.title if feed.title else feed.url }} | discord-rss-bot{% endblock title %}
{% block description %}Customize the Discord embed layout, colors, and media for {{ feed.title if feed.title else feed.url }}.{% endblock description %}
{% block title %}Embed Template: {{ feed_title if feed_title else feed.url }} | discord-rss-bot{% endblock title %}
{% block description %}Customize the Discord embed layout, colors, and media for {{ feed_title if feed_title else feed.url }}.{% endblock description %}
{% block content %}
<div class="p-2 border border-dark">
<form action="/embed" method="post">
<div class="row pb-2">
<div class="col-sm-12">
<div class="form-text">
<ul class="list-inline">
<br />
<li>
<code>
{% raw %}
{{feed_author}}
{% endraw %}
</code>{{feed.authors_str}}
</li>
<li>
<code>
{% raw %}
{{feed_added}}
{% endraw %}
</code>{{feed.added}}
</li>
<li>
<code>
{% raw %}
{{feed_last_exception}}
{% endraw %}
</code>{{feed.last_exception}}
</li>
<li>
<code>
{% raw %}
{{feed_last_updated}}
{% endraw %}
</code>{{feed.last_updated}}
</li>
<li>
<code>
{% raw %}
{{feed_link}}
{% endraw %}
</code>{{feed.link}}
</li>
<li>
<code>
{% raw %}
{{feed_subtitle}}
{% endraw %}
</code>{{feed.subtitle}}
</li>
<li>
<code>
{% raw %}
{{feed_title}}
{% endraw %}
</code>{{feed.title}}
</li>
<li>
<code>
{% raw %}
{{feed_updated}}
{% endraw %}
</code>{{feed.updated}}
</li>
<li>
<code>
{% raw %}
{{feed_updates_enabled}}
{% endraw %}
</code>{{feed.updates_enabled}}
</li>
<li>
<code>
{% raw %}
{{feed_url}}
{% endraw %}
</code>{{feed.url}}
</li>
<li>
<code>
{% raw %}
{{feed_user_title}}
{% endraw %}
</code>{{feed.user_title}}
</li>
<li>
<code>
{% raw %}
{{feed_version}}
{% endraw %}
</code>{{feed.version}}
</li>
<br />
{% if entry %}
<li>
<code>
{% raw %}
{{entry_added}}
{% endraw %}
</code>{{entry.added}}
</li>
<li>
<code>
{% raw %}
{{entry_author}}
{% endraw %}
</code>{{entry.authors_str}}
</li>
{% if entry.content %}
<li>
<code>
{% raw %}
{{entry_content}}
{% endraw %}
</code>{{entry.content[0].value|discord_markdown}}
</li>
<li>
<code>
{% raw %}
{{entry_content_raw}}
{% endraw %}
</code>{{entry.content[0].value}}
</li>
{% endif %}
<li>
<code>
{% raw %}
{{entry_id}}
{% endraw %}
</code>{{entry.id}}
</li>
<li>
<code>
{% raw %}
{{entry_important}}
{% endraw %}
</code>{{entry.important}}
</li>
<li>
<code>
{% raw %}
{{entry_link}}
{% endraw %}
</code>{{entry.link}}
</li>
<li>
<code>
{% raw %}
{{entry_published}}
{% endraw %}
</code>{{entry.published}}
</li>
<li>
<code>
{% raw %}
{{entry_read}}
{% endraw %}
</code>{{entry.read}}
</li>
<li>
<code>
{% raw %}
{{entry_read_modified}}
{% endraw %}
</code>{{entry.read_modified}}
</li>
{% if entry.summary %}
<li>
<code>
{% raw %}
{{entry_summary}}
{% endraw %}
</code>{{entry.summary|discord_markdown}}
</li>
<li>
<code>
{% raw %}
{{entry_summary_raw}}
{% endraw %}
</code>{{entry.summary}}
</li>
{% endif %}
<li>
<code>
{% raw %}
{{entry_title}}
{% endraw %}
</code>{{entry.title}}
</li>
<li>
<code>
{% raw %}
{{entry_text}}
{% endraw %}
</code>{{ entry.content[0].value|discord_markdown if entry and entry.content else (entry.summary|discord_markdown if entry and entry.summary else '') }}
</li>
<li>
<code>
{% raw %}
{{entry_updated}}
{% endraw %}
</code>{{entry.updated}}
</li>
<br />
<li>
<code>
{% raw %}
{{image_1}}
{% endraw %}
</code>{{ first_image }}
</li>
{% if extension_variables %}
<br />
<li>Extension variables (from enabled extensions):</li>
{% for var_name in extension_variables %}
<li>
<code>{% raw %}{{{% endraw %}{{ var_name }}{% raw %}}}{% endraw %}</code>
{% if var_name in extension_values and extension_values[var_name] %}
{{ extension_values[var_name] }}
{% else %}
(empty)
{% endif %}
</li>
{% endfor %}
{% endif %}
<div class="p-2 border border-dark">
<form action="/embed" method="post">
<div class="row pb-2">
<div class="col-sm-12">
<div class="form-text">
{{ render_tag_reference_html(feed=feed, entry=entry, feed_title=feed_title, first_image=first_image, extension_variables=extension_variables, extension_values=extension_values) }}
</div>
<div class="form-text">
<ul class="list-inline">
<li>You can use \n to create a new line.</li>
<li>You can remove the embed from links by adding &lt; and &gt; around the link. (For example &lt;{% raw %}{{ entry_link }}{% endraw %}&gt;)</li>
</ul>
{% else %}
Something went wrong, there was no entry found. If this feed has entries and you still see this
message, please contact the developer.
{% endif %}
</div>
<hr class="border-secondary my-3" />
<h5>Embed content</h5>
<label for="title" class="col-sm-6 col-form-label">Title</label>
<input name="title"
type="text"
class="form-control bg-dark border-dark text-muted"
id="title"
{% if title %} value="{{- title -}}" {% endif %} />
<label for="description" class="col-sm-6 col-form-label">Description</label>
<input name="description"
type="text"
class="form-control bg-dark border-dark text-muted"
id="description"
{% if description %} value="{{- description -}}" {% endif %} />
<label for="color" class="col-sm-6 col-form-label">Embed color</label>
<input name="color"
type="color"
class="form-control form-control-color bg-dark border-dark text-muted"
id="color"
{% if color %} value="{{- color -}}" {% endif %} />
<label for="image_url" class="col-sm-6 col-form-label">Image URL</label>
<input name="image_url"
type="text"
class="form-control bg-dark border-dark text-muted"
id="image_url"
{% if image_url %} value="{{- image_url -}}" {% endif %} />
<div class="form-text">
Use {% raw %}{{ image_1 }}{% endraw %} to use the first image URL found in the entry. You can also configure how many images gets sent via the feed page.
</div>
<label for="thumbnail_url" class="col-sm-6 col-form-label">Thumbnail</label>
<input name="thumbnail_url"
type="text"
class="form-control bg-dark border-dark text-muted"
id="thumbnail_url"
{% if thumbnail_url %} value="{{- thumbnail_url -}}" {% endif %} />
<hr class="border-secondary my-3" />
<h5>Author</h5>
<label for="author_name" class="col-sm-6 col-form-label">Author name</label>
<input name="author_name"
type="text"
class="form-control bg-dark border-dark text-muted"
id="author_name"
{% if author_name %} value="{{- author_name -}}" {% endif %} />
<label for="author_url" class="col-sm-6 col-form-label">Author URL</label>
<input name="author_url"
type="text"
class="form-control bg-dark border-dark text-muted"
id="author_url"
{% if author_url %} value="{{- author_url -}}" {% endif %} />
<label for="author_icon_url" class="col-sm-6 col-form-label">Author icon URL</label>
<input name="author_icon_url"
type="text"
class="form-control bg-dark border-dark text-muted"
id="author_icon_url"
{% if author_icon_url %} value="{{- author_icon_url -}}" {% endif %} />
<hr class="border-secondary my-3" />
<h5>Footer</h5>
<label for="footer_text" class="col-sm-6 col-form-label">Footer text</label>
<input name="footer_text"
type="text"
class="form-control bg-dark border-dark text-muted"
id="footer_text"
{% if footer_text %} value="{{- footer_text -}}" {% endif %} />
<label for="footer_icon_url" class="col-sm-6 col-form-label">Footer icon</label>
<input name="footer_icon_url"
type="text"
class="form-control bg-dark border-dark text-muted"
id="footer_icon_url"
{% if footer_icon_url %} value="{{- footer_icon_url -}}" {% endif %} />
{% if is_steam_feed %}
<hr class="border-secondary my-3" />
<h5>Options</h5>
<div class="form-check mt-2">
<input class="form-check-input"
type="checkbox"
name="show_steam_game_icon_in_thumbnail"
id="show_steam_game_icon_in_thumbnail"
value="true"
{% if show_steam_game_icon_in_thumbnail %}checked{% endif %}>
<label class="form-check-label" for="show_steam_game_icon_in_thumbnail">
Use Steam game icon as thumbnail override
</label>
</div>
{% endif %}
<hr class="border-secondary my-3" />
<h5>Webhook identity</h5>
<div class="form-text">
<ul class="list-inline">
<li>These override the webhook's display name and avatar (profile picture) for messages from this feed.</li>
<li>Leave blank to use the webhook's default name and avatar.</li>
<li>Username rules: 180 characters; cannot contain <code>@</code>, <code>#</code>, <code>:</code>, or <code>`</code>; cannot contain <code>clyde</code> or <code>discord</code>.</li>
<li>Avatar must be a full <code>http://</code> or <code>https://</code> image URL.</li>
</ul>
</div>
<label for="username" class="col-sm-6 col-form-label">Webhook name</label>
<input name="username"
type="text"
class="form-control bg-dark border-dark text-muted"
id="username"
maxlength="80"
placeholder="e.g. My Feed Bot"
{% if username %} value="{{- username -}}" {% endif %} />
<label for="avatar_url" class="col-sm-6 col-form-label">Webhook avatar</label>
<input name="avatar_url"
type="text"
class="form-control bg-dark border-dark text-muted"
id="avatar_url"
placeholder="e.g. https://example.com/avatar.png or {% raw %}{{ hoyolab_author_avatar_url }}{% endraw %}"
{% if avatar_url %} value="{{- avatar_url -}}" {% endif %} />
</div>
<div class="form-text">
<ul class="list-inline">
<li>You can use \n to create a new line.</li>
<li>You can remove the embed from links by adding &lt; and &gt; around the link. (For example &lt;{% raw %}{{entry_link}}{% endraw %}&gt;)</li>
</ul>
</div>
<hr class="border-secondary my-3" />
<h5>Embed content</h5>
<label for="title" class="col-sm-6 col-form-label">Title</label>
<input name="title" type="text" class="form-control bg-dark border-dark text-muted" id="title"
{% if title %} value="{{- title -}}" {% endif %} />
<label for="description" class="col-sm-6 col-form-label">Description</label>
<input name="description" type="text" class="form-control bg-dark border-dark text-muted"
id="description" {% if description %} value="{{- description -}}" {% endif %} />
<label for="color" class="col-sm-6 col-form-label">Embed color</label>
<input name="color" type="color" class="form-control form-control-color bg-dark border-dark text-muted"
id="color" {% if color %} value="{{- color -}}" {% endif %} />
<label for="image_url" class="col-sm-6 col-form-label">Image URL</label>
<input name="image_url" type="text" class="form-control bg-dark border-dark text-muted" id="image_url"
{% if image_url %} value="{{- image_url -}}" {% endif %} />
<div class="form-text">
Use {% raw %}{{image_1}}{% endraw %} to use the first image URL found in the entry. You can also configure how many images gets sent via the feed page.
</div>
<label for="thumbnail_url" class="col-sm-6 col-form-label">Thumbnail</label>
<input name="thumbnail_url" type="text" class="form-control bg-dark border-dark text-muted"
id="thumbnail_url" {% if thumbnail_url %} value="{{- thumbnail_url -}}" {% endif %} />
<hr class="border-secondary my-3" />
<h5>Author</h5>
<label for="author_name" class="col-sm-6 col-form-label">Author name</label>
<input name="author_name" type="text" class="form-control bg-dark border-dark text-muted"
id="author_name" {% if author_name %} value="{{- author_name -}}" {% endif %} />
<label for="author_url" class="col-sm-6 col-form-label">Author URL</label>
<input name="author_url" type="text" class="form-control bg-dark border-dark text-muted" id="author_url"
{% if author_url %} value="{{- author_url -}}" {% endif %} />
<label for="author_icon_url" class="col-sm-6 col-form-label">Author icon URL</label>
<input name="author_icon_url" type="text" class="form-control bg-dark border-dark text-muted"
id="author_icon_url" {% if author_icon_url %} value="{{- author_icon_url -}}" {% endif %} />
<hr class="border-secondary my-3" />
<h5>Footer</h5>
<label for="footer_text" class="col-sm-6 col-form-label">Footer text</label>
<input name="footer_text" type="text" class="form-control bg-dark border-dark text-muted"
id="footer_text" {% if footer_text %} value="{{- footer_text -}}" {% endif %} />
<label for="footer_icon_url" class="col-sm-6 col-form-label">Footer icon</label>
<input name="footer_icon_url" type="text" class="form-control bg-dark border-dark text-muted"
id="footer_icon_url" {% if footer_icon_url %} value="{{- footer_icon_url -}}" {% endif %} />
{% if is_steam_feed %}
<hr class="border-secondary my-3" />
<h5>Options</h5>
<div class="form-check mt-2">
<input class="form-check-input" type="checkbox" name="show_steam_game_icon_in_thumbnail"
id="show_steam_game_icon_in_thumbnail" value="true"
{% if show_steam_game_icon_in_thumbnail %}checked{% endif %}>
<label class="form-check-label" for="show_steam_game_icon_in_thumbnail">
Use Steam game icon as thumbnail override
</label>
</div>
{% endif %}
<hr class="border-secondary my-3" />
<h5>Webhook identity</h5>
<div class="form-text">
<ul class="list-inline">
<li>These override the webhook's display name and avatar (profile picture) for messages from this feed.</li>
<li>Leave blank to use the webhook's default name and avatar.</li>
<li>Username rules: 180 characters; cannot contain <code>@</code>, <code>#</code>, <code>:</code>, or <code>`</code>; cannot contain <code>clyde</code> or <code>discord</code>.</li>
<li>Avatar must be a full <code>http://</code> or <code>https://</code> image URL.</li>
</ul>
</div>
<label for="username" class="col-sm-6 col-form-label">Webhook name</label>
<input name="username" type="text" class="form-control bg-dark border-dark text-muted"
id="username" maxlength="80" placeholder="e.g. My Feed Bot"
{% if username %} value="{{- username -}}" {% endif %} />
<label for="avatar_url" class="col-sm-6 col-form-label">Webhook avatar</label>
<input name="avatar_url" type="text" class="form-control bg-dark border-dark text-muted"
id="avatar_url" placeholder="e.g. https://example.com/avatar.png or {% raw %}{{hoyolab_author_avatar_url}}{% endraw %}"
{% if avatar_url %} value="{{- avatar_url -}}" {% endif %} />
</div>
</div>
<!-- Add a hidden feed_url field to the form -->
<input type="hidden" name="feed_url" value="{{ feed.url }}" />
<!-- Submit button -->
<div class="d-md-flex">
<button class="btn btn-dark btn-sm">Update embed</button>
</div>
</form>
</div>
<!-- Add a hidden feed_url field to the form -->
<input type="hidden" name="feed_url" value="{{ feed.url }}" />
<!-- Submit button -->
<div class="d-md-flex">
<button class="btn btn-dark btn-sm">Update embed</button>
</div>
</form>
</div>
{% endblock content %}

View file

@ -1,9 +1,9 @@
{% extends "base.html" %}
{% block title %}
Extensions: {{ feed.title if feed.title else feed.url }} | discord-rss-bot
Extensions: {{ feed_title if feed_title else feed.url }} | discord-rss-bot
{% endblock title %}
{% block description %}
Enable or disable content extension plugins for {{ feed.title if feed.title else feed.url }}.
Enable or disable content extension plugins for {{ feed_title if feed_title else feed.url }}.
{% endblock description %}
{% block content %}
<div class="p-2 border border-dark">

View file

@ -1,9 +1,9 @@
{% extends "base.html" %}
{% block title %}
{{ feed.title if feed.title else feed.url }} | discord-rss-bot
{{ feed_title if feed_title else feed.url }} | discord-rss-bot
{% endblock title %}
{% block description %}
Review feed health, delivery settings, filters, webhook attachment, and update intervals for {{ feed.title if feed.title else feed.url }}.
Review feed health, delivery settings, filters, webhook attachment, and update intervals for {{ feed_title if feed_title else feed.url }}.
{% endblock description %}
{% block content %}
<div class="row g-3 feed-page">
@ -14,7 +14,7 @@
<div class="feed-page__content">
<h2 class="h3 mb-1">
<a class="text-muted text-decoration-none feed-page__wrap"
href="{{ feed.url }}">{{ feed | feed_display_name }}</a>
href="{{ feed.url }}">{{ feed | feed_display_name(reader) }}</a>
</h2>
<p class="text-muted mb-0">{{ total_entries }} entries</p>
</div>

View file

@ -72,9 +72,7 @@
<ul class="list-group list-unstyled mb-0">
{% for feed in domain_feeds %}
<li>
<a class="text-muted" href="/feed?feed_url={{ feed.url|encode_url }}">
{{ feed | feed_display_name }}
</a>
<a class="text-muted" href="/feed?feed_url={{ feed.url|encode_url }}">{{ feed | feed_display_name(reader) }}</a>
{% if not feed.updates_enabled %}<span class="text-warning">Disabled</span>{% endif %}
{% if feed.last_exception %}<span class="text-danger">({{ feed.last_exception.value_str }})</span>{% endif %}
</li>
@ -112,7 +110,7 @@
{% for broken_feed in broken_feeds %}
<a class="text-muted"
href="/feed?feed_url={{ broken_feed.url|encode_url }}">
{{ broken_feed | feed_display_name }}
{{ broken_feed | feed_display_name(reader) }}
</a>
{% endfor %}
</ul>
@ -126,9 +124,7 @@
{% for feed in feeds_without_attached_webhook %}
<li class="list-group-item bg-dark border-dark text-danger">
<div class="d-flex flex-wrap align-items-center gap-2">
<a class="text-muted" href="/feed?feed_url={{ feed.url|encode_url }}">
{{ feed | feed_display_name }}
</a>
<a class="text-muted" href="/feed?feed_url={{ feed.url|encode_url }}">{{ feed | feed_display_name(reader) }}</a>
{% if webhooks %}
<form action="/attach_feed_webhook"
method="post"

View file

@ -1,9 +1,9 @@
{% extends "base.html" %}
{% block title %}
Whitelist: {{ feed.title if feed.title else feed.url }} | discord-rss-bot
Whitelist: {{ feed_title if feed_title else feed.url }} | discord-rss-bot
{% endblock title %}
{% block description %}
Allow only matching entries from {{ feed.title if feed.title else feed.url }} to reach Discord.
Allow only matching entries from {{ feed_title if feed_title else feed.url }} to reach Discord.
{% endblock description %}
{% block content %}
<div class="row g-3 filter-page">