TV LG - youtube play

Hi,

although is a small contribution, hope you might find it useful .
play most recent youtube on a channel , directly in LG TV

First , use media extractor to scrape youtube latest video ID

  - platform: scrape
    resource: 'https://www.youtube.com/feeds/videos.xml?channel_id=UCFUyy6LM16KiI-VdA6pMO0Q'
    name: yt_futurist
    value_template: '{{ value }}'
    select: yt\:videoid

then, create a script to play it to your LG TV

futurist:
  alias: futurist
  sequence:
    - service: webostv.command
      data_template:
        entity_id: media_player.tv_lg_2
        command: "system.launcher/launch"
        payload:
          id: "youtube.leanback.v4"
          contentId: "{{ states('sensor.yt_futurist') }}"

I’m using a Lovelace Glance to execute the script

entities:
  - entity: script.futurist
    image: /local/youtube.png
    show_state: false
    tap_action:
      action: toggle
type: glance

Enjoy :slight_smile:

5 Likes

Very nice found!

For future reference, I didn’t don’t use media extractor but scrape, to scrape the last video ID from that XML url.

Your yaml is spot on though :ok_hand:

https://www.home-assistant.io/integrations/scrape/ :point_left: this sensor is the scrape sensor.

Your option is designed for specific video content. But it would be much more interesting when the search for content on request is launched. How, for example, to launch a youtube channel search for a query on a topic of interest?

For understanding, I will give examples of how the search strings on youtube look like

This is what the youtube search bar looks like

https://www.youtube.com/results?search_query=

This is how the youtube search bar looks with an indication of the search topic, for example, “documentaries about space”

www.youtube.com/results?search_query=documentaries+about+space

This is how the youtube search bar looks using variables, so that when a trigger is triggered, this search is launched
https://www.youtube.com/results?search_query={{ trigger.event.data.book|replace(" ", "+") }}

Now let’s get to the point

We have a smart speaker with a voice assistant Alice, an analogue of your Alexa, when I ask you to find something, for example: “Alice, find documentaries about space,” then an event appears in the Home Assistant that looks like this

{
    "event_type": "yandex_intent",
    "data": {
        "text": "Alice find documentaries about space",
        "command": "Alice find documentaries about space",
        "intent": "YANDEX.BOOK.SEARCH",
        "book": "documentaries about space"
    },
    "origin": "LOCAL",
    "time_fired": "2021-10-14T14:20:02.517357+00:00",
    "context": {
        "id": "e802961a0196af60036511eb117d398f",
        "parent_id": null,
        "user_id": null
    }
}

Then, thanks to these events, you can create automation, where the trigger is an event

platform: event
event_type: yandex_intent
event_data:
  intent: YANDEX.BOOK.SEARCH

and in action it is used

{{ trigger.event.data.book|replace(" ", “+”) }}

As a result, we can combine and run a search on the topic of interest to us. There are two options below, but only one option works. This, as I understand it, is due to the feature of webos integration

This option is working, but it opens in the browser and does not work in the youtube app

service: webostv.command
data:
  entity_id: media_player.tv_bedroom
  command: system.launcher/open
  payload:
    target: >-
      https://www.youtube.com/results?search_query={{ trigger.event.data.book|replace(" ", "+") }}

This option is not working, it gives the error “This video is not available”

service: webostv.command
data:
  command: system.launcher/launch
  entity_id: media_player.tv_bedroom
  payload:
    id: youtube.leanback.v4
    contentId: https://www.youtube.com/results?search_query={{ searsh | replace(" ", "+") }}
Текст на русском (Text in Russian)

Ваш вариант рассчитан для конкретного видеоконтента. Но намного интереснее было бы, когда запускается поиск контента по запросу. Как к примеру запустить на youtube поиск каналов по запросу на интересующую тематику?

Для понимания приведу примеры как выглядят строки поиска на youtube

Так выглядит поисковая строка youtube

https://www.youtube.com/results?search_query=

Так выглядит поисковая строка youtube с указанием темы поиска, например “документальные фильмы про космос”

www.youtube.com/results?search_query=documentaries+about+space

Так выглядит поисковая строка youtube с использованием переменных, чтобы при срабатывании триггера этот поиск запускался
https://www.youtube.com/results?search_query={{ trigger.event.data.book|replace(" ", "+") }}

Теперь перейдем к сути

У нас есть умная колонка с голосовым помощником Алиса, аналог вашей Алексы, когда я прошу найти что-то, например: “Алиса, найди документальные фильмы про космос”, то в Home Assistant появляется событие, которое выглядит вот таким образом

{
    "event_type": "yandex_intent",
    "data": {
        "text": "алиса найди документальные фильмы про космос",
        "command": "алиса найди документальные фильмы про космос",
        "intent": "YANDEX.BOOK.SEARCH",
        "book": "документальные фильмы про космос"
    },
    "origin": "LOCAL",
    "time_fired": "2021-10-14T14:20:02.517357+00:00",
    "context": {
        "id": "e802961a0196af60036511eb117d398f",
        "parent_id": null,
        "user_id": null
    }
}

То благодаря этим событиям можно создать автоматизацию, где триггером выступает событие

platform: event
event_type: yandex_intent
event_data:
  intent: YANDEX.BOOK.SEARCH

а в действии используется

{{ trigger.event.data.book|replace(" ", “+”) }}

В итоге можем объединить и запускать поиск по интересующейся нас тематики. Ниже представлены два варианта, но работает только один вариант. Это, как я понял, что связано с особенностью интеграции webos

Этот вариант рабочий, но он открывается в браузере и не работает в приложении youtube

service: webostv.command
data:
  entity_id: media_player.tv_bedroom
  command: system.launcher/open
  payload:
    target: >-
      https://www.youtube.com/results?search_query={{ trigger.event.data.book|replace(" ", "+") }}

Этот вариант не рабочий, выдает ошибку “Это видео не доступно”

service: webostv.command
data:
  command: system.launcher/launch
  entity_id: media_player.tv_bedroom
  payload:
    id: youtube.leanback.v4
    contentId: https://www.youtube.com/results?search_query={{ searsh | replace(" ", "+") }}