EmbyCrackedClient/web/modules/sessionplayer.js

1 line
14 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import playbackManager from"./common/playback/playbackmanager.js";import connectionManager from"./emby-apiclient/connectionmanager.js";import events from"./emby-apiclient/events.js";import serverNotifications from"./common/input/api.js";import MethodTimer from"./common/methodtimer.js";let PlayerName="Remote Control";function sendPlayCommand(instance,apiClient,options,playType){instance=instance.currentSessionId,playType={ItemIds:(options.ids||options.items.map(function(i){return i.Id})).join(","),PlayCommand:playType};return null!=options.startPositionTicks&&(playType.StartPositionTicks=options.startPositionTicks),options.mediaSourceId&&(playType.MediaSourceId=options.mediaSourceId),null!=options.audioStreamIndex&&(playType.AudioStreamIndex=options.audioStreamIndex),null!=options.subtitleStreamIndex&&(playType.SubtitleStreamIndex=options.subtitleStreamIndex),null!=options.startIndex&&(playType.StartIndex=options.startIndex),apiClient.sendPlayCommand(instance,playType)}function sendPlayStateCommand(instance,apiClient,command,options){instance=instance.currentSessionId;return apiClient.sendPlayStateCommand(instance,command,options)}function getCurrentApiClient(instance){instance=instance.currentServerId;return instance?connectionManager.getApiClient(instance):connectionManager.currentApiClient()}function sendCommandByName(instance,name,options){name={Name:name};return options&&(name.Arguments=options),instance.sendCommand(name)}function clearPollInterval(instance){instance.pollInterval&&(instance.pollInterval.destroy(),instance.pollInterval=null)}function unsubscribeFromPlayerUpdates(instance){getCurrentApiClient(instance).stopMessageListener("SessionEvents"),clearPollInterval(instance)}function processUpdatedSessions(instance,sessions,apiClient){let currentTargetId=instance.currentSessionId;processUpdatedSession(instance,sessions.filter(function(s){return s.Id===currentTargetId})[0],apiClient)}function triggerEvent(instance,eventName,session){"sessionstarted"===eventName&&(eventName="statechange"),session?events.trigger(instance,eventName,[session]):events.trigger(instance,eventName)}function processSessionEvent(instance,sessionEventInfo,apiClient){var eventName=(sessionEventInfo.EventName||"statechange").toLowerCase();if("sessionended"===eventName||"remotecontroldisconnected"===eventName)instance.lastPlayerData=null,playbackManager.removeActivePlayer(PlayerName);else{let session=sessionEventInfo.SessionInfo;if(session)normalizeImages(session,apiClient),session.NowPlayingItem&&(session.NowPlayingItem.ServerId=apiClient.serverId()),session.MediaSource||(session.MediaSource=session.NowPlayingItem),session.NextMediaType=sessionEventInfo.NextMediaType,instance.lastPlayerData=session,triggerEvent(instance,eventName,session);else if(session=instance.lastPlayerData){let playState=session.PlayState,triggerTimeUpdate=(playState=playState||{},!1);null!=sessionEventInfo.PositionTicks&&(playState.PositionTicks=sessionEventInfo.PositionTicks,triggerTimeUpdate=!0),null!=sessionEventInfo.PlaylistIndex&&(session.PlaylistIndex=sessionEventInfo.PlaylistIndex),null!=sessionEventInfo.PlaylistLength&&(session.PlaylistLength=sessionEventInfo.PlaylistLength),null!=sessionEventInfo.PlaylistItemId&&(session.PlaylistItemId=sessionEventInfo.PlaylistItemId),null!=sessionEventInfo.IsPaused&&(playState.IsPaused=sessionEventInfo.IsPaused),null!=sessionEventInfo.VolumeLevel&&(playState.VolumeLevel=sessionEventInfo.VolumeLevel),null!=sessionEventInfo.IsMuted&&(playState.IsMuted=sessionEventInfo.IsMuted),null!=sessionEventInfo.RepeatMode&&(playState.RepeatMode=sessionEventInfo.RepeatMode),null!=sessionEventInfo.Shuffle&&(playState.Shuffle=sessionEventInfo.Shuffle),null!=sessionEventInfo.SubtitleOffset&&(playState.SubtitleOffset=sessionEventInfo.SubtitleOffset),null!=sessionEventInfo.PlaybackRate&&(playState.PlaybackRate=sessionEventInfo.PlaybackRate),"subtitletrackchange"===eventName?playState.SubtitleStreamIndex=sessionEventInfo.SubtitleStreamIndex:"audiotrackchange"===eventName&&(playState.AudioStreamIndex=sessionEventInfo.AudioStreamIndex),"playlistit