mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-07-23 04:14:46 +02:00
Add:Api route to sync stream data for use in android native
This commit is contained in:
parent
a052366dac
commit
1b03af4041
4 changed files with 51 additions and 4 deletions
|
@ -194,6 +194,46 @@ class StreamManager {
|
|||
}
|
||||
}
|
||||
|
||||
streamSyncFromApi(req, res) {
|
||||
var user = req.user
|
||||
var syncData = req.body
|
||||
|
||||
var stream = this.streams.find(s => s.id === syncData.streamId)
|
||||
if (!stream) {
|
||||
Logger.error(`[StreamManager] streamSyncFromApi stream not found ${syncData.streamId}`)
|
||||
return res.status(404).send('Stream not found')
|
||||
}
|
||||
if (stream.userToken !== user.token) {
|
||||
Logger.error(`[StreamManager] streamSyncFromApi Invalid stream not owned by user`)
|
||||
return res.status(500).send('Invalid stream auth')
|
||||
}
|
||||
|
||||
var listeningSession = stream.syncStream(syncData)
|
||||
|
||||
if (listeningSession && listeningSession.timeListening > 0) {
|
||||
// Save listening session
|
||||
var existingListeningSession = this.db.sessions.find(s => s.id === listeningSession.id)
|
||||
if (existingListeningSession) {
|
||||
this.db.updateEntity('session', listeningSession)
|
||||
} else {
|
||||
this.db.sessions.push(listeningSession.toJSON()) // Insert right away to prevent duplicate session
|
||||
this.db.insertEntity('session', listeningSession)
|
||||
}
|
||||
}
|
||||
|
||||
var userAudiobook = user.updateAudiobookProgressFromStream(stream)
|
||||
this.db.updateEntity('user', user)
|
||||
|
||||
if (userAudiobook) {
|
||||
this.clientEmitter(user.id, 'current_user_audiobook_update', {
|
||||
id: userAudiobook.audiobookId,
|
||||
data: userAudiobook.toJSON()
|
||||
})
|
||||
}
|
||||
|
||||
res.sendStatus(200)
|
||||
}
|
||||
|
||||
streamUpdate(socket, { currentTime, streamId }) {
|
||||
var client = socket.sheepClient
|
||||
if (!client || !client.stream) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue