{% macro text_runs(runs) %} {%- if runs[0] is mapping -%} {%- for text_run in runs -%} {%- if text_run.get("bold", false) -%} {{ text_run["text"] }} {%- elif text_run.get('italics', false) -%} {{ text_run["text"] }} {%- else -%} {{ text_run["text"] }} {%- endif -%} {%- endfor -%} {%- else -%} {{ runs }} {%- endif -%} {% endmacro %} {% macro small_item(info) %}
{% if info['type'] == 'video' %} {{ info['duration'] }} {{ info['title'] }}
{{ info['author'] }}
{{ info['views'] }} {% elif info['type'] == 'playlist' %}
{{ info['size'] }}
{{ info['title'] }}
{{ info['author'] }}
{% else %} Error: unsupported item type {% endif %}
{% if info['type'] == 'video' %} {% endif %}
{% endmacro %} {% macro get_stats(info) %} {% if 'author_url' is in(info) %}
By {{ info['author'] }}
{% else %}
{{ info['author'] }}
{% endif %} {% if 'views' is in(info) %} {{ info['views'] }} {% endif %} {% if 'published' is in(info) %} {% endif %} {% endmacro %} {% macro medium_item(info) %}
{% if info['type'] == 'video' %} {{ info['duration'] }} {{ info['title'] }}
{{ get_stats(info) }}
{{ text_runs(info.get('description', '')) }} {{ info['badges']|join(' | ') }} {% elif info['type'] == 'playlist' %}
{{ info['size'] }}
{{ info['title'] }}
{{ get_stats(info) }}
{% elif info['type'] == 'channel' %} {{ info['title'] }} {{ info['subscriber_count'] }} {{ info['size'] }} {{ text_runs(info['description']) }} {% else %} Error: unsupported item type {% endif %}
{% if info['type'] == 'video' %} {% endif %}
{% endmacro %} {% macro item(info) %} {% if info['item_size'] == 'small' %} {{ small_item(info) }} {% elif info['item_size'] == 'medium' %} {{ medium_item(info) }} {% else %} Error: Unknown item size {% endif %} {% endmacro %} {% macro page_buttons(estimated_pages, url, parameters_dictionary) %} {% set current_page = parameters_dictionary.get('page', 1)|int %} {% set parameters_dictionary = parameters_dictionary.to_dict() %} {% if current_page is le(5) %} {% set page_start = 1 %} {% set page_end = [9, estimated_pages]|min %} {% else %} {% set page_start = current_page - 4 %} {% set page_end = [current_page + 4, estimated_pages]|min %} {% endif %} {% for page in range(page_start, page_end+1) %} {% if page == current_page %}
{{ page }}
{% else %} {# IMPORTANT: Jinja SUCKS #} {# https://stackoverflow.com/questions/36886650/how-to-add-a-new-entry-into-a-dictionary-object-while-using-jinja2 #} {% set _ = parameters_dictionary.__setitem__('page', page) %} {{ page }} {% endif %} {% endfor %} {% endmacro %}