EmbyCrackedClient/web/modules/chromecast/chromecastplayer.js

1 line
21 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import globalize from"./../common/globalize.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import events from"./../emby-apiclient/events.js";import playbackManager from"./../common/playback/playbackmanager.js";import appSettings from"./../common/appsettings.js";import userSettings from"./../common/usersettings/usersettings.js";function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function getCastSenderApiLoader(){return new Promise(function(resolve,reject){var fileref=document.createElement("script");fileref.setAttribute("type","text/javascript"),fileref.onload=resolve,fileref.setAttribute("src","https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"),document.querySelector("head").appendChild(fileref)})}let currentResolve,currentReject,PlayerName="Chromecast";function sendConnectionResult(isOk){var resolve=currentResolve,reject=currentReject;currentResolve=null,currentReject=null,isOk?resolve&&resolve():reject?reject():playbackManager.removeActivePlayer(PlayerName)}let DEVICE_STATE={IDLE:0,ACTIVE:1,WARNING:2,ERROR:3},PLAYER_STATE={IDLE:"IDLE",LOADING:"LOADING",LOADED:"LOADED",PLAYING:"PLAYING",PAUSED:"PAUSED",STOPPED:"STOPPED",SEEKING:"SEEKING",ERROR:"ERROR"},applicationID="2D4B1DA3",messageNamespace="urn:x-cast:com.connectsdk",CastPlayer=function(){this.deviceState=DEVICE_STATE.IDLE,this.currentMediaSession=null,this.session=null,this.castPlayerState=PLAYER_STATE.IDLE,this.hasReceivers=!1,this.errorHandler=this.onError.bind(this),this.mediaStatusUpdateHandler=this.onMediaStatusUpdate.bind(this),this.currentVolume=1,this.initializeCastPlayer()};function mapItemForLoadMedia(i){return{Id:i.Id,ServerId:i.ServerId,Name:i.Name,Type:i.Type,MediaType:i.MediaType,IsFolder:i.IsFolder,ChannelId:i.ChannelId}}function normalizeImages(state){state&&state.NowPlayingItem&&((state=state.NowPlayingItem).ImageTags&&state.ImageTags.Primary||state.PrimaryImageTag&&(state.ImageTags=state.ImageTags||{},state.ImageTags.Primary=state.PrimaryImageTag),state.BackdropImageTag&&state.BackdropItemId===state.Id&&(state.BackdropImageTags=[state.BackdropImageTag]),state.BackdropImageTag)&&state.BackdropItemId!==state.Id&&(state.ParentBackdropImageTags=[state.BackdropImageTag],state.ParentBackdropItemId=state.BackdropItemId)}function getItemsForPlayback(apiClient,query){var userId=apiClient.getCurrentUserId();return query.Ids&&1===query.Ids.split(",").length?apiClient.getItem(userId,query.Ids.split(",")).then(function(item){return{Items:[item],TotalRecordCount:1}}):(query.Limit=query.Limit||100,query.ExcludeLocationTypes="Virtual",query.EnableTotalRecordCount=!1,apiClient.getItems(userId,query))}function bindEventForRelay(instance,eventName){events.on(instance._castPlayer,eventName,function(e,data){"playlistitemremove"!==eventName&&(data=instance.getPlayerStateInternal(data)),events.trigger(instance,eventName,[data])})}function initializeChromecast(){let instance=this;instance._castPlayer=new CastPlayer,document.dispatchEvent(new CustomEvent("chromecastloaded",{detail:{player:instance}})),events.on(instance._castPlayer,"connect",function(e){currentResolve?sendConnectionResult(!0):playbackManager.setActivePlayer(PlayerName,instance.getCurrentTargetInfo()),console.log("cc: connect"),instance.lastPlayerData=null}),events.on(instance._castPlayer,"playbackstart",function(e,data){console.log("cc: playbackstart"),instance._castPlayer.initializeCastPlayer();data=instance.getPlayerStateInternal(data);events.trigger(instance,"playbackstart",[data])}),events.on(instance._castPlayer,"playbackstop",function(e,data){console.log("cc: playbackstop");data=instance.getPlayerStateInternal(data);events.trigger(instance,"playbackstop",[data]),instance.resetLastPlayerData()}),events.on(instance._castPlayer,"playbackprogress",function(e,data){data=instance.getPlayerStateInternal(data);events.trigger(instance,"timeupdate",[data])}),bindEventForRelay(instance,"timeupdate"),bindEventForRelay(instance,"pause"),bindEventForRelay(instance,"unpause"),bindEventForRelay(ins