update to latest mediaelement; use playlist from mediaelement-plugins; css build script
This commit is contained in:
69
src/build.sh
Normal file → Executable file
69
src/build.sh
Normal file → Executable file
@ -1,8 +1,15 @@
|
||||
#!/bin/sh
|
||||
# MyPlayer - Copyright 2014 tilt@linuxfoo.de GPLv3
|
||||
#!/bin/bash
|
||||
# MyPlayer - Copyright 2014 - 2024 tilt@linuxfoo.de GPLv3
|
||||
# Build Script; recompiles the MyPlayer JavaScript from source.
|
||||
|
||||
cd $(dirname $0)
|
||||
dir=$(readlink -f "$(dirname "$0")")
|
||||
|
||||
jsdir=$(readlink -f "$dir/../js")
|
||||
|
||||
if ! cd "$dir" ; then
|
||||
echo "ERROR: Could not change working directory; aborted." >&2 ;
|
||||
exit 1 ;
|
||||
fi
|
||||
|
||||
echo '/*
|
||||
jQuery
|
||||
@ -16,19 +23,51 @@ MediaElement Playlist Feature (plugin) -
|
||||
JavaScript-ID3-Reader
|
||||
Copyright (c) 2008 Jacob Seidelin, http://blog.nihilogic.dk/ BSD License
|
||||
Copyright (c) 2009 Opera Software ASA BSD License
|
||||
Copyright (c) 2010 António Afonso BSD License
|
||||
Copyright (c) 2010 Antonio Afonso BSD License
|
||||
Copyright (c) 2010 Joshua Kifer BSD License
|
||||
MyPlayer
|
||||
Copyright (c) 2014 tilt@linuxfoo.de MIT License
|
||||
*/' > ../js/myplayer.min.js
|
||||
Copyright (c) 2014 - 2024 tilt@linuxfoo.de MIT License
|
||||
*/' > "$jsdir"/myplayer.min.js
|
||||
|
||||
# https://developers.google.com/closure/compiler/
|
||||
java \
|
||||
-jar /usr/local/lib/closure-compiler/compiler.jar \
|
||||
--js mediaelement-and-player.min.js \
|
||||
--js mep-feature-playlist.js \
|
||||
--js id3-minimized.js \
|
||||
--js player.js \
|
||||
>> ../js/myplayer.min.js
|
||||
type yui-compressor > /dev/null || {
|
||||
echo "ERROR: Executable \"yui-compressor\" not found in PATH; aborted." >&2 ;
|
||||
exit 1 ;
|
||||
}
|
||||
|
||||
echo "Done: Javascript source has compiled into ../js/myplayer.min.js"
|
||||
rm -f "$jsdir"/myplayer.min.js
|
||||
|
||||
for js in \
|
||||
../mediaelement/build/mediaelement-and-player.min.js \
|
||||
../mediaelement-plugins/dist/playlist/playlist.min.js
|
||||
do
|
||||
echo "INFO: Appending $js ..." >&2
|
||||
cat $js >> "$jsdir"/myplayer.min.js
|
||||
done
|
||||
|
||||
for js in \
|
||||
id3-minimized.js \
|
||||
player.js
|
||||
do
|
||||
echo "INFO: Compressing $js ..." >&2
|
||||
yui-compressor "$js" >> "$jsdir"/myplayer.min.js
|
||||
done
|
||||
|
||||
chmod 644 "$jsdir"/myplayer.min.js
|
||||
|
||||
echo "INFO: Javascript source was minimized to $jsdir/myplayer.min.js" >&2
|
||||
|
||||
rm -f ../js/myplayer.js
|
||||
|
||||
for js in \
|
||||
../mediaelement/build/mediaelement-and-player.js \
|
||||
../mediaelement-plugins/dist/playlist/playlist.js \
|
||||
id3-minimized.js \
|
||||
player.js
|
||||
do
|
||||
echo "INFO: Appending $js ..." >&2
|
||||
cat $js >> "$jsdir"/myplayer.js
|
||||
done
|
||||
|
||||
chmod 644 "$jsdir"/myplayer.js
|
||||
|
||||
echo "INFO: Uncompressed javascript source was collected in $jsdir/myplayer.js" >&2
|
||||
|
113
src/player.js
113
src/player.js
@ -37,6 +37,89 @@ var MyPlayer = function(_args) {
|
||||
list: []
|
||||
};
|
||||
|
||||
var mimeTypeFromSrc = function(src) {
|
||||
var extension = src.split('.').pop().toLowerCase();
|
||||
|
||||
return {
|
||||
"aac": "audio/aac",
|
||||
"abw": "application/x-abiword",
|
||||
"arc": "application/x-freearc",
|
||||
"avi": "video/x-msvideo",
|
||||
"azw": "application/vnd.amazon.ebook",
|
||||
"bin": "application/octet-stream",
|
||||
"bmp": "image/bmp",
|
||||
"bz": "application/x-bzip",
|
||||
"bz2": "application/x-bzip2",
|
||||
"cda": "application/x-cdf",
|
||||
"csh": "application/x-csh",
|
||||
"css": "text/css",
|
||||
"csv": "text/csv",
|
||||
"doc": "application/msword",
|
||||
"docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
||||
"eot": "application/vnd.ms-fontobject",
|
||||
"epub": "application/epub+zip",
|
||||
"gz": "application/gzip",
|
||||
"gif": "image/gif",
|
||||
"htm": "text/html",
|
||||
"html": "text/html",
|
||||
"ico": "image/vnd.microsoft.icon",
|
||||
"ics": "text/calendar",
|
||||
"jar": "application/java-archive",
|
||||
"jpeg": "image/jpeg",
|
||||
"jpg": "image/jpeg",
|
||||
"js": "text/javascript",
|
||||
"json": "application/json",
|
||||
"jsonld": "application/ld+json",
|
||||
"mid": "audio/midi audio/x-midi",
|
||||
"midi": "audio/midi audio/x-midi",
|
||||
"mjs": "text/javascript",
|
||||
"mp3": "audio/mpeg",
|
||||
"mp4": "video/mp4",
|
||||
"mpeg": "video/mpeg",
|
||||
"mpkg": "application/vnd.apple.installer+xml",
|
||||
"odp": "application/vnd.oasis.opendocument.presentation",
|
||||
"ods": "application/vnd.oasis.opendocument.spreadsheet",
|
||||
"odt": "application/vnd.oasis.opendocument.text",
|
||||
"oga": "audio/ogg",
|
||||
"ogv": "video/ogg",
|
||||
"ogx": "application/ogg",
|
||||
"opus": "audio/opus",
|
||||
"otf": "font/otf",
|
||||
"png": "image/png",
|
||||
"pdf": "application/pdf",
|
||||
"php": "application/x-httpd-php",
|
||||
"ppt": "application/vnd.ms-powerpoint",
|
||||
"pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
||||
"rar": "application/vnd.rar",
|
||||
"rtf": "application/rtf",
|
||||
"sh": "application/x-sh",
|
||||
"svg": "image/svg+xml",
|
||||
"swf": "application/x-shockwave-flash",
|
||||
"tar": "application/x-tar",
|
||||
"tif": "image/tiff",
|
||||
"tiff": "image/tiff",
|
||||
"ts": "video/mp2t",
|
||||
"ttf": "font/ttf",
|
||||
"txt": "text/plain",
|
||||
"vsd": "application/vnd.visio",
|
||||
"wav": "audio/wav",
|
||||
"weba": "audio/webm",
|
||||
"webm": "video/webm",
|
||||
"webp": "image/webp",
|
||||
"woff": "font/woff",
|
||||
"woff2": "font/woff2",
|
||||
"xhtml": "application/xhtml+xml",
|
||||
"xls": "application/vnd.ms-excel",
|
||||
"xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
"xml": "application/xml",
|
||||
"xul": "application/vnd.mozilla.xul+xml",
|
||||
"zip": "application/zip",
|
||||
"3gp": "video/3gpp",
|
||||
"3g2": "video/3gpp2",
|
||||
"7z": "application/x-7z-compressed"
|
||||
}[extension] || "application/octet-stream";
|
||||
}
|
||||
|
||||
var args = (typeof(_args)==='undefined')
|
||||
? defaultArgs
|
||||
: $.extend({}, defaultArgs, _args);
|
||||
@ -45,7 +128,7 @@ var MyPlayer = function(_args) {
|
||||
var autoplay = args.autoplay ? 'autoplay="true"' : '';
|
||||
|
||||
$(args.element).append(
|
||||
'<audio controls="controls" ' + autoplay + '>'+
|
||||
'<audio id="myplayer" controls="controls" ' + autoplay + '>'+
|
||||
'<p>'+
|
||||
'Your browser does not understand '+
|
||||
'the <audio> tag. '+
|
||||
@ -54,6 +137,10 @@ var MyPlayer = function(_args) {
|
||||
);
|
||||
|
||||
args.audio = args.element + ' audio';
|
||||
|
||||
$(args.audio).css({
|
||||
'height': '500px',
|
||||
});
|
||||
}
|
||||
|
||||
var readId3 = function() {
|
||||
@ -89,17 +176,9 @@ var MyPlayer = function(_args) {
|
||||
|
||||
var createPlayer = function() {
|
||||
player = new MediaElementPlayer(
|
||||
$(args.audio), {
|
||||
"myplayer", {
|
||||
success: playerCreated,
|
||||
loop: args.loop,
|
||||
shuffle: args.shuffle,
|
||||
playlist: true,
|
||||
audioHeight: 32,
|
||||
playlistposition: 'bottom',
|
||||
features: ['playlistfeature', 'prevtrack', 'playpause',
|
||||
'nexttrack', 'loop', 'shuffle', 'current', 'progress',
|
||||
'duration', 'volume'],
|
||||
pluginPath: mejs.Utility.getScriptPath(['myplayer.min.js'])+'../plugins/'
|
||||
features: ['playpause', 'current', 'progress', 'duration', 'volume', 'playlist', 'prevtrack', 'nexttrack', 'shuffle', 'loop']
|
||||
});
|
||||
|
||||
$(args.element).append(
|
||||
@ -247,8 +326,9 @@ var MyPlayer = function(_args) {
|
||||
if(src.match(/\.mp3$/)) {
|
||||
var url = mp3url+'/'+src;
|
||||
var title = item.innerHTML;
|
||||
var type = "audio/mpeg";
|
||||
|
||||
$(args.audio).append('<source src="'+url+'" title="'+title+'"/>');
|
||||
$(args.audio).append('<source src="'+url+'" type="' + type + '" title="'+title+'"/>');
|
||||
}
|
||||
});
|
||||
|
||||
@ -271,10 +351,13 @@ var MyPlayer = function(_args) {
|
||||
if(!lines[i].match(/^[ \t]*#/) && lines[i].match(/\.mp3$/)) {
|
||||
var mp3 = lines[i];
|
||||
var title = unescape(mp3.split('/').pop());
|
||||
var type = "audio/mpeg";
|
||||
|
||||
$(args.audio).append('<source src="'+mp3+'" title="'+title+'"/>');
|
||||
$(args.audio).append('<source src="'+mp3+'" type="' + type + '" title="'+title+'"/>');
|
||||
}
|
||||
|
||||
console.log("DEBUG: mode==m3u audio=",$(args.audio));
|
||||
|
||||
createPlayer();
|
||||
setupDetach();
|
||||
});
|
||||
@ -318,7 +401,9 @@ var MyPlayer = function(_args) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$(args.audio).append('<source src="'+src+'" title="'+title+'"/>');
|
||||
var type = mimeTypeFromSrc(src);
|
||||
|
||||
$(args.audio).append('<source src="'+src+'" type="' + type + '" title="'+title+'"/>');
|
||||
}
|
||||
|
||||
createPlayer();
|
||||
|
Reference in New Issue
Block a user