Fix operator precedence and inverted dedup logic in audiobooks playlog (#3153)
Two bugs in the audiobook resume/playlog tracking:
1. `int(media_item.resume_position_ms or 0 / 1000)` never divides by
1000 because `/` binds tighter than `or`. The expression evaluates as
`int(resume_position_ms or (0 / 1000))`, so non-zero values pass
through as raw milliseconds instead of seconds.
2. The dedup check `abs(difference) > 2` skips the DB write when data
HAS changed (difference > 2 seconds) and writes when it has NOT
changed (difference <= 2 seconds). The comparison is inverted.
Co-authored-by: David Bishop <git@gnuconsulting.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>