New Top Level object Podcast
A Podcast has
- url
- title
- feed_url (hidden by default)
- episodes
Array of PodcastEpisode objects
- abandoned
Boolean. Defaults to false. If true indicates we should no longer suck down new episodes.
- delete_unsaved_episodes_after
Number of days after which audiofiles will be deleted. 0 or null indicates never delete episodes we've downloaded from this podcast.
- XXX whatever bookmark uses to indicate a failed archive attempt when we can't download it anymore
A PodcastEpisode has
- url
- title
- timestamp
- remote_audio_file_url
- local_audio_file_url
- transcript
created via whisper
- saved
Boolean indicates this episode shouldn't be deleted even after N days
Behavior
Form Submission for New Podcast
system will attempt to find feed_url by downloading url and looking tags pointing to RSS / ATOM feed URLs. If it can't find one it'll bring the user back to the page with the feed_url field visible. NOTE: the url may actually be the feed_url and we must test for this, ?and then reverse engineer the URL?
Once it has the Feed URL it'll try and find if ANY (not all) of the episodes in the feed have audio file attachments.
If neither the system, nor the user, can find a feed URL then the the Podcast object won't be created.
Checking for new episodes & deleting old ones
A cronjob will iterate over all Podcasts where abandoned == false download their feeds, look for new episodes, download those, delete the local audiofile url for any that are > delete_unsaved_episodes_after days old unless saved
Display
In the main timeline each episode will be an entry in between bookmarks based on the episode's timestamp
The episode view will have an audio player widget if there is a local copy, or a link to the episode page / audio file if there isn't.
The podcast view will have a reverse chronological list of all the episodes with links to the episode pages.
New Top Level object Podcast
A Podcast has
Array of PodcastEpisode objects
Boolean. Defaults to
false. If true indicates we should no longer suck down new episodes.Number of days after which audiofiles will be deleted. 0 or null indicates never delete episodes we've downloaded from this podcast.
A PodcastEpisode has
created via whisper
Boolean indicates this episode shouldn't be deleted even after N days
Behavior
Form Submission for New Podcast
system will attempt to find
feed_urlby downloadingurland looking tags pointing to RSS / ATOM feed URLs. If it can't find one it'll bring the user back to the page with thefeed_urlfield visible. NOTE: theurlmay actually be thefeed_urland we must test for this, ?and then reverse engineer the URL?Once it has the Feed URL it'll try and find if ANY (not all) of the episodes in the feed have audio file attachments.
If neither the system, nor the user, can find a feed URL then the the
Podcastobject won't be created.Checking for new episodes & deleting old ones
A cronjob will iterate over all Podcasts where
abandoned == falsedownload their feeds, look for new episodes, download those, delete the local audiofile url for any that are >delete_unsaved_episodes_afterdays old unlesssavedDisplay
In the main timeline each episode will be an entry in between bookmarks based on the episode's timestamp
The episode view will have an audio player widget if there is a local copy, or a link to the episode page / audio file if there isn't.
The podcast view will have a reverse chronological list of all the episodes with links to the episode pages.