IgnisDa / ryot

Roll your own tracker!
https://ryot.io
GNU General Public License v3.0
1.84k stars 48 forks source link

[FEATURE REQUEST] Rethink monitored media and updating them #929

Closed Artnal closed 4 weeks ago

Artnal commented 1 month ago

Hi there,

Was there an update to the categories recently? Almost all of my shows lost the tag "monitoring" without action on my part, which means the "upcoming" section is now basically empty. Did something change in teh way the categories work? I redid it manually, but I just wanted to check that it was intended behaviour.

Thanks!

Edit: after putting them back on the "Monitoring" list manually and running a "Perform all background tasks", the upcoming section is still empty. I'm not sure if I missed something, is that section now reserved to "Watchlist" category instead of "Monitoring"?

IgnisDa commented 1 month ago

Yes items are automatically removed from monitoring after 30 days.

upcoming section is still empty

I think they should show up after the nightly cron job. If they do not, please ping me here.

Artnal commented 1 month ago

Duly noted for the 30 days, but then maybe I'm misunderstanding something about the way to stay up to date on series.

Let's say I watch this year's season of a TV show that I'm monitoring. I finish the season, it gets the "completed" since next season isn't announced yet. The "monitoring" tag disappears after a month, and a new season is later announced. How do I make sure I actually get the show in the upcoming section when the next season is released a year late, since it wouldn't have the "monitoring" tag anymore?

Thanks!

IgnisDa commented 1 month ago

There is an env variable: MEDIA_MONITORING_REMOVE_AFTER_DAYS (defaults to 30) which can be used to control this.

But you raise a valid concern which I do not have a solution for. The reason I implemented this feature was because once too many movies/shows are added to the collection, the nightly cron job sends too many requests to tmdb and gets rate limited. I fear that the keys hard-coded into ryot might be banned.

Can you think of a better approach to this?

IgnisDa commented 1 month ago

I once implemented a solution using collection information templates which asked users how many days they want to keep media in monitoring. But the resulting UX was bad I removed it.

Maybe some kind of exponential back-off will work here? But I have never implemented those.

Artnal commented 1 month ago

That's a good point. Maybe past a certain time, monitored series could go into a sort of "cold storage" where the cron job is much less frequent? For instance: 30 days after last episode aired, cron job becomes weekly for that series? That might still mean some rate limiting if all these weekly jobs happen at the same time for all users though.

Alternatively, I don't know if there is a way to pull only the next episode date from another source. The idea is that a proper pull from TVDB is only needed when there is actually a new season planned. Is the calendar currently working on the same system as the "monitoring"?

As a side note, sonarr has probably figured out a way around this, since their calendar remains up to date with the upcoming episodes, with the option to show either only the shows you monitor or every show you have in your db. I'm not sure how they do it, though...

IgnisDa commented 1 month ago

Is the calendar currently working on the same system as the "monitoring"?

As soon as a media is first committed to database, all the events associated to it are added to calendar. When a change is detected in a media, it is refreshed and new dates are also committed to the calendar and also clean up out dated ones.

sonarr has probably figured out a way around this

Maybe you can get a PR going? :P

Artnal commented 1 month ago

As soon as a media is first committed to database, all the events associated to it are added to calendar. When a change is detected in a media, it is refreshed and new dates are also committed to the calendar and also clean up out dated ones.

But those changes come from the same pulls as the ones for the "monitoring" category, or is it a separate one? (I'm wondering if it's possible to rely on the calendar to then trigger whether or not tvdb should be queried, or if it's just circular reasoning).

Maybe you can get a PR going? :P

To be absolutely honest: I'd love to, but while I sort of understand how IT works, that's not my field at all and I've litterally never coded anything in my life, I have no idea how the "behind the scenes" works. :x

IgnisDa commented 1 month ago

But those changes come from the same pulls as the ones for the "monitoring" category, or is it a separate one? (I'm wondering if it's possible to rely on the calendar to then trigger whether or not tvdb should be queried, or if it's just circular reasoning).

No the calendar committed to the db is not a reliable source for this purpose. The only reliable one is the TMDB API.

I think your idea of "cold storage" is pretty good. I will see what I can do.

IgnisDa commented 1 month ago

One problem I am encountering: there is no easy way to tell if a media item has actually changed once I get it from the API. So I can't even update the last_changed field reliably. 🤔 idk how to solve this lol. Will have to give it more thought.

elvis0288 commented 1 month ago

hey guys what about using status of the show, so for instance in tmdb there is a status field image

if that status field is 'ended' or 'canceled' as the example above, there after completing all episodes, it can be removed from monitoring because it is done (also the 30 days will work).

image but is the status is other than 'ended' or 'canceled' they should continue to be monitoring even after completing all the episoded.. i do not think people will have more than 10 to 20 shows that they will be watching/waiting for a new season.

IgnisDa commented 1 month ago

That's a neat idea. What about media which is not from tmdb? For example books from open library. On what basis would they be removed?

elvis0288 commented 1 month ago

well this will work for tv shows, for books i guess it should not matter as each book has its own name so i am not sure how you keep those but they are each its own. on tv shows you have the returning every year or 2 so that is what it makes it special and different

IgnisDa commented 1 month ago

So it would have to be monitored for 2 years 😱😱😱??

elvis0288 commented 1 month ago

lol, well i mean i guess you can add a validation that if monitoring and not cancel or ended, can be check every month or so until you actually get the returning date for the first episode of the new season.. then it will get back to the normal monitoring.. i guess it needs a new parameter that will handle if the user finished it and it is not ended or cancelled then that parameter is set to true and it will trigger the API only once a month or so until it gets back the returning date, then it will go back into the regular monitoring. and it would also go into the up next to watch

IgnisDa commented 4 weeks ago

Closing this since I feel like this behaviour is fine.