* fix(dlna): improve activity tracking accuracy and efficiency
- Remove play duration tracking: DLNA clients buffer aggressively and
don't report playback position, making duration estimates unreliable.
Saving inaccurate values corrupts analytics.
- Combine database transactions: Resume time and view count updates
now happen in a single transaction for atomicity and performance.
- Keep resume time tracking: While imprecise, it provides useful
"continue watching" hints. The cost of being wrong is low (user
just seeks).
* remove elasped time check
Adds time-based activity tracking for scenes played via DLNA, enabling
play count, play duration, and resume time tracking similar to the
web frontend.
Key features:
- Uses existing 'trackActivity' UI setting (no new config needed)
- Time-based tracking (elapsed session time / video duration)
- 5-minute session timeout to handle aggressive client buffering
- Minimum thresholds before saving (1% watched or 5 seconds)
- Respects minimumPlayPercent setting for play count increment
Implementation:
- New ActivityTracker in internal/dlna/activity.go
- Session management with automatic expiration
- Integration via DLNA service initialization
Limitations:
- Cannot detect actual playback position (only elapsed time)
- Cannot detect seeking or pause state
- Designed for upstream compatibility (no complex dependencies)