EmbyCrackedClient/web/modules/playback/currentplayer.js

1 line
2.8 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import connectionManager from"./../emby-apiclient/connectionmanager.js";import playbackManager from"./../common/playback/playbackmanager.js";import events from"./../emby-apiclient/events.js";function CurrentPlayer(){let self=this,player=null;function onPlayerEvent(e,state){state=state||self.getPlayerState(),events.trigger(self,e.type,[state])}function onTimeUpdateEvent(e,state){var durationTicks=(state=state||self.getPlayerState())?.NowPlayingItem?.RunTimeTicks||0,state=state?.PositionTicks||0;events.trigger(self,e.type,[state,durationTicks])}function bindToPlayer(newPlayer){player&&(events.off(player,"playbackstart",onPlayerEvent),events.off(player,"playbackstop",onPlayerEvent),events.off(player,"unpause",onPlayerEvent),events.off(player,"pause",onPlayerEvent),events.off(player,"statechange",onPlayerEvent),events.off(player,"timeupdate",onTimeUpdateEvent),events.trigger(self,"uninit",[player]),player=null),newPlayer&&(player=newPlayer,events.on(player,"playbackstart",onPlayerEvent),events.on(player,"playbackstop",onPlayerEvent),events.on(player,"unpause",onPlayerEvent),events.on(player,"pause",onPlayerEvent),events.on(player,"statechange",onPlayerEvent),events.on(player,"timeupdate",onTimeUpdateEvent),events.trigger(self,"init",[player]))}this.get=function(){return player},this.nextTrack=function(){return player?playbackManager.nextTrack(player):Promise.reject()},this.previousTrack=function(){return player?playbackManager.previousTrack(player):Promise.reject()},this.pause=function(){player&&playbackManager.pause(player)},this.unpause=function(){player&&playbackManager.unpause(player)},this.stop=function(){return player?playbackManager.stop(player):Promise.reject()},this.rewind=function(){return player?playbackManager.rewind(player):Promise.reject()},this.fastForward=function(){return player?playbackManager.fastForward(player):Promise.reject()},this.seek=function(ticks){return player?playbackManager.seek(ticks,player):Promise.reject()},this.seekable=function(){return!(!player||!player.seekable)&&player.seekable()},this.duration=function(){return player?player.duration():0},this.currentTime=function(){return player?player.currentTime():0},this.paused=function(){return!!player&&player.paused()},this.getPlayerState=function(){return player?playbackManager.getPlayerState(player):null},this.isPairing=function(){return playbackManager.isPairing()},this.getImageUrl=function(serverId,itemId,options){return connectionManager.getApiClient({ServerId:serverId}).getImageUrl(itemId,options)},events.on(playbackManager,"playerchange",function(){bindToPlayer(playbackManager.getCurrentPlayer())}),bindToPlayer(playbackManager.getCurrentPlayer()),navigator.mediaSession&&(navigator.mediaSession.metadata=new MediaMetadata({title:"none",artist:"none"}),window.setTimeout(()=>navigator.mediaSession.metadata=null,500))}export default new CurrentPlayer;