From 70947074cfa4784d672a7dc23479190b2dbc5d35 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 +++++++++++++++++++ .../bug_19339-HTML5MediaVimeo_syspref.pl | 15 +++++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 1 + .../admin/preferences/enhanced_content.pref | 6 +++++ 4 files changed, 44 insertions(+) create mode 100755 installer/data/mysql/atomicupdate/bug_19339-HTML5MediaVimeo_syspref.pl 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'); diff --git a/installer/data/mysql/atomicupdate/bug_19339-HTML5MediaVimeo_syspref.pl b/installer/data/mysql/atomicupdate/bug_19339-HTML5MediaVimeo_syspref.pl new file mode 100755 index 00000000000..f67694a7050 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_19339-HTML5MediaVimeo_syspref.pl @@ -0,0 +1,15 @@ +use Modern::Perl; +use Koha::Installer::Output qw(say_warning say_success say_info); + +return { + bug_number => "19339", + description => "Enhance streaming cataloging to include Vimeo", + up => sub { + my ($args) = @_; + my ( $dbh, $out ) = @$args{qw(dbh out)}; + + $dbh->do(q{INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('HTML5MediaVimeo',0,'Embed|Don\'t embed','Vimeo links as videos','YesNo')}); + + say_success( $out, "Added new system preference 'HTML5MediaVimeo'" ); + }, +}; diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index ede2d4d2755..c412153a870 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -316,6 +316,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('HTML5MediaEnabled','not','not|opac|staff|both','Show a tab with a HTML5 media player for files catalogued in field 856','Choice'), ('HTML5MediaExtensions','webm|ogg|ogv|oga|vtt','','Media file extensions','free'), ('HTML5MediaYouTube',0,'Embed|Don\'t embed','YouTube links as videos','YesNo'), +('HTML5MediaVimeo',0,'Embed|Don\'t embed','Vimeo links as videos','YesNo'), ('IdRef','0','','Disable/enable the IdRef webservice from the OPAC detail page.','YesNo'), ('ILLCheckAvailability', 0, '', 'If ON, during the ILL request process third party sources will be checked for current availability', 'YesNo'), ('ILLDefaultStaffEmail', '', NULL, 'Fallback email address for staff ILL notices to be sent to in the absence of a branch address', 'Free'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref index 1f088136f49..41ffcf05000 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref @@ -339,6 +339,12 @@ Enhanced content: 1: "Embed" 0: "Don't embed" - YouTube links as videos. + - + - pref: HTML5MediaVimeo + choices: + 1: "Embed" + 0: "Don't embed" + - Vimeo links as videos. OverDrive: - - pref: OPACOverDrive -- 2.39.5