URIs do YouTube falham ao renderizar miniaturas quando em caixa única

  1. https://youtube.com/shorts/Cs3sTnLO6EE

  2. https://www.youtube.com/watch?v=Cs3sTnLO6EE&lc=Ugyi1VtrCVd2POTc82N4AaABAg#:~:text=A%20Screencast%20Of%20LinkedIn%20Persona%20Verification%20Failure

…tornar-se uma caixa transparente:

O DOM mostra:

<img src="" width="480" height="360" title=" - YouTube" style="aspect-ratio: 480 / 360;">

No entanto, eles renderizam quando postados:

1 curtida

Confirmado, boa observação, vou colocar um pr-welcome nisso por enquanto e deixar um aviso para a equipe analisar.

1 curtida

Este é um caso interessante, consigo reproduzir os problemas com os links no OP aqui no Meta, mas localmente e em nosso site interno do Discourse eles são buscados e renderizados corretamente:

@rokejulianlockhart esses links não estão renderizando corretamente em seu próprio site, ou apenas não aqui no Meta?

1 curtida

@martin, alguns outros também:

Não-Shorts

Com https://www.youtube.com/watch?v=Cs3sTnLO6EE&lc=Ugyi1VtrCVd2POTc82N4AaABAg#:~:text=A%20Screencast%20Of%20LinkedIn%20Persona%20Verification%20Failure, isso se reproduz em:

  1. discuss.kde.org/new-topic

    [1]

  2. forum.fairphone.com/new-topic

    [1:1]

No entanto, em discussion.fedoraproject.org, ele é renderizado:

[1:2]

Shorts

Com https://youtube.com/shorts/Cs3sTnLO6EE, o seguinte é reproduzido:

…em:

  1. discuss.kde.org/new-topic

    [1:3]

  2. forum.fairphone.com/new-topic

    [1:4]

No entanto, como antes, em discussion.fedoraproject.org, ele é renderizado:

[1:5]

O que o Fedora está fazendo tão corretamente?


  1. bugs.kde.org/show_bug.cgi?id=511477#c1 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

2 curtidas

Este problema foi resolvido? Abri um tópico para um problema semelhante que está ocorrendo atualmente no meu painel.

@hameedacpa, isso é completamente irrelevante para isso, porque isto é sobre o visualizador. Além disso, você pode confirmar que não foi corrigido simplesmente utilizando o visualizador. Sugiro que você instale um tradutor.

1 curtida

Encontrei este tópico incluindo um problema parcial que também estou enfrentando

1 curtida

@hameedacpa, isso é semelhante, embora eu duvide que seja equivalente. A presença de um ícone de miniatura inválido parece demonstrar isso, juntamente com a proporção diferente da <img>. Se você colocar esses detalhes em 387672/1, eles serão úteis lá. Se forem meramente diferenças causadas pelo navegador, será triado como um duplicado parcial disso.

Nesse sentido, inclua a versão do seu navegador, a versão do Discourse e a marcação real do conteúdo renderizado nesse tópico citado. Atualmente, está desprovido de qualquer coisa, exceto uma captura de tela; você precisa se esforçar para receber assistência não remunerada.

Algo está dando errado em nosso fluxo do Onebox, acho que tem a ver com redirecionamento/FinalDestination. Se eu usar curl assim:

curl -L https://youtube.com/shorts/Cs3sTnLO6EE

Consigo encontrar o title e outras tags meta na resposta:

curl -L https://youtube.com/shorts/Cs3sTnLO6EE | htmlq 'head > meta'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0   0     0   0     0     0     0  --:--:-- --:--:-- --:--:--     0
100 947221   0 947221   0     0 406174     0  --:--:--  0:00:02 --:--:-- 504109
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content="ApvK67ociHgr2egd6c2ZjrfPuRs8BHcvSggogIOPQNH7GJ3cVlyJ1NOq/COCdj0+zxskqHt9HgLLETc8qqD+vwsAAABteyJvcmlnaW4iOiJodHRwczovL3lvdXR1YmUuY29tOjQ0MyIsImZlYXR1cmUiOiJQcml2YWN5U2FuZGJveEFkc0FQSXMiLCJleHBpcnkiOjE2OTUxNjc5OTksImlzU3ViZG9tYWluIjp0cnVlfQ==" http-equiv="origin-trial">
<meta content="rgba(255, 255, 255, 0.98)" name="theme-color">
<meta content="A Screencast Of LinkedIn Persona Verification Failure" name="title">
<meta content="For https://www.linkedin.com/help/linkedin/cases/73171318#:~:text=Thanks%20for%20contacting%20us%20about,to%20troubleshoot%20any%20additional%20causes." name="description">
...
 curl -L https://youtube.com/shorts/Cs3sTnLO6EE | htmlq 'head > title'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0   0     0   0     0     0     0  --:--:-- --:--:-- --:--:--     0
100 992110   0 992110   0     0 445530     0  --:--:--  0:00:02 --:--:-- 739941
<title>A Screencast Of LinkedIn Persona Verification Failure - YouTube</title>

No entanto, quando recebo a resposta através do nosso código do oneboxer, estas são as únicas tags (exceto as de script + style) que recebo no <head>:

uri = FinalDestination.new("https://youtube.com/shorts/Cs3sTnLO6EE", Oneboxer.get_final_destination_options("https://youtube.com/shorts/Cs3sTnLO6EE")).resolve
doc2 = Onebox::Helpers.fetch_response(uri)
Nokogiri.HTML(doc2).css("head").children.each do |headel|
  next if headel.name == "script" || headel.name == "style"
  puts headel.to_s
