advplyr / audiobookshelf

Self-hosted audiobook and podcast server
https://audiobookshelf.org
GNU General Public License v3.0
6.34k stars 448 forks source link

[Enhancement]: respect ttl element if present for podcasts (rss) #2313

Open zeridon opened 10 months ago

zeridon commented 10 months ago

Describe the feature/enhancement

The RSS 2.0 Specification outlines an optional TTL channel element defining how long a feed can be cached (before new fetch). It can be used to automatically set the autoDownloadSchedule to reduce server (both abs and podcast).

nichwall commented 10 months ago

I'm trying to think of how the UI should change to accommodate this. I don't think it should automatically change the download schedule because:

  1. If the UI updates automatically, users may be confused why their settings were changed (or think their changes are not saved)
  2. If the UI does not update and only happens in the background, users may be confused when looking at the logs and saying "there should be a download check here but there isn't"

Maybe the best option is to have an indicator underneath the scheduler (right above "Next scheduled run") that shows whether the RSS feed has a TTL field and displays the TTL there. The TTL is taken into account for the displayed "next scheduled run".

If an RSS feed has a TTL, should the download manager check for new episodes immediately, or wait for the next scheduled run?

I'm thinking "Check immediately if it missed a cron time, otherwise wait for the next cron time."

zeridon commented 10 months ago

Some context maybe.

I am long time user of FeedWordPress aggregator system and got the idea from there. There it has been realised as follows:

Generally from UX/UI point of view:

If time/value permits implement speedup/slowdown of checks in regards of when having custom schedule that does not align with the one the feed suggests.

On the next scheduled run display if implemented in "No unexpected stuff hapening in the UI" principle outlined above the indicator itself is not needed anyways.