Keep track of the playback position
Use cases
Currently when you play an episode it is immediately marked as listened/played no matter how much of the stream duration has passed. This can be annoying if for whatever reason decide to switch to another episode or close the app cause you lose track of both which episodes you have actually listened and which ones you left in the middle.
Desired behavior
The application should be able to recognize what episode are actually listened, what were started but not finished, and what are "new" in the sense they were never played before. This will need UX design to accommodate the underlying functionality.
Benefits of the solution
I've opened an issue against gstreamer_player for an easy API to implement such feature.
There are 2 different tasks here.
- Keep track of the duration position in an episode stream
- Have a smart marker that can take actions, such as marking something played, according to the duration passed
I envision the smart marker as something that given the duration passed and the overall duration of a stream, it can determine when the episode should be marked as played/listened or not.
Examples:
- if the passed duration is over
$PERCENTAGE
(95% for example) mark it as played - If total duration - passed duration ==
$SECONDS_LEFT
(30s for example) mark it as played - Combination of both
- Able to adjust values according to the episode/stream total duration. For example 95% or 30s values seem a bit high if the overall episode is 5min long.
Possible drawbacks
Implementation wise it might be hard and take a while to cover all the edge cases. It's usual for features like this to end up with zombie episodes cropping up due to edge cases not being considered. I've seen it even on the Netflix queue for example. We need to be really careful on how this it implemented to avoid zombie states.
Misc.
Part of #63