end; nil;

<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="origin-trial" content="ApvK67ociHgr2egd6c2ZjrfPuRs8BHcvSggogIOPQNH7GJ3cVlyJ1NOq/COCdj0+zxskqHt9HgLLETc8qqD+vwsAAABteyJvcmlnaW4iOiJodHRwczovL3lvdXR1YmUuY29tOjQ0MyIsImZlYXR1cmUiOiJQcml2YWN5U2FuZGJveEFkc0FQSXMiLCJleHBpcnkiOjE2OTUxNjc5OTksImlzU3ViZG9tYWluIjp0cnVlfQ==">
<link rel="shortcut icon" href="https://www.youtube.com/s/desktop/ace6261e/img/favicon.ico" type="image/x-icon">
<link rel="icon" href="https://www.youtube.com/s/desktop/ace6261e/img/favicon_32x32.png" sizes="32x32">
<link rel="icon" href="https://www.youtube.com/s/desktop/ace6261e/img/favicon_48x48.png" sizes="48x48">
<link rel="icon" href="https://www.youtube.com/s/desktop/ace6261e/img/favicon_96x96.png" sizes="96x96">
<link rel="icon" href="https://www.youtube.com/s/desktop/ace6261e/img/favicon_144x144.png" sizes="144x144">
<link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;family=YouTube+Sans:wght@300..900&amp;display=swap" nonce="kFtYVVw9wWKkoPdOJkO9xQ">
<link rel="stylesheet" href="/s/player/65578ad1/www-player.css" nonce="kFtYVVw9wWKkoPdOJkO9xQ">
<link rel="stylesheet" href="https://www.youtube.com/s/desktop/ace6261e/cssbin/www-main-desktop-player-skeleton.css" nonce="kFtYVVw9wWKkoPdOJkO9xQ">
<link rel="stylesheet" href="https://www.youtube.com/s/desktop/ace6261e/cssbin/www-onepick.css" nonce="kFtYVVw9wWKkoPdOJkO9xQ">
<link rel="stylesheet" href="https://www.youtube.com/s/_/ytmainappweb/_/ss/k=ytmainappweb.kevlar_base.dsnGl9m3_bM.L.X.O/am=AAAgAAgk/d=0/rs=AGKMywEVyAGSU99VwQpoLFio5FrCvZ1WpA" nonce="kFtYVVw9wWKkoPdOJkO9xQ">
<meta name="theme-color" content="rgba(255, 255, 255, 0.98)">
<link rel="search" type="application/opensearchdescription+xml" href="https://www.youtube.com/opensearch?locale=en_US" title="YouTube">
<link rel="manifest" href="/manifest.webmanifest" crossorigin="use-credentials">
<link rel="canonical" href="undefined">
<link rel="alternate" media="handheld" href="https://m.youtube.com/shorts/Cs3sTnLO6EE">
<link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.youtube.com/shorts/Cs3sTnLO6EE">
<title> - YouTube</title>
<meta name="title" content="">
<meta name="description" content="Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.">
<meta name="keywords" content="video, sharing, camera phone, video phone, free, upload">
<link rel="alternate" href="android-app://com.google.android.youtube/http/www.youtube.com/shorts/Cs3sTnLO6EE">
<link rel="alternate" href="ios-app://544007664/vnd.youtube/www.youtube.com/shorts/Cs3sTnLO6EE">

Pensei que talvez este ignore_redirects estivesse causando isso, mas se eu modificar as opções do FD não fez diferença:

Suspeito que o YouTube provavelmente está reduzindo a raspagem porque eles estão tendo o mesmo problema de raspagem de IA que todo mundo, mas não tenho certeza do que especificamente está fazendo com que obtenhamos a resposta em branco (que parece que obtém as tags meta/title preenchidas via JS da mesma forma que se você visitar no navegador).

Este código aqui para o oneboxing do YouTube é o que espera que as tags de título + imagem sejam preenchidas:

Continuarei investigando :eyes:

2 curtidas

Pode ser que eles estejam enviando apenas o que parece necessário para economizar largura de banda? Nossos Oneboxes usam um agente de usuário de navegador, então talvez eles apenas honrem isso?

2 curtidas

Ok, acho que tenho uma solução aqui, deveríamos usar oEmbed para essas coisas do YouTube em vez disso:

Acho que não, parece que são 2 coisas:

  1. Algum tipo de limitação de taxa/redirecionamento de IP estranho, porque às vezes para sites diferentes em nossa hospedagem o link do OP funciona
  2. Este código não funciona mais, porque o JSON que esperamos não está mais lá discourse/lib/onebox/engine/youtube_onebox.rb at e144ec07c8c17ad0f73427524bccc10c074d5a19 · discourse/discourse · GitHub

No geral, o URL do oEmbed parece mais seguro, para o vídeo do OP é https://www.youtube.com/oembed?url=https://youtube.com/shorts/Cs3sTnLO6EE&format=json e você obtém este tipo de resposta:

2 curtidas

Ok, com essa correção mesclada, isso está funcionando agora :slight_smile:

Observe que as respostas de URLs onebox são armazenadas em cache por 1 dia; precisei executar isso no console: Oneboxer.preview("https://youtube.com/shorts/Cs3sTnLO6EE", invalidate_oneboxes: true) para ver o novo resultado.

3 curtidas

Este tópico foi fechado automaticamente após 2 dias. Novas respostas não são mais permitidas.