From 62d4275384a43e5c45d9489881207642d183b9b6 Mon Sep 17 00:00:00 2001 From: Arnaud Levy <contact@arnaudlevy.com> Date: Tue, 10 Oct 2023 20:53:49 +0200 Subject: [PATCH] wip --- Gemfile.lock | 4 ++-- .../communication/block/template/video.rb | 22 ++++++++++++++++++- app/services/video/provider/dailymotion.rb | 5 +++++ app/services/video/provider/default.rb | 12 ++++++++++ app/services/video/provider/vimeo.rb | 5 +++++ app/services/video/provider/youtube.rb | 5 +++++ .../blocks/templates/video/_static.html.erb | 9 ++++++++ 7 files changed, 59 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9705bb5e3..3cc1a3a3d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -318,7 +318,7 @@ GEM listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - loofah (2.21.3) + loofah (2.21.4) crass (~> 1.0.2) nokogiri (>= 1.12.0) mail (2.8.1) @@ -450,7 +450,7 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) - regexp_parser (2.8.1) + regexp_parser (2.8.2) requests (1.0.2) require_all (3.0.0) responders (3.1.0) diff --git a/app/models/communication/block/template/video.rb b/app/models/communication/block/template/video.rb index 0e0612d61..c69e4f07c 100644 --- a/app/models/communication/block/template/video.rb +++ b/app/models/communication/block/template/video.rb @@ -5,11 +5,31 @@ class Communication::Block::Template::Video < Communication::Block::Template::Ba has_component :transcription, :text def video_iframe - Video::Provider.find(url).iframe_tag(title: video_title) + video_provider.iframe_tag(title: video_title) + end + + def video_platform + video_provider.platform + end + + def video_identifier + video_provider.identifier + end + + def video_poster + video_provider.poster + end + + def video_embed + video_provider.embed end protected + def video_provider + @video_provider ||= Video::Provider.find(url) + end + def check_accessibility super accessibility_error 'accessibility.blocks.templates.video.title_missing' if block.title.blank? && video_title.blank? diff --git a/app/services/video/provider/dailymotion.rb b/app/services/video/provider/dailymotion.rb index 2cd9d3900..1bd00d940 100644 --- a/app/services/video/provider/dailymotion.rb +++ b/app/services/video/provider/dailymotion.rb @@ -6,6 +6,11 @@ class Video::Provider::Dailymotion < Video::Provider::Default : video_url.split('video/').last end + # https://www.dailymotion.com/thumbnail/video/x8lyp39 + def poster + "https://www.dailymotion.com/thumbnail/video/#{identifier}" + end + # https://developer.dailymotion.com/player#player-parameters def iframe_url "https://www.dailymotion.com/embed/video/#{identifier}" diff --git a/app/services/video/provider/default.rb b/app/services/video/provider/default.rb index bb0f92e3f..d3e202b44 100644 --- a/app/services/video/provider/default.rb +++ b/app/services/video/provider/default.rb @@ -21,6 +21,18 @@ class Video::Provider::Default URI.parse(iframe_url).host end + def identifier + '' + end + + def poster + '' + end + + def embed + iframe_url + end + def iframe_tag(**iframe_options) content_tag(:iframe, nil, default_iframe_options.merge(iframe_options)) end diff --git a/app/services/video/provider/vimeo.rb b/app/services/video/provider/vimeo.rb index f13183cbc..47e696cd1 100644 --- a/app/services/video/provider/vimeo.rb +++ b/app/services/video/provider/vimeo.rb @@ -5,6 +5,11 @@ class Video::Provider::Vimeo < Video::Provider::Default video_url.chomp('/').split('/').last end + # https://vumbnail.com/621585396.jpg + def poster + "https://vumbnail.com/#{identifier}.jpg" + end + # https://help.vimeo.com/hc/en-us/articles/360001494447-Using-Player-Parameters def iframe_url "https://player.vimeo.com/video/#{identifier}" diff --git a/app/services/video/provider/youtube.rb b/app/services/video/provider/youtube.rb index 62153446e..a47933fbf 100644 --- a/app/services/video/provider/youtube.rb +++ b/app/services/video/provider/youtube.rb @@ -6,6 +6,11 @@ class Video::Provider::Youtube < Video::Provider::Default : video_url.split('v=').last end + # https://img.youtube.com/vi/XEEUOiTgJL0/hqdefault.jpg + def poster + "https://img.youtube.com/vi/#{identifier}/hqdefault.jpg" + end + # https://developers.google.com/youtube/player_parameters def iframe_url "https://www.youtube.com/embed/#{identifier}" diff --git a/app/views/admin/communication/blocks/templates/video/_static.html.erb b/app/views/admin/communication/blocks/templates/video/_static.html.erb index 592e98d2c..e0a5e480b 100644 --- a/app/views/admin/communication/blocks/templates/video/_static.html.erb +++ b/app/views/admin/communication/blocks/templates/video/_static.html.erb @@ -3,5 +3,14 @@ <% if block.template.url.present? %> video_iframe: >- <%= block.template.video_iframe %> + video: + platform: "<%= block.template.video_platform %>" + identifier: "<%= block.template.video_identifier %>" + poster: >- + <%= block.template.video_poster %> + embed: >- + <%= block.template.video_embed %> + iframe: >- + <%= block.template.video_iframe %> <% end %> <%= block_component_static block, :transcription %> -- GitLab