Opened 5 years ago

Last modified 10 months ago

#12296 assigned Patch - Feature

Watchlist Improvements

Reported by: Roger Siddons <dizygotheca@…> Owned by: Roger Siddons
Priority: minor Milestone: unknown
Component: MythTV - General Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

The watchlist has 2 functions:

a) to select the 'first' episode of each series of recordings, b) to present the resulting titles in a convenient order for watching

Issues

(a) 1. It currently selects the earliest/oldest episode so the wrong recording is shown when episodes are recorded out of order.

(a) 2. Series are grouped by recording rule. For rules that record different titles, the later ones will be hidden. Multiple episodes of the same title are shown when multiple rules record the same title.

(b) 3. Current ordering uses arbitrary weightings with a highly subjective set of rules summarised as:

  • promote series with many episodes
  • promote series that are about to record again
  • promote new recordings for 42 hrs
  • promote recordings from the same time of day, demote others
  • promote daily/weekly recordings
  • hide series that have been recently deleted
  • promote quickly watched series
  • demote old recordings

In practice this produces a seemingly random and unintuitive order which is then frequently reshuffled.


A series of patches is attached for ease of review, but should be applied in sequence.

  1. Group watchlist recordings by title rather than recording rule. Thus different titles recorded by a one rule are all shown and a single title recorded by multiple rules are grouped together. Also a pre-requisite for selection by episode number.
  1. 'First' episodes are selected by season/episode as well as age. Initial selection is age. However if the oldest episode has season/episode numbers assigned then it is superseded by any earlier season/episode that exists. Specials or untagged recordings that co-exist with tagged ones thus appear in proper sequence.
  1. The watchlist currently caches its scores in ProgramInfo::recpriority2 in order to display the program score/state on the Info/ProgDetails screen. This is confusing and an abuse of ProgramInfo.
    The score/state is of no interest to the user, who cannot alter it. It is debug information that belongs in the logs and has been removed along with the ProgramInfo caching.
    Themes should remove WATCH_LIST_SCORE & WATCH_LIST_STATUS widgets from progdetails*.html. However they are set as empty to prevent breakage for now.
  1. A new UI widget "watchtotal" enables the watchlist to show the number of episodes of each title, for example a "recordings" buttonlist widget of:
    <textarea name="title">
      <template>%title%% (|watchtotal| episodes)%% - "|subtitle|"%</template>
    </textarea>
    
    will produce:
    The Simpsons (15 episodes) - "Homer does something stupid"
    
    This widget only exists when the Watchlist group is selected in the groups list - for other groups it will show the usual:
    The Simpsons - "Homer does something stupid"
    
  1. Restructures the code to support multiple sort strategies. Adds a setting "WatchListOrder" so the user can select their preferred sorting strategy in Setup/TV Settings/TV Playback/Page 6. It defaults to "Classic" - the existing strategy.
  1. Adds a new simplified sort strategy "LimitedOldest" that is IMHO more stable, intuitive & useful. Titles are ordered by record date (oldest first). New titles & quickly-watched titles are placed at the top; titles that remain unwatched are relegated to the bottom. Two new settings "PlaybackWLRecentLimit" & "PlaybackWLOldLimit" are introduced so the user can adjust this behaviour.

Attachments (6)

0001-Watchlist-Group-by-title-rather-than-recording-rule.patch (3.3 KB) - added by Roger Siddons <dizygotheca@…> 5 years ago.
0002-Watchlist-Select-by-episode-numbers-and-date.patch (6.3 KB) - added by Roger Siddons <dizygotheca@…> 5 years ago.
0003-Watchlist-Remove-caching-prog-details-info-improve-l.patch (20.6 KB) - added by Roger Siddons <dizygotheca@…> 5 years ago.
0004-Watchlist-Add-watchtotal-widget-theme-support.patch (2.9 KB) - added by Roger Siddons <dizygotheca@…> 5 years ago.
0005-Watchlist-Implement-multiple-ordering-strategies.patch (19.7 KB) - added by Roger Siddons <dizygotheca@…> 5 years ago.
0006-Watchlist-Add-Oldest-with-Limits-strategy.patch (10.5 KB) - added by Roger Siddons <dizygotheca@…> 5 years ago.

