Cache images instead of serve from Twitch

This commit is contained in:
Joakim Hellsén 2025-09-13 06:37:35 +02:00
commit b97118cffd
16 changed files with 340 additions and 30 deletions

View file

@ -18,11 +18,11 @@
</p>
{% endif %}
<!-- Campaign image -->
{% if campaign.image_url %}
{% if campaign.image_best_url or campaign.image_url %}
<img id="campaign-image"
height="160"
width="160"
src="{{ campaign.image_url }}"
src="{{ campaign.image_best_url|default:campaign.image_url }}"
alt="{{ campaign.name }}">
{% endif %}
<!-- Campaign description -->
@ -117,12 +117,12 @@
<tr id="drop-{{ drop.drop.id }}">
<td>
{% for benefit in drop.drop.benefits.all %}
{% if benefit.image_asset_url %}
{% if benefit.image_best_url or benefit.image_asset_url %}
<img height="160"
width="160"
style="object-fit: cover;
margin-right: 3px"
src="{{ benefit.image_asset_url }}"
src="{{ benefit.image_best_url|default:benefit.image_asset_url }}"
alt="{{ benefit.name }}">
{% else %}
<img height="160"

View file

@ -53,8 +53,8 @@
style="margin-bottom: 3rem">
<div style="display: flex; gap: 1rem;">
<div style="flex-shrink: 0;">
{% if game_group.grouper.box_art_base_url %}
<img src="{{ game_group.grouper.box_art_base_url }}"
{% if game_group.grouper.box_art_best_url %}
<img src="{{ game_group.grouper.box_art_best_url }}"
alt="Box art for {{ game_group.grouper.display_name }}"
width="120"
height="160"
@ -104,9 +104,9 @@
<a id="campaign-link-{{ campaign.id }}"
href="{% url 'twitch:campaign_detail' campaign.id %}"
style="text-decoration: none">
{% if campaign.image_url %}
{% if campaign.image_best_url or campaign.image_url %}
<img id="campaign-image-{{ campaign.id }}"
src="{{ campaign.image_url }}"
src="{{ campaign.image_best_url|default:campaign.image_url }}"
alt="Campaign artwork for {{ campaign.name }}"
width="120"
height="120"

View file

@ -33,8 +33,8 @@
<div class="campaign-benefits">
{% for benefit in campaign.sorted_benefits %}
<span class="benefit-item" title="{{ benefit.name }}">
{% if benefit.image_asset_url %}
<img src="{{ benefit.image_asset_url }}"
{% if benefit.image_best_url or benefit.image_asset_url %}
<img src="{{ benefit.image_best_url|default:benefit.image_asset_url }}"
alt="{{ benefit.name }}"
width="24"
height="24"
@ -77,8 +77,8 @@
<div class="campaign-benefits">
{% for benefit in campaign.sorted_benefits %}
<span class="benefit-item" title="{{ benefit.name }}">
{% if benefit.image_asset_url %}
<img src="{{ benefit.image_asset_url }}"
{% if benefit.image_best_url or benefit.image_asset_url %}
<img src="{{ benefit.image_best_url|default:benefit.image_asset_url }}"
alt="{{ benefit.name }}"
width="24"
height="24"
@ -121,8 +121,8 @@
<div class="campaign-benefits">
{% for benefit in campaign.sorted_benefits %}
<span class="benefit-item" title="{{ benefit.name }}">
{% if benefit.image_asset_url %}
<img src="{{ benefit.image_asset_url }}"
{% if benefit.image_best_url or benefit.image_asset_url %}
<img src="{{ benefit.image_best_url|default:benefit.image_asset_url }}"
alt="{{ benefit.name }}"
width="24"
height="24"

View file

@ -46,7 +46,7 @@ Hover over the end time to see the exact date and time.
flex-shrink: 0">
<div>
<a href="{% url 'twitch:campaign_detail' campaign.id %}">
<img src="{{ campaign.image_url }}"
<img src="{{ campaign.image_best_url|default:campaign.image_url }}"
alt="Image for {{ campaign.name }}"
width="120"
height="120"

View file

@ -29,7 +29,7 @@
<li id="campaign-{{ c.id }}">
<a href="{% url 'twitch:campaign_detail' c.id %}">{{ c.name }}</a>
(Game: <a href="{% url 'twitch:game_detail' c.game.id %}">{{ c.game.display_name }}</a>)
- URL: {{ c.image_url|default:'(empty)' }}
- URL: {{ c.image_best_url|default:c.image_url|default:'(empty)' }}
</li>
{% endfor %}
</ul>
@ -53,7 +53,7 @@
{% else %}
(Game: Not linked)
{% endif %}
- URL: {{ b.image_asset_url|default:'(empty)' }}
- URL: {{ b.image_best_url|default:b.image_asset_url|default:'(empty)' }}
</li>
{% endwith %}
{% endfor %}

View file

@ -9,11 +9,11 @@
{% if game.display_name != game.name and game.name %}<small>({{ game.name }})</small>{% endif %}
</h1>
<!-- Game image -->
{% if game.box_art_url %}
{% if game.box_art_best_url %}
<img id="game-image"
height="160"
width="160"
src="{{ game.box_art_url }}"
src="{{ game.box_art_best_url }}"
alt="{{ game.name }}">
{% endif %}
<!-- Game owner -->
@ -58,8 +58,8 @@
{% comment %}Show unique benefits sorted alphabetically{% endcomment %}
{% for benefit in campaign.sorted_benefits %}
<span class="benefit-item" title="{{ benefit.name }}">
{% if benefit.image_asset_url %}
<img src="{{ benefit.image_asset_url }}"
{% if benefit.image_best_url or benefit.image_asset_url %}
<img src="{{ benefit.image_best_url|default:benefit.image_asset_url }}"
alt="{{ benefit.name }}"
width="24"
height="24"
@ -93,8 +93,8 @@
<div class="campaign-benefits">
{% for benefit in campaign.sorted_benefits %}
<span class="benefit-item" title="{{ benefit.name }}">
{% if benefit.image_asset_url %}
<img src="{{ benefit.image_asset_url }}"
{% if benefit.image_best_url or benefit.image_asset_url %}
<img src="{{ benefit.image_best_url|default:benefit.image_asset_url }}"
alt="{{ benefit.name }}"
width="24"
height="24"
@ -129,8 +129,8 @@
{% comment %}Show unique benefits sorted alphabetically{% endcomment %}
{% for benefit in campaign.sorted_benefits %}
<span class="benefit-item" title="{{ benefit.name }}">
{% if benefit.image_asset_url %}
<img src="{{ benefit.image_asset_url }}"
{% if benefit.image_best_url or benefit.image_asset_url %}
<img src="{{ benefit.image_best_url|default:benefit.image_asset_url }}"
alt="{{ benefit.name }}"
width="24"
height="24"

View file

@ -22,8 +22,8 @@
flex: 1 1 160px;
text-align: center">
<div style="margin-bottom: 0.25rem;">
{% if item.game.box_art_base_url %}
<img src="{{ item.game.box_art_base_url }}"
{% if item.game.box_art_best_url %}
<img src="{{ item.game.box_art_best_url }}"
alt="Box art for {{ item.game.display_name }}"
width="180"
height="240"