Mostrar jogos de futebol com transmissão televisiva

Esqueci-me de mencionar a atualização do Scrape’s sensor

Não sei qual é o ratio de atualizações que tem de forma inicial/standard mas é boa prática desabilitar a actualização automática, indo à integração “Scrape”, e à direita do sensor carregar nos 3 pontos. Aí tens as opções:

  • Reload
  • Rename
  • System options
  • Disable
  • Delete

Vais a “System options” e desabilitas a segunda opção: “Enable polling for updates.”

A forma ideal é através de uma automatização:

alias: Scrape - Automation
description: ""
trigger:
  - platform: time_pattern
    hours: /12 #mete o número de horas,dias, etc., que desejares a actualização
condition: []
action:
  - service: homeassistant.update_entity
    data: {}
    target:
      entity_id:
        - sensor.fcporto #exemplo - altera para o que tens
mode: single

Boas, penso que o website teve uma atualização no dia 21/02/2024, deixou de funcionar no meu, não sei se mais alguém teve a mesma situação. Tive a ver se conseguia perceber onde estava o erro, mas não encontrei. Alguém encontrou e tem solução? Isto dá mesmo muito jeito :smiley:

Bem, teve 3 anos a funcionar, alguma coisa devem ter mudado no site. Diariamente recebo a lista de jogos no telegram e deixei de receber. Nesta fase estou demasiado ocupado para fazer debugger e perceber o que mudou no site mas basicamente é preciso ver no nodered o que está a sair em cada nó para perceber onde houve a quebra e depois corrigir esse node. Conto resolver em breve.

Sim, eu sei, eu tenho usado. Eu tentei fazer isso, mas não sou especialista na coisa. Depois se conseguires resolver partilha a solução pf

1 Curtiu

A mim também deixou de funcionar desde o dia 21. A primeira mensagem que me apareceu no erro do node, era para atualizar o node red companion, agora instalado pelo hacs. Ao fim de fazer essa actualização, aparece então o verdadeiro erro do node de não funcionar. Alguma coisa a ver com a data!?

O fluxo começa pelo request ao site e depois tem 2 html nodes que fazem o parse ao site. Este parse está a vir a vazio. Verifiquei o site e o css onde está a informação associada das datas e jogos estão iguais. Testei outro flow que tenho para obter os preços dos combustiveis de um site e tambem o parse fica sem dados. Alguma coisa entre o request e parse que mudou e ainda nao percebi o quê mas vou continuar a explorar o tema.

1 Curtiu

Boa tarde.
O site deve estar a bloquear o scrape à página com os jogos na televisão. Utilizem o seguinte link para obter os dados: https://www.futebol365.pt/feed/aeiou/jogos-na-tv/
Deve resolver o problema.

Bom dia a todos, alguém já conseguiu ultrapassar o problema ?

Obrigado

Fiz uns testes com um python script e de facto parece que algo se passa.
O que é estranho; robot.txt:

User-agent: *
Disallow: /admin/
Disallow: /fusos-horarios/
Sitemap: https://www.futebol365.pt/sitemap.xml
Sitemap: https://www.futebol365.pt/news_sitemap.xml

Não inclui: /jogos-na-tv/


Anyway
Ultrapassando os 403’s codes com a adição de selenium ao script, e um argumento de headless-browser, ultrapassa isso mas nunca encontra elementos.

Experimentei depois o script com outro site: “https://tudonumclick.com/futebol/jogos-na-tv/

Resultados para element (“h3”)

Jogos na TV - Quarta-feira, 06 de Março

Resultados para element (".table-futebol.table.table-bordered.table-stripped")

00:30 Nacional Asunción Palestino SPORT TV1
11:00 Valadares Gaia FM Marítimo FM CANAL 11
15:00 Sp. Braga S19 Sporting S19 CANAL 11
17:45 Sporting Atalanta SPORT TV1
20:00 Man City Kobenhavn ELEVEN SPORTS 2
20:00 Real Madrid RB Leipzig ELEVEN SPORTS 1
22:00 CD Everton Unión La Calera SPORT TV3

O que parece resolver o nosso problema. Agora é uma questão de alterar o flow.
Fiz umas experiências, mas não tenho o habito de utilizar node-red… melhor alguém tratar disso. :sweat_smile:

