mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-05-04 01:17:19 +02:00
Added item sessions endpoint
This commit is contained in:
parent
15ca3307bd
commit
d9f828c717
@ -33,6 +33,39 @@ class MeController {
|
|||||||
res.json(payload)
|
res.json(payload)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GET: api/me/item/listening-sessions/:libraryItemId/:episodeId
|
||||||
|
async getListeningSessions(req, res) {
|
||||||
|
const libraryItem = await Database.libraryItemModel.getOldById(req.params.libraryItemId)
|
||||||
|
const episode = (req.params.episodeId && libraryItem && libraryItem.isPodcast) ? libraryItem.media.getEpisode(req.params.episodeId) : null
|
||||||
|
|
||||||
|
if (!libraryItem || (libraryItem.isPodcast && !episode)) {
|
||||||
|
Logger.error(`[PlaybackSessionManager] listening-sessions: Media item not found for library item id "${req.params.id}"`)
|
||||||
|
return {
|
||||||
|
success: false,
|
||||||
|
error: 'Media item not found'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const mediaItemId = episode ? episode.id : libraryItem.media.id
|
||||||
|
let listeningSessions = await this.getUserItemListeningSessionsHelper(req.user.id, mediaItemId)
|
||||||
|
|
||||||
|
const itemsPerPage = toNumber(req.query.itemsPerPage, 10) || 10
|
||||||
|
const page = toNumber(req.query.page, 0)
|
||||||
|
|
||||||
|
const start = page * itemsPerPage
|
||||||
|
const sessions = listeningSessions.slice(start, start + itemsPerPage)
|
||||||
|
|
||||||
|
const payload = {
|
||||||
|
total: listeningSessions.length,
|
||||||
|
numPages: Math.ceil(listeningSessions.length / itemsPerPage),
|
||||||
|
page,
|
||||||
|
itemsPerPage,
|
||||||
|
sessions
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json(payload)
|
||||||
|
}
|
||||||
|
|
||||||
// GET: api/me/listening-stats
|
// GET: api/me/listening-stats
|
||||||
async getListeningStats(req, res) {
|
async getListeningStats(req, res) {
|
||||||
const listeningStats = await this.getUserListeningStatsHelpers(req.user.id)
|
const listeningStats = await this.getUserListeningStatsHelpers(req.user.id)
|
||||||
|
@ -166,6 +166,8 @@ class ApiRouter {
|
|||||||
//
|
//
|
||||||
this.router.get('/me', MeController.getCurrentUser.bind(this))
|
this.router.get('/me', MeController.getCurrentUser.bind(this))
|
||||||
this.router.get('/me/listening-sessions', MeController.getListeningSessions.bind(this))
|
this.router.get('/me/listening-sessions', MeController.getListeningSessions.bind(this))
|
||||||
|
this.router.get('/me/item/listening-sessions/:libraryItemId', MeController.getListeningSessions.bind(this))
|
||||||
|
this.router.get('/me/item/listening-sessions/:libraryItemId/:episodeId', MeController.getListeningSessions.bind(this))
|
||||||
this.router.get('/me/listening-stats', MeController.getListeningStats.bind(this))
|
this.router.get('/me/listening-stats', MeController.getListeningStats.bind(this))
|
||||||
this.router.get('/me/progress/:id/remove-from-continue-listening', MeController.removeItemFromContinueListening.bind(this))
|
this.router.get('/me/progress/:id/remove-from-continue-listening', MeController.removeItemFromContinueListening.bind(this))
|
||||||
this.router.get('/me/progress/:id/:episodeId?', MeController.getMediaProgress.bind(this))
|
this.router.get('/me/progress/:id/:episodeId?', MeController.getMediaProgress.bind(this))
|
||||||
@ -474,6 +476,11 @@ class ApiRouter {
|
|||||||
return userSessions.sort((a, b) => b.updatedAt - a.updatedAt)
|
return userSessions.sort((a, b) => b.updatedAt - a.updatedAt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getUserItemListeningSessionsHelper(userId, mediaItemId) {
|
||||||
|
const userSessions = await Database.getPlaybackSessions({ userId, mediaItemId })
|
||||||
|
return userSessions.sort((a, b) => b.updatedAt - a.updatedAt)
|
||||||
|
}
|
||||||
|
|
||||||
async getUserListeningStatsHelpers(userId) {
|
async getUserListeningStatsHelpers(userId) {
|
||||||
const today = date.format(new Date(), 'YYYY-MM-DD')
|
const today = date.format(new Date(), 'YYYY-MM-DD')
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user