From 996dfb402924008012fe61d9b703371c056857d9 Mon Sep 17 00:00:00 2001 From: tilt12345678 Date: Mon, 11 Nov 2024 02:36:06 +0100 Subject: [PATCH] various linter-related changes to formatting --- src/player.js | 760 ++++++++++++++++++++++++++------------------------ 1 file changed, 393 insertions(+), 367 deletions(-) diff --git a/src/player.js b/src/player.js index 740cf23..a6ba9ed 100644 --- a/src/player.js +++ b/src/player.js @@ -6,7 +6,7 @@ * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: + * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. @@ -21,401 +21,427 @@ * THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE */ var MyPlayer = function(_args) { - var failed = false; - var detached = false; - var player = null; + var failed = false, + detached = false, + player = null, + args_default = { + autoplay: false, + css: { "height": "500px" }, + detachable: true, + element: "body", + id3: false, + list: [], + loop: true, + mode: "mp3url", + shuffle: false, + waveform: false + }, + args = (_args===undefined) ? args_default : $.extend({}, args_default, _args), + mimeTypeFromSrc = function(src) { + var extension = src.split(".").pop().toLowerCase(); - var defaultArgs = { - detachable: true, - element: 'body', - id3: false, - mode: 'mp3url', - waveform: false, - autoplay: false, - loop: true, - shuffle: false, - list: [] - }; + var types = { + "3g2": "video/3gpp2", + "3gp": "video/3gpp", + "7z": "application/x-7z-compressed", + "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", + "eot": "application/vnd.ms-fontobject", + "epub": "application/epub+zip", + "gif": "image/gif", + "gz": "application/gzip", + "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", + "pdf": "application/pdf", + "php": "application/x-httpd-php", + "png": "image/png", + "ppt": "application/vnd.ms-powerpoint", + "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", + "xml": "application/xml", + "xul": "application/vnd.mozilla.xul+xml", + "zip": "application/zip" + }; - var mimeTypeFromSrc = function(src) { - var extension = src.split('.').pop().toLowerCase(); + return types[extension] || "application/octet-stream"; + }, + createAudio = function() { + var autoplay = args.autoplay ? 'autoplay="true"' : ''; + var styles = []; + var style; + var key; - 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); - - var createAudio = function() { - var autoplay = args.autoplay ? 'autoplay="true"' : ''; - - $(args.element).append( - '' - ); - - args.audio = args.element + ' audio'; - - $(args.audio).css({ - 'height': '500px', - }); - }; - - var readId3 = function() { - $(args.element).find('ul.mejs li').each(function(i, track){ - var url = $(track).attr('data-url'); - - $(track).prepend('  '); - - jsmediatags.read(url, { - onSuccess: function(tag) { - var tags = tag.tags; - var track_title; - - if(typeof(tags.title)!='undefined') - track_title = tags.title; - else - track_title = url; - - if(typeof(tags.artist)!='undefined') - track_title = tags.artist + ' - ' + track_title; - - $(args.element).find('ul.mejs li').each(function(j, _track){ - if(i==j) - $(_track).html(track_title); - }); + for (key in args.css) { + var value = args.css[key]; + styles.push(`${key}: ${value}`); } - }); - }); - }; - var playerCreated = function() { - restoreParams(); - - if(args.id3) - readId3(); - }; + style = styles.join(" "); + args.audio = $(``); + console.log("DEBUG: appending audio=", args.audio, " to element=", args.element, " ..."); + $(args.element).append(args.audio); + }, + readId3 = function() { + $(args.element).find('ul.mejs li').each(function(i, track){ + var url = $(track).attr('data-url'); - var createPlayer = function() { - player = new MediaElementPlayer( - "myplayer", { - success: playerCreated, - features: ['playpause', 'current', 'progress', 'duration', 'volume', 'playlist', 'prevtrack', 'nexttrack', 'shuffle', 'loop'] - }); + $(track).prepend('  '); - $(args.element).append( - '' - ); - }; + jsmediatags.read(url, { + onSuccess: function(tag) { + var tags = tag.tags; + var track_title; - var param = function(name) { - var query = window.location.search.substring(1); - var vars = query.split("&"); + if(typeof(tags.title)!='undefined') { + track_title = tags.title; + } + else { + track_title = url; + } - for(var i=0; i'+ - ''+ - '' - ); - - $('.popupButton button').click(function(){ - var currentTime = player.getCurrentTime(); - var volume = player.getVolume(); - var paused = player.media.paused; - var trackNo = 0; - - $(args.element).find('ul.mejs li').each(function(i){ - if($(this).hasClass('current')) - trackNo = i; + if(args.id3) { + readId3(); + } + }, + createPlayer = function() { + player = new MediaElementPlayer( + "myplayer", { + success: playerCreated, + features: [ + 'playpause', + 'current', + 'progress', + 'duration', + 'volume', + 'playlist', + 'prevtrack', + 'nexttrack', + 'shuffle', + 'loop' + ] }); - popup( - $(location).attr('href')+'?'+ - 'popup&'+ - 'paused='+paused+'&'+ - 'currentTime='+currentTime+'&'+ - 'volume='+volume+'&'+ - 'trackNo='+trackNo + $(args.element).append( + '' ); - }); - } - else { - var windowHeight = $(window).height(); + }, + param = function(name) { + var query = window.location.search.substring(1); + var vars = query.split("&"); - window.onbeforeunload = function(){ - $("iframe", opener.top.document).height(windowHeight); - $('.mejs-audio', opener.document).show(); - $('.playerDetached', opener.document).hide(); - }; - } - }; + for(i=0; i' - ); - - args.element = '#myplayer'; - } - - if(args.mode=='mp3url') { - var mp3url = (typeof args.mp3url === "undefined") - ? $(location).attr('href').replace(/\?.*/, '').replace(/\/[^\/]+\/?$/, '') - : args.mp3url; - - $.ajax({ - url: mp3url, - type: 'GET', - success: function(res) { - createAudio(); - - var doc = document.createElement('html'); - doc.innerHTML = res; - - var head = $(doc).find('a').each(function(idx,item) { - var src = $(item).attr('href'); - - if(src.match(/\.mp3$/)) { - var url = mp3url+'/'+src; - var title = item.innerHTML; - var type = "audio/mpeg"; - - $(args.audio).append(''); + if(pair[0] == name) { + return pair[1]; } - }); - - createPlayer(); - setupDetach(); - } - }); - } - else if(args.mode=='m3u') { - var m3u = (typeof args.m3u === "undefined") - ? $(location).attr('href').replace(/\?.*/, '').replace(/\/[^\/]+\/?$/, '/play.m3u') - : args.m3u; - - createAudio(); - - $.get(m3u, function(txt){ - var lines = txt.split("\n"); - - for(var i = 0, len = lines.length; i < len; i++) - 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(''); } - console.log("DEBUG: mode==m3u audio=",$(args.audio)); + return false; + }, + setupDetach = function() { + if(!args.detachable) { + return; + } - createPlayer(); - setupDetach(); - }); - } - else if(args.mode=='list') { - createAudio(); + var popup = function(url) { + player.pause(); + $('.mejs-audio').hide(); + $('.playerDetached').show(); - for(var i = 0, len = args.list.length; i < len; i++) { - var item = args.list[i]; - var type = typeof item; - var src = ''; - var title = ''; - - if(item !== null && type === 'object') { - if(item.url) - src = item.url; - else { - alert( - 'MyPlayer: item[' + i + ']: '+ - 'property "url" is missing.' + var playerWindow = window.open( + url, 'myplayer', + 'height='+ Math.max($(args.element).height(), 298)+','+ + 'width='+408+','+ + 'resizable=false' ); - continue; + if(window.focus) { + playerWindow.focus(); + } + + $("iframe",top.document).height(20); + + return false; + }; + + if(param('popup')==false) { + $('.mejs-controls').append( + '
'+ + ''+ + '
' + ); + + $('.popupButton button').click(function(){ + var currentTime = player.getCurrentTime(); + var volume = player.getVolume(); + var paused = player.media.paused; + var trackNo = 0; + + $(args.element).find('ul.mejs li').each(function(i){ + if($(this).hasClass('current')) { + trackNo = i; + } + }); + + popup( + $(location).attr('href')+'?'+ + 'popup&'+ + 'paused='+paused+'&'+ + 'currentTime='+currentTime+'&'+ + 'volume='+volume+'&'+ + 'trackNo='+trackNo + ); + }); + } + else { + var windowHeight = $(window).height(); + + window.onbeforeunload = function(){ + $("iframe", opener.top.document).height(windowHeight); + $('.mejs-audio', opener.document).show(); + $('.playerDetached', opener.document).hide(); + }; + } + }, + restoreParams = function() { + if(!detached) { + return; + } + + var paused = (param('paused') && param('paused')=='true'); + var currentTime = param('currentTime') ? parseFloat(param('currentTime')) : 0.0; + var volume = param('volume') ? parseFloat(param('volume')) : 1.0; + var trackNo = param('trackNo') ? parseInt(param('trackNo')) : 0; + + player.setVolume(volume); + + $(args.element).find('ul.mejs li').each(function(i){ + if(i==trackNo) { + player.playTrack($(this)); + player.setCurrentTime(currentTime); + } + }); + + if(paused) { + player.pause(); + } + }; + + if(param('popup')!==false) { + detached = true; + + $('body').html( + '
' + ); + + args.element = '#myplayer'; + } + + if(args.mode=='mp3url') { + console.log("args.mode=", args.mode); + var mp3url = (typeof args.mp3url === "undefined") + ? $(location).attr('href').replace(/\?.*/, '').replace(/\/[^\/]+\/?$/, '') + : args.mp3url; + + $.ajax({ + url: mp3url, + type: 'GET', + success: function(res) { + var doc; + var head; + + doc = document.createElement('html'); + + createAudio(); + doc.innerHTML = res; + + head = $(doc).find('a').each(function(idx,item) { + var src = $(item).attr('href'); + + if(src.match(/\.mp3$/)) { + var url = mp3url+'/'+src; + var title = item.innerHTML; + var type = "audio/mpeg"; + + args.audio.append(``); + } + }); + + createPlayer(); + setupDetach(); + } + }); + } + else if(args.mode=='m3u') { + var m3u = (typeof args.m3u === "undefined") + ? $(location).attr('href').replace(/\?.*/, '').replace(/\/[^\/]+\/?$/, '/play.m3u') + : args.m3u; + + createAudio(); + + $.get(m3u, function(txt){ + var lines = txt.split("\n"); + var len = lines.length; + var i = 0; + + while(i < len) { + 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(``); + } + + i++; + } + + createPlayer(); + setupDetach(); + }); + } + else if(args.mode=='list') { + var len = args.list.length; + var i = 0; + + createAudio(); + + while(i < len) { + var item = args.list[i]; + var type = typeof item; + var src = ''; + var title = ''; + var type; + + if(item !== null && type === 'object') { + if(item.url) { + src = item.url; + } + else { + alert(`MyPlayer: item[${i}]: property "url" is missing.`); + i++; + continue; + } + + if(item.title) { + title = item.title; + } + else { + title = url.replace(/(.*\/)?([^\/]+)/, '$2'); + } + } + else if(type === 'string') { + src = item; + title = src; + } + else { + alert(`MyPlayer: item[${i}]: unsupported type=${type}.`); + i++; + continue; } - if(item.title) - title = item.title; - else - title = url.replace(/(.*\/)?([^\/]+)/, '$2'); - } - else if(type === 'string') { - src = item; - title = src; - } - else { - alert( - 'MyPlayer: item [' + i + ']: '+ - 'unsupported type "' + type + '"' - ); + type = mimeTypeFromSrc(src); - continue; - } + args.audio.append(``); - var type = mimeTypeFromSrc(src); + i++; + } - $(args.audio).append(''); - } - - createPlayer(); - setupDetach(); - } - else { - $(args.element).append('

Unsupported mode "'+args.mode+'"

'); - failed = true; - } + createPlayer(); + setupDetach(); + } + else { + $(args.element).append(`

Unsupported mode ${args.mode}"

`); + failed = true; + } };