2 <title>{{ title }} — {{ author }}</title>
3 <link rel="shortcut icon" href='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300" fill="%23fff"><circle r="150" cx="150" cy="150" fill="%23f00"/><path d="m120 97v106l93-53"/></svg>'>
4 <link rel="stylesheet" href="/static/style.css">
6 {% import 'macros.imp.j2' as macros %}
8 <!--b style=font-size:large></b><hr-->
10 {% include 'messages.inc.j2' %}
12 <div id=main style="margin:auto">
13 <video controls poster="{{ poster }}" style="width:100%;height:calc(100% / {{ aspectr }});">
14 <source src="{{ video_url }}">
15 {% for cc in subtitles %}
16 <track label="{{ cc.name }}" kind="subtitles" srclang="{{ cc.code }}" src="{{ cc.url }}" {{ 'default' if not loop.counter }}>
21 <small><a href="/channel/{{ channel_id }}">{{ author }}</a></small></h1>
22 <details><summary>Description</summary>
23 <p style="white-space:pre-wrap">{{ description }}
26 <details><summary>Metadata</summary>
29 <dd>{{ length // 60 }}:{{ length % 60 }}
35 <dd>{{ rating | round(1) }}/5
37 <dd>{{ 'unlisted' if unlisted else 'public' }}
40 Available in {{ countries | length }} countries: {{ countries | join(', ') }}
43 <!-- not implemented warning:--><div style="background:red">{%for x in (infocards+endcards)|selectattr('content.error')%}{{x.content.error}}{%endfor%}</div>
44 <details><summary>Info- and Endcards</summary>
45 <!--TODO: don't show duplicates (e.g. same video/playlist in infocard and endscreen; G1m7goLCJDY, 5TkIe60y2GI). We want videos+playlists from infocards, channels+websites from endcards (wherever more info is available). -->
46 {% for card in infocards+endcards %}{#
47 #}{% set c = card.content %}{#
48 #}{% if card.type == 'VIDEO' %}{#
49 #}{% call macros.card(c.video_id, c.title) %}
50 <span class=channel>{{ c.author }} </span>
51 <span class=advanced>{{ c.length }}</span>
53 #}{% elif card.type == 'CHANNEL' and c.channel_id != channel_id %}{#
54 #}{% call macros.card_generic("/channel/"~c.channel_id, c.icons[250] if 'icons' in c else '', c.title) %}
55 <span class=channel>Channel</span>
56 <span class=advanced></span>
58 #}{% elif card.type == 'PLAYLIST' %}{#
59 #}{% call macros.card_generic("/playlist?list="~c.playlist_id, "https://i.ytimg.com/vi/"~c.video_id~"/mqdefault.jpg", c.title) %}
60 <span class=channel>{{ c.author }}</span>
61 <span class=advanced>{{ c.n_videos }} videos</span>
63 #}{% elif card.type == 'WEBSITE' %}{#
64 #}{% call macros.card_generic(c.url, c.icons[250] if 'icons' in c else '', c.title) %}
65 <span class=channel>{{ c.domain }}</span>