Download all attachments as: .zip

Change History (15)

Changed 5 years ago by Roger Siddons <dizygotheca@…>

Changed 5 years ago by Roger Siddons <dizygotheca@…>

Changed 5 years ago by Roger Siddons <dizygotheca@…>

Changed 5 years ago by Roger Siddons <dizygotheca@…>

Changed 5 years ago by Roger Siddons <dizygotheca@…>

Changed 5 years ago by Roger Siddons <dizygotheca@…>

comment:1 Changed 4 years ago by Karl Egly

Owner: set to Roger Siddons
Status: newassigned

Roger, assigning your open patches to yourself. Feel free to unassign if you prefer a review.

comment:2 Changed 3 years ago by Roger Siddons <rsiddons@…>

Resolution: fixed
Status: assignedclosed

In 67f4135dfd1d9e5408e16581b92612805645fb88/mythtv:

From 7bfc97ed65809d0ecd8c7b0394f7fa12e50ea28f Mon Sep 17 00:00:00 2001
Subject: [PATCH 2/2] Watchlist with lastPlayPos

Watchlist: Refactor & remove debug info

The watchlist abuses ProgramInfo::recpriority2 to cache scores for display on the Info/ProgDetails? screen.
The score/state is of no interest to the user, who cannot alter it. It is debug information that belongs in the logs and has been removed from the screens.
Themes should remove WATCH_LIST_SCORE & WATCH_LIST_STATUS widgets from htmls/progdetails*.html. However they are set as empty to prevent breakage for now.

Refs #12296

Watchlist: Group by title rather than record rule

Watchlist groups titles using the record rule id.
Thus different titles recorded by a one rule are confusingly grouped together.
And the same title recorded by different rules are shown in different groups.
Also a pre-requisite for selection by episode number.

Grouping ignores title case, whitespace and punctuation.

Ref #12296

Watchlist: Use season/episode when selecting an episode

Watchlist always selects the earliest/oldest episode, so the wrong recording is shown when episodes are recorded out of order.
This patch uses season/episode data to override the oldest selection, where appropriate.

Refs #12296

Watchlist: Add theme widget to show watchlist episode count

A new UI widget "watchtotal" enables the watchlist to show the number of episodes available for each title.
For example a "recordings" buttonlist specification of:

<textarea name="title">

<template>%title%% (|watchtotal| episodes)%% - "|subtitle|"%</template>

</textarea>

will produce:

The Simpsons (15 episodes) - "Homer does something stupid"

This widget is only set when the Watchlist group is selected in the groups list - for other groups it will show the usual:

The Simpsons - "Homer does something stupid"

Refs #12296

Watchlist: Add 'Limited Oldest' strategy

Adds a new simplified sort strategy "LimitedOldest?" that is more stable, intuitive & useful than the current 'Classic' one.
Titles are ordered by record date (oldest first) so the list is predictable and does not spontaneously shuffle.
Optionally new titles & quickly-watched titles can be promoted to the top and titles that remain unwatched for a long period can be relegated to the bottom.
Two new settings "PlaybackWLRecentLimit" & "PlaybackWLOldLimit" are introduced so the user can adjust this behaviour.

User can choose between this and the 'classic' sort strategy via a new setting "PlaybackWLOrder"

Fixes #12296

Watchlist: Place part-watched shows at top

Watchlist: Update watchlist after metadata edits

Prevent metadata edits updating the recording list directly.
They must be processed by a ProgInfo? update in order to update watchlist.

comment:3 Changed 3 years ago by Roger Siddons

Resolution: fixed
Status: closednew

comment:4 Changed 3 years ago by Roger Siddons

Status: newassigned

comment:5 Changed 3 years ago by Roger Siddons

Restoring status as ticket was only closed (automatically) due to an unintentional commit which was immediately reverted.

comment:6 Changed 3 years ago by Stuart Auchterlonie

Milestone: unknown29.0

comment:7 Changed 2 years ago by Stuart Auchterlonie

Milestone: 29.029.1

comment:8 Changed 21 months ago by Roger Siddons

Milestone: 29.130.0

comment:9 Changed 10 months ago by dizygotheca

Milestone: 30.0unknown
Note: See TracTickets for help on using tickets.