From c08ba8c9a545f00c2709e3f3073906715c25785c Mon Sep 17 00:00:00 2001 From: wainuiwitikapark Date: Tue, 14 Jan 2025 05:30:51 +0000 Subject: [PATCH] Bug 19339: [WIP] Enhance streaming cataloging to include Vimeo --- C4/HTML5Media.pm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/C4/HTML5Media.pm b/C4/HTML5Media.pm index 2c5a8786500..4411504bf07 100644 --- a/C4/HTML5Media.pm +++ b/C4/HTML5Media.pm @@ -49,9 +49,11 @@ sub gethtml5media { my $HTML5MediaWidth; my @HTML5MediaExtensions = split( /\|/, C4::Context->preference("HTML5MediaExtensions") ); my $HTML5MediaYouTube = C4::Context->preference("HTML5MediaYouTube"); + my $HTML5MediaVimeo = C4::Context->preference("HTML5MediaVimeo"); my $marcflavour = C4::Context->preference("marcflavour"); foreach my $HTML5Media_field (@HTML5Media_fields) { my $is_youtube = 0; + my $is_vimeo = 0; my %HTML5Media; # protocol if ( $HTML5Media_field->indicator(1) eq '1' ) { @@ -113,6 +115,21 @@ sub gethtml5media { next; # do not embed youtube videos } } + if (grep /vimeo/, $HTML5Media_field->subfield('u') ) { + if ($HTML5MediaVimeo == 1) { + my $url = $HTML5Media_field->subfield('u'); + next unless $url =~ m{^.*(vimeo.com/)([^#\&\?]*).*}; + + my $video_id = $2; + $HTML5Media{srcblock} = sprintf 'https://player.vimeo.com/video/%s', $video_id; + + $HTML5Media{is_vimeo} = 1; + $is_vimeo = 1; + } + else { + next; # do not embed vimeo videos + } + } } elsif ( $HTML5Media_field->subfield('a') && $HTML5Media_field->subfield('d') && $HTML5Media_field->subfield('f') ) { $HTML5Media{host} = $HTML5Media_field->subfield('a'); @@ -149,6 +166,11 @@ sub gethtml5media { $HTML5Media{mime} = 'video/webm'; $HTML5Media{type} = 'video'; } + # vimeo + if ($is_vimeo == 1) { + $HTML5Media{mime} = 'video/webm'; + $HTML5Media{type} = 'video'; + } # mime if ( $HTML5Media_field->subfield('c') ) { $HTML5Media{codecs} = $HTML5Media_field->subfield('c'); -- 2.39.5