{% extends "base.html.j2" %} {% import 'macros.imp.j2' as macros %} {% block title %}{{ title | e }} — {{ author | e }}{% endblock %} {% block more_head %} {# Note: the following line was adopted from invidious and is parsed as a regex by yt-dlp. Do not modify! #} {% endblock %} {% block content %} {% if video_url %}
{% if '/api/manifest/hls_variant/' in video_url %}{#todo: this is ugly!#} {% endif %}
{% else %}{#TODO: this'll break livestreams #} {% endif %} {% if video_error %}
{{ errdetails }} Watch on Invidious or Youtube
{% endif %}

{{ title | e }}
{{ author | e }}

Description

{{ description | e }}

Metadata
Duration
{{ length | format_time }}
Views
{{ '{0:,}'.format(views | int)|replace(",","'") }}
Visibility
{{ 'unlisted' if unlisted else 'public' }}
Resolution {% for v in stream_map.muxed|selectattr("qualityLabel", "ne", "144p")|sort(attribute='height', reverse=True) %} {% set active = v.url == video_url %} {% set itag_url = url_for('.watch', v=video_id, t=request.args.t, itag=v.itag) %}
{{v.qualityLabel}} {% else %}
Adaptive {# livestreams have no muxed formats#} {% endfor %}
More Actions
Endcards
{% for card in all_cards %} {# Note: no point in displaying the current channels's channel card #} {{ macros.typed_card(card) if not (card.type == 'CHANNEL' and card.content.channel_id == channel_id) }} {% endfor %} {{ macros.dummycard() }}
{% endblock %}