mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2026-08-07 04:18:48 +02:00
Support servers with subdirectory
This commit is contained in:
@@ -21,7 +21,10 @@ class AbsAudioPlayerWeb extends WebPlugin {
|
||||
|
||||
// Use startTime to find current track index
|
||||
get currentTrackIndex() {
|
||||
return Math.max(0, this.audioTracks.findIndex(t => Math.floor(t.startOffset) <= this.startTime && Math.floor(t.startOffset + t.duration) > this.startTime))
|
||||
return Math.max(
|
||||
0,
|
||||
this.audioTracks.findIndex((t) => Math.floor(t.startOffset) <= this.startTime && Math.floor(t.startOffset + t.duration) > this.startTime)
|
||||
)
|
||||
}
|
||||
get currentTrack() {
|
||||
return this.audioTracks[this.currentTrackIndex]
|
||||
@@ -37,7 +40,7 @@ class AbsAudioPlayerWeb extends WebPlugin {
|
||||
}
|
||||
get totalDuration() {
|
||||
var total = 0
|
||||
this.audioTracks.forEach(at => total += at.duration)
|
||||
this.audioTracks.forEach((at) => (total += at.duration))
|
||||
return total
|
||||
}
|
||||
get playerPlaying() {
|
||||
@@ -194,7 +197,8 @@ class AbsAudioPlayerWeb extends WebPlugin {
|
||||
// var lastBufferTime = this.getLastBufferedTime()
|
||||
}
|
||||
evtEnded() {
|
||||
if (this.currentTrackIndex < this.audioTracks.length - 1) { // Has next track
|
||||
if (this.currentTrackIndex < this.audioTracks.length - 1) {
|
||||
// Has next track
|
||||
console.log(`[AbsAudioPlayer] Track ended - loading next track ${this.currentTrackIndex + 1}`)
|
||||
var nextTrack = this.audioTracks[this.currentTrackIndex + 1]
|
||||
this.playWhenReady = true
|
||||
@@ -221,7 +225,7 @@ class AbsAudioPlayerWeb extends WebPlugin {
|
||||
this.player.play()
|
||||
}
|
||||
}
|
||||
evtTimeupdate() { }
|
||||
evtTimeupdate() {}
|
||||
|
||||
sendPlaybackMetadata(playerState) {
|
||||
this.notifyListeners('onMetadata', {
|
||||
@@ -235,7 +239,9 @@ class AbsAudioPlayerWeb extends WebPlugin {
|
||||
if (!this.currentTrack) return
|
||||
// When direct play track is loaded current time needs to be set
|
||||
this.trackStartTime = Math.max(0, this.startTime - (this.currentTrack.startOffset || 0))
|
||||
this.player.src = `${vuexStore.getters['user/getServerAddress']}${this.currentTrack.contentUrl}?token=${vuexStore.getters['user/getToken']}`
|
||||
const serverAddressUrl = new URL(vuexStore.getters['user/getServerAddress'])
|
||||
const serverHost = `${serverAddressUrl.protocol}//${serverAddressUrl.host}`
|
||||
this.player.src = `${serverHost}${this.currentTrack.contentUrl}?token=${vuexStore.getters['user/getToken']}`
|
||||
console.log(`[AbsAudioPlayer] Loading track src ${this.player.src}`)
|
||||
this.player.load()
|
||||
this.player.playbackRate = this.playbackRate
|
||||
|
||||
+7
-2
@@ -26,14 +26,19 @@ class ServerSocket extends EventEmitter {
|
||||
this.serverAddress = serverAddress
|
||||
this.token = token
|
||||
|
||||
console.log('[SOCKET] Connect Socket', this.serverAddress)
|
||||
const serverUrl = new URL(serverAddress)
|
||||
const serverHost = `${serverUrl.protocol}//${serverUrl.host}`
|
||||
const serverPath = serverUrl.pathname === '/' ? '' : serverUrl.pathname
|
||||
|
||||
console.log(`[SOCKET] Connecting to ${serverHost} with path ${serverPath}/socket.io`)
|
||||
|
||||
const socketOptions = {
|
||||
transports: ['websocket'],
|
||||
upgrade: false,
|
||||
path: `${serverPath}/socket.io`
|
||||
// reconnectionAttempts: 3
|
||||
}
|
||||
this.socket = io(this.serverAddress, socketOptions)
|
||||
this.socket = io(serverHost, socketOptions)
|
||||
this.setSocketListeners()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user