EmbyCrackedClient/web/modules/htmlaudioplayer/plugin.js

1 line
6.7 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import events from"./../emby-apiclient/events.js";import browser from"./../browser.js";import htmlMediaHelper from"./../htmlvideoplayer/htmlmediahelper.js";import BaseHtmlPlayer from"./../htmlvideoplayer/basehtmlplayer.js";import appSettings from"./../common/appsettings.js";let isNativeLG="webos"===globalThis.appMode,isNativeTizen="tizen"===globalThis.appMode,fadeTimeout;function fade(instance,elem,startingVolume){instance._isFadingOut=!0;let newVolume=Math.max(0,startingVolume-.15);return console.log("fading volume to "+newVolume),(elem.volume=newVolume)<=0?(instance._isFadingOut=!1,Promise.resolve()):new Promise(function(resolve,reject){cancelFadeTimeout(),fadeTimeout=setTimeout(function(){fade(instance,elem,newVolume).then(resolve,reject)},100)})}function cancelFadeTimeout(){var timeout=fadeTimeout;timeout&&(clearTimeout(timeout),fadeTimeout=null)}function supportsFade(){return!(isNativeTizen||isNativeLG||browser.operaTv)}function enableHlsPlayer(url,options,mediaSource,mediaType){return!(!htmlMediaHelper.enableHlsJsPlayer(mediaSource.RunTimeTicks,mediaType)||!url.includes(".m3u8")&&"application/x-mpegurl"!==(mediaSource=(options.mimeType||"").toLowerCase())&&"application/vnd.apple.mpegurl"!==mediaSource)}function ensureContentType(url,options,mediaSource,mediaType,signal){return!url.includes(".m3u8")&&(browser.chromecast||htmlMediaHelper.enableHlsJsPlayer(mediaSource.RunTimeTicks,mediaType))?fetch(url,{method:"HEAD",signal:signal}).then(function(response){var response=response.headers.get("Content-Type")||"",contentType=response.toLowerCase();return"application/x-mpegurl"!==contentType&&"application/vnd.apple.mpegurl"!==contentType||(options.mimeType=response),Promise.resolve()}):Promise.resolve()}function stopInternal(instance,destroyPlayer,triggerStopEvent,disableFade){cancelFadeTimeout();let elem=instance._mediaElement;var src=instance._currentSrc;if(elem){if(!destroyPlayer||!supportsFade()||disableFade)return src&&elem.pause(),htmlMediaHelper.onEndedInternal(instance,elem,triggerStopEvent),destroyPlayer&&instance.destroy(),Promise.resolve();let originalVolume=elem.volume;return fade(instance,elem,elem.volume).then(function(){elem.pause(),elem.volume=originalVolume,htmlMediaHelper.onEndedInternal(instance,elem),destroyPlayer&&instance.destroy()})}return Promise.resolve()}function bindMediaManager(instance,elem){browser.chromecast&&(cast.framework.CastReceiverContext.getInstance().getPlayerManager().setMediaElement(elem),instance.bindMediaManagerEvents())}function createMediaElement(instance,playOptions){let elem=instance._mediaElement;return elem?bindMediaManager(instance,elem):((elem=document.querySelector(".mediaPlayerAudio"))||((elem=document.createElement("audio")).classList.add("mediaPlayerAudio"),elem.classList.add("hide"),document.body.appendChild(elem)),playOptions.fullscreen?elem.volume=appSettings.volume()/100:elem.volume=appSettings.themeSongVolume()/100,instance._mediaElement=elem,bindMediaManager(instance,elem)),elem}function HtmlAudioPlayer(){let self=this;function unBindEvents(elem){elem.removeEventListener("timeupdate",onTimeUpdate),elem.removeEventListener("ended",onEnded),elem.removeEventListener("volumechange",onVolumeChange),elem.removeEventListener("ratechange",onRateChange),elem.removeEventListener("pause",onPause),elem.removeEventListener("playing",onPlaying),elem.removeEventListener("waiting",onWaiting),elem.removeEventListener("play",onPlay)}function onEnded(){htmlMediaHelper.onEndedInternal(self,this)}function onTimeUpdate(){var time;self._started&&!self._isFadingOut&&((time=this.currentTime)&&!self._timeUpdated&&(self._timeUpdated=!0),self._currentTime=time,events.trigger(self,"timeupdate"))}function onVolumeChange(){self._isFadingOut||(this._currentPlayOptions?.fullscreen&&appSettings.volume(100*this.volume),events.trigger(self,"volumechange"))}function onRateChange(){events.trigger(self,"playbackratechange")}function onPlaying(e){self._started||(self._started=!0,self.seekOnPlaybackStart(e.target,self._currentPlayOptions.playerStartPositionTicks)),events.trigger(self,"playing")}functio