Aqui continua sem dar, penso que é na parte da extração também, fiz ali uns testes e aquela variable está a vir vazia, agora não percebo muito de como mudar isto sinceramente e está a fazer muita falta, usava muito isto para me guiar, agora tenho de ir ao sofascore eheheh

Já que ninguém se aventurou com o Node-Red, fiz outra solução.

Quem não tiver, vá ao HACS e instale o Multiscrape. Depois de reiniciar, acrescente, no configuration.yaml:

multiscrape:
  - name: Football Data  
    log_response: true
    resource: https://tudonumclick.com/futebol/jogos-na-tv/
    scan_interval: 10800 #3horas
    sensor:
      - unique_id: football_date
        name: Football Date
        select: "section#page-content h3:nth-child(3)"
        value_template: |
          {{ value.split('- ')[1] }}
      - unique_id: football_game
        name: Football Game
        value_template: "{{ value_json[0] }}"
        attributes:
          - name: list
            select_list: "section#page-content table:nth-child(4)"
            value_template: |
              {{ value.split("   ") | map('trim') | map('replace', 'SPORTS', '') | reject('search', 'PFC') | list }}

Depois de actualizar o custom component:
Developer Tools > Yaml > Multiscrape Scrape Component

Criar uma Markdown Card, e pôr:

{{states('sensor.football_date') }} 
</font> <hr>
{% for item in state_attr('sensor.football_game', 'list') %}
- {{ item }}
{% endfor %}

O resultado será algo parecido:
Untitled-4

Edit:
Alterei o value_template:

value_template: |
  {{ value.split("   ") | map('trim') | list }}

Para resolver o facto de o site acrescentar um logo aos 3 grandes; o que fazia ocorrer algo como [exemplo do “FC Porto”]:
Untitled-6

Em vez de:
Untitled-7

E se, como o @huguitosilva1, quiserem eliminar o “SPORTS” do “ELEVEN SPORTS X”, usem:

value_template: |
  {{ value.split("   ") | map('trim') | map('replace', 'SPORTS', '') | list }}
1 Curtiu

Muito obrigado pela ajuda. Funcionou, só retirei os pontos de início e substitui SPORTS por nada para não ficar muito grande quando é a Eleven Sports. Top :grinning:

1 Curtiu

Realmente, sem os pontos fica melhor. :sweat_smile:

1 Curtiu

Tentei via node red até porque tenho 2 scrapes no mesmo site, um para obter os jogos e canais, outro para obter os jogos por competição e depois faço um cruzamento de dados mostrando o país e nome da competição.

Tentei diferentes bibliotecas de http request no node red mas não está a retornar o HTML da página. Vou continuar a explorar o tema.

2 Curtiram

Ugh… Um último acréscimo. :roll_eyes:

{{ value.split("   ") | map('trim') | map('replace', 'SPORTS', '') | reject('search', 'PFC') | list }}

Com esse template já a fila com jogos a dar no(a) PFC (imagino que seja algum canal brasileiro) não aparece.

Assim só surgem jogos em canais portugueses.

edit: Uma boa idea será também alterar o “scan_interval: 10800” (3 em 3h) - o site parece não actualizar de hora em hora; e imagino que não queremos a repetição do outro site a “bloquear” scrape.

Fiz umas alterações, se alguém quiser posso partilhar:
image

Ficou interessante, com os destaques.

Tendo vários dias, não fica demasiado convulso em dias como sexta, sábado e domingo, quando há muitos jogos?

Estou a contemplar é eliminar também as rows com “FM”, “S17”, “S19” e até “Canal 11”.

edit:

{{ value.split("   ") | map('trim') | reject('search', 'PFC') | reject('search', 'FM') | reject('search', 'S17') | reject('search', 'S19') | reject('search', 'CANAL 11') | list }}

Boas tardes,

Alguem conseguiu resolver a parte do node-red?

Isso é óptimo! Eu também gosto de futebol, então eu gostaria de ver o futebol muitas vezes

Boas, alguma coisa mudou no site onde estava a consultar a info dos jogos. Colocaram algum bloqueio que ao fazer o request, não está a ser possível ter acesso ao html da página.

Encontrei onde site semelhante e estou a construir um parser de forma a ter a informação semelhante. Quando concluir, partilho o flow e card.


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade