@@ -, +, @@
---
C4/HTML5Media.pm | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
--- a/C4/HTML5Media.pm
+++ a/C4/HTML5Media.pm
@@ -22,7 +22,7 @@ use warnings;
use C4::Context;
use MARC::Field;
-
+use WWW::YouTube::Download qw(playback_url);
=head1 HTML5Media
@@ -96,6 +96,14 @@ sub gethtml5media {
# src
if ( $HTML5Media_field->subfield('u') ) {
$HTML5Media{srcblock} = $HTML5Media_field->subfield('u');
+ if (grep /youtube/, $HTML5Media_field->subfield('u') ) {
+ my $youtube = WWW::YouTube::Download->new;
+ $HTML5Media{srcblock} = $youtube->playback_url(
+ $HTML5Media_field->subfield('u'), {
+ 'fmt' => '43' #webm
+ }
+ );
+ }
}
elsif ( $HTML5Media_field->subfield('a') && $HTML5Media_field->subfield('d') && $HTML5Media_field->subfield('f') ) {
$HTML5Media{host} = $HTML5Media_field->subfield('a');
@@ -108,11 +116,15 @@ sub gethtml5media {
else {
next; # no file to play
}
- # extension
+ # extension or youtube
$HTML5Media{extension} = ($HTML5Media{srcblock} =~ m/([^.]+)$/)[0];
- if ( !grep /\Q$HTML5Media{extension}\E/, @HTML5MediaExtensions ) {
+ if ( ( !grep /\Q$HTML5Media{extension}\E/, @HTML5MediaExtensions ) && ( !grep /youtube/, $HTML5Media_field->subfield('u') ) ) {
next; # not a specified media file
}
+ # youtube
+ if ( grep /youtube/, $HTML5Media_field->subfield('u') ) {
+ $HTML5Media{mime} = 'video/webm';
+ }
# mime
if ( $HTML5Media_field->subfield('c') ) {
$HTML5Media{codecs} = $HTML5Media_field->subfield('c');
@@ -144,7 +156,7 @@ sub gethtml5media {
}
if ( $HTML5Media{extension} eq 'oga' ) {
$HTML5Media{mime} = 'audio/ogg';
- $HTML5Media{codecs} = 'vorbis';
+ $HTML5Media{codecs} = 'vorbis';
}
elsif ( $HTML5Media{extension} eq 'spx' ) {
$HTML5Media{mime} = 'audio/ogg';
--