Files
Home-Assistant-Configs/custom_templates/sports.jinja

160 lines
8.7 KiB
Django/Jinja

{% from 'formatting.jinja' import cleanup %}
{% macro sports_str(team,type) %}
{% if type == 'start' %}
{% if state_attr(team,'league') in ['NFL','NCAAF'] %}
Kickoff
{% elif state_attr(team,'league') == 'MLB' %}
First pitch
{% elif state_attr(team,'league') == 'NHL' %}
Puck drop
{% endif %}
{% endif %}
{% endmacro %}
{% macro sports_pregame(team) %}
{% macro data() %}
{% if is_state(team,'PRE') %}
{% set date = state_attr(team,'date') | as_timestamp | timestamp_custom('%m-%d') %}
{% if date == now().strftime('%m-%d') %}
The {{ state_attr(team,'friendly_name') }} will be playing today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ state_attr(team,'opponent_name') }} at {{ state_attr(team,'venue') }}.
{{ sports_str(team,'start') }} is at {{ state_attr(team,'date') | as_timestamp | timestamp_custom('%I:%M %p') }}.
{% endif %}
{% endif %}
{% endmacro%}
{{ cleanup(data()) }}
{% endmacro %}
{% macro sports_main(team) %}
{% macro data() %}
{% if is_state(team,'POST') %}
{% set date = state_attr(team,'date') | as_timestamp | timestamp_custom('%m-%d') %}
{% set yday = (as_timestamp(now()) - (24*3600)) | timestamp_custom('%m-%d') %}
{% if date == now().strftime('%m-%d') %}
{% if state_attr(team,'clock') in ['postponed','Postponed'] %}
The {{ state_attr(team,'friendly_name') }} had their game postponed today, and it will be played at a later date.
{% elif (state_attr(team,'team_score') | int) == state_attr(team,'opponent_score') | int %}
The {{ state_attr(team,'friendly_name') }} tied in their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ state_attr(team,'opponent_name') }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}.
{% elif state_attr(team,'team_winner') == true %}
The {{ state_attr(team,'friendly_name') }} won their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ state_attr(team,'opponent_name') }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}.
{% elif state_attr(team,'opponent_winner') == true %}
The {{ state_attr(team,'friendly_name') }} lost their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ state_attr(team,'opponent_name') }} by a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }}.
{% endif %}
{% if state_attr(team,'clock') not in ['postponed','Postponed'] %}
This brings their record to {{ state_attr(team,'team_record') | replace("-"," and ") }} on the season.
{% endif %}
{% elif yday == date %}
{% if state_attr(team,'clock') in ['postponed','Postponed'] %}
The {{ state_attr(team,'friendly_name') }} had their game postponed yesterday, and it will be played at a later date.
{% elif (state_attr(team,'team_score') | int) == state_attr(team,'opponent_score') | int %}
The {{ state_attr(team,'friendly_name') }} tied in their game yesterday against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ state_attr(team,'opponent_name') }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}.
{% elif state_attr(team,'team_winner') == true %}
The {{ state_attr(team,'friendly_name') }} won their game yesterday against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ state_attr(team,'opponent_name') }} by a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}.
{% elif state_attr(team,'opponent_winner') == true %}
The {{ state_attr(team,'friendly_name') }} lost their game yesterday against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ state_attr(team,'opponent_name') }} by a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }}.
{% endif %}
{% if state_attr(team,'clock') not in ['postponed','Postponed'] %}
This brings their record to {{ state_attr(team,'team_record') | replace("-"," and ") }} on the season.
{% endif %}
{% endif %}
{% elif is_state(team,'IN') %}
{% if (state_attr(team,'team_score') | int) == (state_attr(team,'opponent_score') | int) %}
The {{ state_attr(team,'friendly_name') }} are currently tied in their game against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ state_attr(team,'opponent_name') }} with a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}.
{% elif (state_attr(team,'team_score') | int) > (state_attr(team,'opponent_score') | int) %}
The {{ state_attr(team,'friendly_name') }} are currently winning their game against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ state_attr(team,'opponent_name') }} with a score of {{ state_attr(team,'team_score') }} to {{ state_attr(team,'opponent_score') }}.
{% else %}
The {{ state_attr(team,'friendly_name') }} are currently losing their game against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ state_attr(team,'opponent_name') }} with a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }}.
{% endif %}
{% endif %}
{% endmacro %}
{{ cleanup(data()) }}
{% endmacro %}
{% macro sports_inhibit(team) %}
{% if is_state(team,'NOT_FOUND') %}
true
{% elif state_attr(team,'kickoff_in') %}
{{ 'months' in state_attr(team,'kickoff_in') or
'month' in state_attr(team,'kickoff_in') or
'weeks' in state_attr(team,'kickoff_in') }}
{% endif %}
{% endmacro %}
{% macro sports_today(team) %}
{% if states(team) != 'NOT_FOUND' %}
{% set date = state_attr(team,'date') | as_timestamp | timestamp_custom('%m-%d') %}
{% else %}
{% set date = 'none' %}
{% endif %}
{% if date == now().strftime('%m-%d') %}
{{ states(team) in ['PRE','IN'] }}
{% endif %}
{% endmacro %}
{% macro sports_updates(time) %}
{% macro data() %}
{% if time == 'pregame' %}
{% if is_state('binary_sensor.michigan_wolverines_inhibit','off') %}
{{ sports_pregame('sensor.michigan_wolverines') }}
{% endif %}
{% if is_state('binary_sensor.ohio_state_buckeyes_inhibit','off') %}
{{ sports_pregame('sensor.ohio_state_buckeyes') }}
{% endif %}
{% if is_state('binary_sensor.toledo_rockets_inhibit','off') %}
{{ sports_pregame('sensor.toledo_rockets') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_vikings_inhibit','off') %}
{{ sports_pregame('sensor.minnesota_vikings') }}
{% endif %}
{% if is_state('binary_sensor.san_francisco_49ers_inhibit','off') %}
{{ sports_pregame('sensor.san_francisco_49ers') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_twins_inhibit','off') %}
{{ sports_pregame('sensor.minnesota_twins') }}
{% endif %}
{% if is_state('binary_sensor.cleveland_guardians_inhibit','off') %}
{{ sports_pregame('sensor.cleveland_guardians') }}
{% endif %}
{% if is_state('binary_sensor.los_angeles_dodgers_inhibit','off') %}
{{ sports_pregame('sensor.los_angeles_dodgers') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
{{ sports_pregame('sensor.minnesota_wild') }}
{% endif %}
{% elif time == 'main' %}
{% if is_state('binary_sensor.michigan_wolverines_inhibit','off') %}
{{ sports_main('sensor.michigan_wolverines') }}
{% endif %}
{% if is_state('binary_sensor.ohio_state_buckeyes_inhibit','off') %}
{{ sports_main('sensor.ohio_state_buckeyes') }}
{% endif %}
{% if is_state('binary_sensor.toledo_rockets_inhibit','off') %}
{{ sports_main('sensor.toledo_rockets') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_vikings_inhibit','off') %}
{{ sports_main('sensor.minnesota_vikings') }}
{% endif %}
{% if is_state('binary_sensor.san_francisco_49ers_inhibit','off') %}
{{ sports_main('sensor.san_francisco_49ers') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_twins_inhibit','off') %}
{{ sports_main('sensor.minnesota_twins') }}
{% endif %}
{% if is_state('binary_sensor.cleveland_guardians_inhibit','off') %}
{{ sports_main('sensor.cleveland_guardians') }}
{% endif %}
{% if is_state('binary_sensor.los_angeles_dodgers_inhibit','off') %}
{{ sports_main('sensor.los_angeles_dodgers') }}
{% endif %}
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
{{ sports_main('sensor.minnesota_wild') }}
{% endif %}
{% endif %}
{% endmacro %}
{{ cleanup(data()) }}
{% endmacro %}
{% macro sports_datetime(team) %}
{{ as_timestamp(state_attr(team,'date')) | timestamp_custom('%Y-%m-%d %H:%M:%S') }}
{% endmacro%}