{% macro shared_style() %} {% endmacro %} {% macro hidden_redirect_back(fragment="") %} {% endmacro %} {% macro no_input_post_form(uri, text, fragment="") -%}
{{ hidden_redirect_back(fragment=fragment) }}
{%- endmacro %} {% macro post_form(uri, key, val, text, fragment="") %}
{{ hidden_redirect_back(fragment=fragment) }} {% if caller is defined %} {{ caller() }} {% endif %}
{% endmacro %} {% macro as_play_link(element, symbol='▶️') -%} {# TODO do not hardcode certain extractors here #} {% if element.extractor_name in ["ytdl", "youtube"] %} {%- set opts = { "video_uri": element.primary_uri, "start": element.progress, } -%} {{ symbol | safe }} {% endif %} {%- endmacro -%} {% macro _navigation() %} {% set links = { "🏠 Home"|safe: "/", "Latest Media": "/media", "Short Media": "/media/short", "Long Media": "/media/long", "Unsorted": "/media/unsorted", "Collections": "/collection", "All Collections": "/collection/all", "📌 Collections"|safe: "/collection/pinned", "Collections To Watch": "/collection/to_watch", "Statistics": "/stats", "Tags": "/tag", "Add Media": "/media/extract", "Add Collection": "/collection/extract", } %} {%- endmacro %} {% macro _sidebar() %} {%- endmacro %} {% macro _select_view() %}
X
videos selected
{%- endmacro %} {% macro body_header() %} {{ _navigation() }} {{ _sidebar() }} {{ _select_view() }} {%- endmacro %} {% macro media_element_buttons(element, show_fragment=True) %} {% set api_uri = "/api/media/" + element.id|string %} {% set fragment = ("media_element_" + element.id|string) if show_fragment else None %} {{ as_play_link(element) }} {% if element.watched %} {{ post_form(api_uri, "watched", "false", "Unmark ✅"|safe, fragment) }} {% elif element.ignored %} {{ post_form(api_uri, "ignored", "false", "Unmark ❎"|safe, fragment) }} {% else %} {{ post_form(api_uri, "watched", "true", "✅"|safe, fragment) }} {{ post_form(api_uri, "ignored", "true", "❎"|safe, fragment) }} {% endif %} {% endmacro %} {% macro media_thumbnail_buttons( element, show_fragment=True, show_rating=False ) %} {% set api_uri = "/api/media/" + element.id|string %} {% set fragment = ("media_element_" + element.id|string) if show_fragment else None %} {% if element.watched %} {{ as_play_link(element, symbol='▷') }} {{ post_form(api_uri, "watched", "false", "✅"|safe, fragment) }} {% elif element.ignored %} {{ as_play_link(element, symbol='▷') }} {{ post_form(api_uri, "ignored", "false", "❎"|safe, fragment) }} {% else %} {{ post_form(api_uri, "watched", "true", "✓"|safe, fragment) }} {{ as_play_link(element, symbol='▷') }} {{ post_form(api_uri, "ignored", "true", "✕"|safe, fragment) }} {% endif %} {% if show_rating %} {{ post_form("/cookies/rating/positive", "media_id", element.id|string, "+", fragment) }} {{ post_form("/cookies/rating/negative", "media_id", element.id|string, "-", fragment) }} {% endif %} {% endmacro %} {% macro link_position_marker(link, prefix=false) -%} {{- prefix and (link.season != 0 or link.episode != 0) | tenary(", ", "") -}} {%- if link.season != 0 -%} Season {{ link.season }} {{- (link.episode != 0) | tenary(", ", "") -}} {%- endif -%} {%- if link.episode != 0 -%} Episode {{ link.episode }} {%- endif -%} {%- endmacro %} {% macro media_thumbnail_view( element=None, link=None, check_considered=True, is_considered=True, link_collection=True, show_rating=False, title=None, ) %} {% set element = link.element if link else element %}
Thumbnail for {{ element.title }} {% if link == None %} {% set link = element.detected_playlists | list | first_and_only %} {% endif %} {% if link and (link.season or link.episode) %} {%- if link.season != 0 -%} s{{ "%02d" % link.season }} {%- endif -%} {%- if link.episode != 0 -%} e{{ "%02d" % link.episode }} {%- endif -%} {% endif %}
{{ media_thumbnail_buttons(element, show_rating=show_rating) }}
{% if caller is defined %}
{{ caller() }}
{% else %} {% endif %} {{ element.release_date | time_since }} {%- if element.started -%} {{ element.left_length | timedelta }} ({{ element.length | timedelta }}) {%- else -%} {{- element.length | timedelta -}} {%- endif -%}
{{ title or element.title }}
{%- endmacro %} {% macro media_thumbnail_list( elements=None, links=None, check_considered=True, link_collection=True, show_rating=False, titles=None, ) %} {%- set l = elements or links -%} {%- set considered = (links|map(attribute="element") if links else elements)|map(attribute="id")|are_considered -%}
{% for o in l %} {% set elem = o.element if links else o %} {{ media_thumbnail_view( element=o if not links else None, link=o if links else None, check_considered=False, is_considered=considered[elem.id] if check_considered else True, link_collection=link_collection, show_rating=show_rating, title=titles[loop.index0] if titles else None, ) }} {% endfor %}
{%- endmacro %} {% macro media_entry_content(element, show_fragment=True) %} {{ media_element_buttons(element, show_fragment=show_fragment) }} {{ element.release_date.strftime("%d.%m.%Y") }} {{ element.length | timedelta }} {{ element.title }} {%- endmacro %} {% macro link_entry_content(link, show_fragment=True) %} {{ media_entry_content(link.element, show_fragment=show_fragment) -}} {{- link_position_marker(link, prefix=true) -}} {%- endmacro %} {% macro collection_entry_content(collection) %} {{ collection.title }} {%- endmacro %} {% macro media_entry(element, show_fragment=True) %}
  • {{ media_entry_content(element, show_fragment=show_fragment) }}
  • {%- endmacro %} {% macro link_entry(link, show_fragment=True) %}
  • {{ link_entry_content(link, show_fragment=show_fragment) }}
  • {%- endmacro %} {% macro collection_entry(collection) %}
  • {{ collection_entry_content(collection, show_fragment=show_fragment) }}
  • {%- endmacro %} {% macro media_table(media_list) %} {% for media in media_list %} {% endfor %}
    Date ⏲️ Title
    {{- media.release_date.strftime("%d.%m.%Y") -}} {{- media.left_length | timedelta -}} {{- media_element_buttons(media) -}} {{ media.title }}
    {%- endmacro %} {% macro link_differ_table(link_list) %} {% for link in link_list %} {% endfor %}
    Date ⏲️ Title From Collection
    {{- link.element.release_date.strftime("%d.%m.%Y") -}} {{- link.element.left_length | timedelta -}} {{- media_element_buttons(link.element) -}} {{ link.element.title }} {{ link.collection.id }} {{- link_position_marker(link, prefix=true) -}}
    {%- endmacro %} {% macro tag_list(tags) -%} {%- for t in tags | sort(attribute="title") -%} {%- if loop.index > 1 -%} {{ " | " }} {%- endif -%} {{ t.title }} {%- endfor -%} {%- endmacro %} {% macro tag_table(tag_list) %} {% for tag in tag_list %} {{ tag_table_entry(tag) }} {% endfor %}
    Id Title Use for Pref. Notes
    {%- endmacro %} {% macro tag_table_entry(tag) %} {%- set api_uri = "/api/tag/" + tag.id|string -%} {%- set fragment = "tag_" + tag.id|string -%} {{- tag.id -}} {{- tag.title -}} {{ post_form(api_uri, "use_for_preferences", tag.use_for_preferences | tenary("false", "true"), tag.use_for_preferences | tenary("Yes", "no"), fragment) }} {{- tag.notes or "" -}} {%- endmacro %}