Skip to content

Commit 72d3d1f

Browse files
committed
fix(plaxt): scrobble as "media.resume" if paused
1 parent 9c7ab8d commit 72d3d1f

File tree

2 files changed

+17
-19
lines changed

2 files changed

+17
-19
lines changed

handler/const.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ const (
4646
const (
4747
sessionUnplayed sessionStatus = iota
4848
sessionPlaying
49+
sessionPaused
4950
sessionStopped
5051
sessionWatched
5152
)

handler/plex.go

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ func (a sessionData) Check(b sessionData) (bool, bool) {
106106
return true, true
107107
}
108108
if a.progress != b.progress {
109-
return true, false
109+
if a.status == sessionPlaying {
110+
return true, false
111+
}
112+
return true, true
110113
}
111114
if a.lastEvent != b.lastEvent {
112115
return true, false
@@ -318,38 +321,32 @@ func (c *PlexClient) syncTimelineWithPlaxt(r *http.Request, user *plexUser) {
318321
}
319322

320323
var event string
324+
var threshold int
321325
switch state {
322326
case "playing":
323-
if session.status == sessionPlaying {
324-
if progress >= 100 {
325-
event = webhookEventScrobble
326-
} else {
327-
event = webhookEventResume
328-
}
329-
} else {
327+
threshold = 100
328+
if session.status == sessionUnplayed || session.status == sessionStopped {
330329
event = webhookEventPlay
331-
}
332-
case "paused":
333-
if progress >= watchedThreshold && session.status == sessionPlaying {
334-
event = webhookEventScrobble
335330
} else {
336-
event = webhookEventPause
331+
event = webhookEventResume
337332
}
333+
case "paused":
334+
threshold = watchedThreshold
335+
event = webhookEventPause
338336
case "stopped":
339-
if progress >= watchedThreshold && session.status == sessionPlaying {
340-
event = webhookEventScrobble
341-
} else {
342-
event = webhookEventStop
343-
}
337+
threshold = watchedThreshold
338+
event = webhookEventStop
344339
}
345340
if event == "" {
346341
return
342+
} else if progress >= threshold {
343+
event = webhookEventScrobble
347344
}
348345
switch event {
349346
case webhookEventPlay, webhookEventResume:
350347
session.status = sessionPlaying
351348
case webhookEventPause:
352-
session.status = sessionStopped
349+
session.status = sessionPaused
353350
case webhookEventStop:
354351
session.status = sessionStopped
355352
go clearCachedMetadata(ratingKey, user.Id)

0 commit comments

Comments
 (0)