Обычное встраивание видео с YouTube работает.
Я не сталкиваюсь с этой проблемой на try.discourse или meta.
Думаю, дело в неправильно настроенной настройке сайта.
Однооконный режим для YouTube — это наша собственная разработка. Кто-то должен создать запрос pr-welcome для совместимости с короткими видео. Переносим в #feature.
А пока вы всегда можете добавить ссылку на iframe вручную в настройку сайта «Разрешённые iframe»:
Не могли бы вы просто сказать, какой URL мне нужно добавить в «разрешённые iframe», чтобы видео отображалось так же, как у вас? Это полностью решит проблему на данный момент, даже если оно действительно высокое.
Что касается высоты видео, её можно уменьшить, задав свойство max-height через CSS для iframe. Проблема в том, что у iframe нет никаких атрибутов, указывающих на то, что это короткое (вертикальное) видео.
Но что мне нужно сделать дальше, чтобы видео появилось?
Если я вставлю в свой пост https://www.youtube.com/shorts/SWeTMdyv50Q, это не сработает.
Если я напишу <iframe>https://www.youtube.com/shorts/SWeTMdyv50Q</iframe>, это тоже не сработает.
Если я укажу https://www.youtube.com/embed/SWeTMdyv50Q, видео появится, но оно будет отображаться с обычными пропорциями YouTube (это меня устраивает, хотя я предпочёл бы другой формат и не хотел бы вручную добавлять «embed» в URL):
Щёлкните правой кнопкой мыши по видео Shorts и выберите «Копировать код для вставки». Именно это я имел в виду под «ручным кодом для вставки», извините, если я выразился неясно.
Кроме того, замена /shorts/ на watch?v= (стандартный URL видео YouTube) работает.
Таким образом, на YouTube на странице https://www.youtube.com/shorts/SWeTMdyv50Q функция «Копировать URL видео» через контекстное меню работает, так как она возвращает ссылку https://youtu.be/SWeTMdyv50Q, которая корректно отображается в Discourse (хотя и с обычным широким соотношением сторон).
Я это сделал, хотя, возможно, немного накосячил с моим pull request’ом, потому что по какой-то причине я всё ещё не привык к GitHub… Мне действительно нужно прочитать руководство (и, как говорит друг, создавать ветки из моего форка Discourse…).
Просто для информации: я только что отредактировал файл lib\onebox\engine\youtube_onebox.rb, чтобы добавить:
# https://www.youtube.com/shorts/wi2jAtpBl0Y
if uri.path["/shorts/"]
id ||= uri.path[/\/shorts\/([\w\-]+)/, 1]
end
Не совсем понятно, что вы имеете в виду.Обычно люди копируют ссылку на YouTube из адресной строки.Теперь у YouTube появился новый формат URL с /shorts/. Люди копируют и вставляют эти ссылки, но функция автоматического превращения ссылок YouTube (oneboxing) пока их не поддерживает.Ссылки с /embed/ поддерживаются, но для этого пользователю нужно самостоятельно найти URL для встраивания на YouTube, а этим почти никто не занимается
Просто интересно, не было бы проще изменить этот URL? Ведь youtube.com/shorts/something полностью аналогично youtube.com/embed/something, и с /embed/ функция oneboxing/встраивания здесь работает отлично.
https://youtube.com/shorts/aQFdwUeZxkA не работает:
А вот https://youtube.com/embed/aQFdwUeZxkA работает:
Я всё ещё не понимаю. Кто должен менять URL? Автор поста? Но автор не хочет вручную переписывать часть URL (они даже не будут знать, почему видео не встраивается), они просто хотят скопировать и вставить, и всё заработает.
Редакция: или вы имеете в виду, что код Oneboxing в Discourse будет заменять /shorts/ на /embed/?
Да, я просто никак не могу справиться с файлом тестов на Ruby. Он не работает, и я не понимаю почему. Я никогда раньше не использовал и не создавал модульные тесты, поэтому…
it "can parse youtube shorts results" do
preview = expect(Onebox.preview('https://www.youtube.com/watch?v=wi2jAtpBl0Y').placeholder_html)
preview.to match(/reacts/)
preview.to match(/hqdefault/)
end
А также добавил это в начало файла, внутри блока before do: