YouTube URI не отображают миниатюры при одностраничном отображении

Я подтвердил, что:

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

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

…превращаются в прозрачный прямоугольник:

В DOM отображается:

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

Однако при публикации они отображаются:


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

1 лайк

Подтверждено, хорошая находка. Пока добавлю приветствие к PR и оставлю комментарий для команды, чтобы они провели первоначальный анализ.

1 лайк

Это интересный случай: у меня здесь, на Meta, воспроизводится проблема со ссылками из исходного сообщения, но локально и на нашем внутреннем сайте Discourse они загружаются и отображаются корректно:

@rokejulianlockhart, эти ссылки не отображаются корректно на вашем собственном сайте или только здесь, на Meta?

1 лайк

@martin, некоторые другие тоже:

Не Shorts

С https://www.youtube.com/watch?v=Cs3sTnLO6EE&lc=Ugyi1VtrCVd2POTc82N4AaABAg#:~:text=A%20Screencast%20Of%20LinkedIn%20Persona%20Verification%20Failure это воспроизводится на:

  1. discuss.kde.org/new-topic

    [1]

  2. forum.fairphone.com/new-topic

    [1:1]

Однако на discussion.fedoraproject.org это отображается так:

[1:2]

Shorts

С https://youtube.com/shorts/Cs3sTnLO6EE воспроизводится следующее:

…на:

  1. discuss.kde.org/new-topic

    [1:3]

  2. forum.fairphone.com/new-topic

    [1:4]

Однако, как и раньше, на discussion.fedoraproject.org это отображается так:

[1:5]

Что Fedora делает так правильно?


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

2 лайка

Решена ли эта проблема? Я создал тему по аналогичной проблеме, которая сейчас возникает на моём форуме:

@hameedacpa, это совершенно не имеет отношения к тому, так как речь идет о предпросмотре. Кроме того, вы можете убедиться, что проблема не устранена, просто воспользовавшись предпросмотром. Я предлагаю вам установить переводчик.

1 лайк

Я нашел эту тему, включающую частичную проблему, с которой я тоже столкнулся.

На самом деле все видео на YouTube не работают как раньше, и мои форумы не имеют кастомизации, так как они основаны на оригинальной доске.

1 лайк

@hameedacpa, спасибо. Это похоже, хотя я сомневаюсь, что эквивалентно. Наличие некорректного значка миниатюры, по-видимому, свидетельствует об этом наряду с другим соотношением сторон тега <img. Если вы добавите эти детали в тему 387672/1, они будут там полезны. Если же различия вызваны лишь браузером, это будет классифицировано как частичный дубликат данной темы.

Кстати, укажите версию вашего браузера, версию Discourse и фактическую разметку отрендеренного содержимого в упомянутой теме. В настоящее время там есть только скриншот, а информация разбросана по нескольким последовательным сообщениям; вам нужно приложить усилия, чтобы оформить это прилично, чтобы получить бесплатную помощь.

У нас что-то идёт не так в потоке Onebox, думаю, связано с перенаправлением/FinalDestination. Если я использую curl следующим образом:

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

Я могу найти title и другие meta-теги в ответе:

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>

Однако, когда я получаю ответ через наш код oneboxer, это единственные теги (кроме script и style), которые я получаю в <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">

Думал, возможно, это ignore_redirects вызывает проблему, но если я изменю опции FD, это не внесло никаких изменений:

Подозреваю, что YouTube, вероятно, ограничивает парсинг, так как у них та же проблема с AI-скраперами, что и у всех остальных, но не уверен, что конкретно заставляет нас получать пустой ответ (который выглядит так, будто meta/title-теги заполняются через JS так же, как при посещении в браузере).

Этот код для oneboxing YouTube ожидает, что теги title и image будут заполнены:

Продолжу расследование :eyes:

2 лайка

Возможно, они передают только то, что кажется необходимым, чтобы сэкономить трафик? Наши Oneboxes используют агент браузера, поэтому, возможно, они просто учитывают это и говорят: «Круто. Тогда вам не нужен OpenGraph»?

2 лайка

Кажется, у меня есть решение: для таких случаев с YouTube лучше использовать oEmbed:

Я так не думаю. Похоже, проблема в двух вещах:

  1. Некий странный лимит запросов по IP или перенаправление, потому что иногда ссылка на оригинальный пост (OP) работает для разных сайтов на нашем хостинге.
  2. Этот код больше не работает, потому что JSON, который мы ожидаем, больше не существует: discourse/lib/onebox/engine/youtube_onebox.rb at e144ec07c8c17ad0f73427524bccc10c074d5a19 · discourse/discourse · GitHub

В целом, URL oEmbed кажется более надёжным. Для видео из оригинального поста это https://www.youtube.com/oembed?url=https://youtube.com/shorts/Cs3sTnLO6EE&format=json, и вы получаете ответ примерно такого вида:

2 лайка

Отлично, после объединения этого исправления всё работает :slight_smile:

Обратите внимание, что ответы URL для onebox кэшируются на 1 день. Чтобы увидеть новый результат, мне пришлось выполнить в консоли команду Oneboxer.preview(“https://youtube.com/shorts/Cs3sTnLO6EE”, invalidate_oneboxes: true).

3 лайка

Эта тема была автоматически закрыта через 2 дня. Новые ответы больше не принимаются.