Видео с YouTube в onebox больше не отображаются

Как узнать, действительно ли мы забанены по IP или нет?

Я сделал следующее:

Но видео загрузилось без каких-либо проблем.

root@ubuntu-8gb-hel1-4:~# youtube-dl https://www.youtube.com/watch?v=Xl-PTTeRsik
[youtube] Xl-PTTeRsik: Загрузка веб-страницы
[youtube] Xl-PTTeRsik: Загрузка манифеста MPD
[download] Назначение: Loading cargo into HTV-9 Konutori-Xl-PTTeRsik.mp4
[download] 100% от 11.41 MiB за 00:01

Может быть, моя проблема где-то в другом месте? :confused:

У меня возникает ошибка 404, когда Discourse пытается создать onebox для ссылки на YouTube.

У меня сейчас немного времени, чтобы ответить, но вот несколько замечаний.

  1. Все ли задачи повторной генерации (re-bake) уже прошли через Sidekiq? Показывает ли страница https://yourforum/sidekiq много задач? Если да, то, возможно, просто требуется время для обработки Onebox.

  2. Посмотрите на эту диагностическую процедуру, которую я провёл, попробуйте воспроизвести процесс и отчитайтесь о результатах.

  1. Если YouTube заблокировал вас в середине повторной генерации, вам придётся запустить её заново, так как вы не будете знать, какие сообщения со встроенными ссылками уже обработаны, а какие нет. На самом деле я написал утилиту для переформатирования постов с YouTube и повторной генерации частями.

  2. К сожалению, Oneboxer, похоже, завершает работу без сообщения об ошибке, поэтому трудно понять причину сбоя. Мне пришлось создать форк и модифицировать плагин @merefield, чтобы записывать сообщения об ошибках в лог, и тогда я обнаружил, что получаю ошибки 429. Вы можете использовать мой форк, но это немного костыльное решение, и (я только что заметил) он отстает от версии Роберта на пару коммитов.

  1. Если вы действительно подвергаетесь ограничению частоты запросов (вы видите ошибки 429 от YouTube), то у меня получилось установить Onebox Assistant от @merefield, включить его, но не менять никаких настроек. То есть оставить все настройки пустыми. ПРЕДУПРЕЖДЕНИЕ: ЭТО СТРАННО И НЕ ДОЛЖНО РАБОТАТЬ, НО РАБОТАЕТ.

Смотрите мои сообщения здесь

https://meta.discourse.org/t/onebox-assistant-crawl-for-those-previews-reliably/107405/35?u=bletch

и здесь

https://meta.discourse.org/t/onebox-assistant-crawl-for-those-previews-reliably/107405/36?u=bletch

  1. Наконец, отвечая на ваши вопросы об embed.rocks: я зарегистрировался в сервисе embed.rocks, протестировал его с Onebox Assistant, и всё работало идеально во время частичной повторной генерации. Однако позже я отключил его, так как он работает с тем странным поведением, которое описано в пункте 5.

На форумах, которые существуют уже какое-то время, часто случается, что ранее рабочие ссылки на YouTube устаревают. Видео удаляются из-за нарушения авторских прав или закрытия аккаунтов, и такие ссылки перестают работать. Возможно, вы столкнулись именно с этим?

Привет,

Нет, видео работают :frowning:

Из 1,3 млн постов осталось обработать ещё 900 000 (это займёт как минимум неделю), но ещё пару дней назад превью для новых постов формировались идеально.

Теперь, если я создам новый пост со ссылкой на YouTube или пересоберу HTML поста, который уже содержит такую ссылку, я получаю эту ошибку 404:

Другие превью работают нормально (пробовал Vimeo, Twitter…).

edit: перечитал посты здесь, и похоже, что у меня те же проблемы, что и у вас.

Когда вы говорите, что они сняли ваш бан, я так понимаю, что вы не обращались к ним, и бан был снят без каких-либо действий с вашей стороны?

Мне не очень важно, если в старых постах нет встроенных видео, но меня беспокоят новые посты.
Мой форум ещё не открыт, и я хочу предложить своим пользователям хороший опыт. :slight_smile:

edit : извините за множество правок, ребята.
Я попробовал странный обходной путь, описанный здесь: "Onebox Assistant", crawl for those previews reliably! - #35
И это сработало. Думаю, я просто дождуся окончания процесса «пересборки всего», и, поскольку, похоже, YouTube автоматически снимает баны по IP, мне остаётся только подождать несколько дней или недель.

Привет,
Мой форум перестал отображать одностраничные превью видео с YouTube.
Неделю назад мы создали тему с множеством музыкальных видео, и, похоже, у нас возникла та же проблема, что и у @marcozambi: при попытке создать одностраничное превью возникает ошибка 404.
Так что мне делать?

Привет, у меня та же проблема, однако:

  • мой сервер, кажется, не заблокирован по IP: запрос curl выполняется без проблем (я также могу просматривать YouTube с моего сервера)

  • в консоли браузера у меня нет ошибки 404, а есть тайм-аут шлюза 504

  • также ни одна версия URL не работает для меня

однако в production.log Discourse я вижу эту ошибку SSL:

Failed to onebox https://www.youtube.com/post/***** hostname "www.youtube.com" does not match the server certificate (OpenSSL::SSL::SSLError) ["/usr/local/lib/ruby/2.7.0/openssl/ssl.rb:395:in 'post_connection_check'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/ssl_socket.rb:146:in 'initialize'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/connection.rb:471:in 'new'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/connection.rb:471:in 'socket'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/connection.rb:118:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/middlewares/mock.rb:57:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/middlewares/instrumentor.rb:34:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/middlewares/idempotent.rb:19:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/middlewares/base.rb:22:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/middlewares/base.rb:22:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/connection.rb:283:in 'request'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon.rb:250:in 'head'", "/var/www/discourse/lib/final_destination.rb:186:in 'public_send'", "/var/www/discourse/lib/final_destination.rb:186:in 'resolve'", "/var/www/discourse/lib/oneboxer.rb:365:in 'block in external_onebox'", "/var/www/discourse/lib/cache.rb:94:in 'fetch'", "/var/www/discourse/lib/oneboxer.rb:358:in 'external_onebox'", "/var/www/discourse/lib/oneboxer.rb:199:in 'onebox_raw'", "/var/www/discourse/lib/oneboxer.rb:44:in 'preview'", "/var/www/discourse/app/controllers/onebox_controller.rb:27:in 'block in show'", "/var/www/discourse/lib/hijack.rb:56:in 'instance_eval'", "/var/www/discourse/lib/hijack.rb:56:in 'block in hijack'", "/var/www/discourse/lib/scheduler/defer.rb:94:in 'block in do_work'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-2.5.0/lib/rails_multisite/connection_management.rb:76:in 'with_connection'", "/var/www/discourse/lib/scheduler/defer.rb:89:in 'do_work'", "/var/www/discourse/lib/scheduler/defer.rb:79:in 'block (2 levels) in start_thread'"]

Не могу понять, почему мой сервер вдруг решил, что сертификат youtube.com не соответствует URL :face_with_raised_eyebrow:

@legrit, пожалуйста, поделитесь URL, который вы пытаетесь встроить. Также попробуйте выполнить следующие команды на вашем сервере:

cd /var/discourse
./launcher enter app
curl -vI https://www.youtube.com

и отправьте результат вывода сюда.

Я исправил проблему.

В файле /etc/resolv.conf внутри контейнера Docker первым адресом был IP-адрес моего сервера, а вторым — 8.8.8.8 от Google. Я удалил первый адрес, и всё заработало.

Не совсем уверен, в чём была причина, но из контейнера был недоступен только сайт YouTube.

Мои вставки YouTube не работают..

Кажется, происходит перенаправление на страницу «согласия». На Meta это работает нормально.

Что-то изменилось в последнее время?

@Overgrow, пожалуйста, ознакомьтесь: Youtube embeddings have stopped working for servers in Europe