Skip to content

Feature: Podcasts #188

@thecarlhall

Description

@thecarlhall

I've started working on this, so wanted to file an issue for awareness. I'm open to other contributors if there are any.

Phase 1

These functions offer the base functionality for podcast features, and are the most straightforward to implement. They only read or write records in the db. All of the heavy lifting is done by the items in Phase 2. A deviation from the Subsonic/Airsonic implementation is that these functions do not handle any disc IO including downloading or deleting episodes. The daemon will need to be running, or refreshPodcasts called using the CLI. This keeps the web server from suffering resource constraint due to big downloads, and allows the long-running work to be free from the limits of a request/response cycle.

API

  • getPodcasts (since 1.6.0)
  • createPodcastChannel (since 1.9.0)
  • deletePodcastChannel (since 1.9.0)
  • deletePodcastEpisode (since 1.9.0)

PR: #190 - closed; merged to spl0k/podcasts

Phase 2

These functions are expected to handle more data and take longer to run, and are offloaded to the CLI and daemon.

API

  • downloadPodcastEpisode (since 1.9.0) - (blocking) Downloads the remote episode to the local server.
  • refreshPodcasts (since 1.9.0) - (blocking) Updates episode list, and downloads
  • stream - (update) check for url prefix, podcast:, and stream details from podcast_episode table.

CLI

  • downloadPodcastEpidsode - (blocking) Downloads the remote episode to the local server.
  • refreshPodcasts - (blocking) Updates episode list, deletes artifacts for deleted episodes and channels, and downloads episodes if instructed.

Daemon

  • download episode list for new podcast channels. Download episodes if configured to.
  • cleanup episodes marked as deleted. The API marks things deleted.

Later

This should be delayed until API compatibility upgrades past 1.9.0.

  • getNewestPodcasts (since 1.13.0)

Open Questions

Q1: Can episodes be streamed to the client (e.g. Jamstash) from the source and not be stored on the server?
This would save HDD usage on the server, but relies on the source always being available. If streaming from source is not an option, refreshPodcasts should download episodes by default.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions