nylonee / watchlistarr

Customizable sync of Plex Watchlist to Sonarr/Radarr
GNU General Public License v3.0
174 stars 14 forks source link

When user starts watching season N, start to monitor season N+1 #63

Open mmgoodnow opened 8 months ago

mmgoodnow commented 8 months ago

I want to make it clear that I'm submitting this issue with no expectations that it will ever be implemented. I recognize this would be a pretty significant expansion of scope, but just throwing it out there to get some opinions.

Problem

Watchlistarr monitors based on the SONARR_SEASON_MONITORING environment variable, but the only really viable one is all if you want people to be able to watch an entire series just by watchlisting. However, if they request something like NCIS and then decide they don't like it in season 1, we're left downloading the other 19 seasons.

Proposal

As part of the Discover Together features, friends can share their watch history with each other (of course, we could get this from something like Tautulli or PMS itself as well).

With this information, I think it'd be possible to monitor series incrementally. The monitoring criteria could look like something along these lines:

function shouldMonitorSeason(series: Series, seasonNumber: number) {
  const maxViewedSeason = getAllEpisodeWatchEventsFromPlex(series, peopleThatWatchlistedIt).map(h => h.seasonNumber).reduce(Math.max)
  return seasonNumber <= maxViewedSeason + 1
}

Potential problems

nylonee commented 8 months ago

This is a great idea, and we could consider implementing this in a future iteration of Watchlistarr.

The idea in theory works, we can intuit the season that somebody's watching, possibly even if they don't have the correct Discover Together permissions enabled (as long as the main user token provided is also the server owner, you can figure out who's watching what on your server).

I think we need to refine this idea a bit more, it's not as clearly black and white as just fetching a watchlist, and I'm not sure if there's a single rule that can be applied for all shows.

As a reverse proposal, we could look at deleting seasons that are below the season that the user is currently watching. So if user X watchlists show Y Seasons 1-3, and nobody else has watchlisted Y, then when X is watching season 2, we can safely delete season 1.