Skip to main content

Flask webapp that will archive a podcast from a RSS feed. It will download the episodes and re-host them.

Project description

Archive Podcast

Check CheckType Test codecov Docker SpellCheck

Flask webapp that will archive a podcast from a RSS feed. It will download the episodes and re-host them.

Features:

  • Webapp
    • List of feeds hosted
    • File listing for unlisted episodes
    • Web player
    • Health check page
  • Looks for new episodes to fetch every hour
  • Rename feeds to indicate that they are an archive
  • Local or S3 storage backend

In theory this works in windows however I haven't tested it, it ~should be able to handle windows file paths fine.

Docs are at https://archivepodcast.readthedocs.io/en/latest/

Setup

Install dependencies

You will need to install ffmpeg for your platform. Should be on your package manager or download the binary to /usr/local/bin.

You will need to install git-lfs for your platform to fetch the .woff font files.

If you cloned the repo without git-lfs installed, run the following commands to fetch the files:

git lfs install
git lfs fetch --all
git lfs pull

Pre Commit Hooks

To set up pre-commit hooks run:

uv tool add pre-commit --upgrade
pre-commit install

Setup Python Environment

Development

uv venv
source .venv/bin/activate
uv sync

Production

uv venv
source .venv/bin/activate
uv sync --no-default-groups

Running archivepodcast webapp

This will run a webapp on http://localhost:5100 (configurable) that will:

  • Run persistently
  • Host RSS feeds of the podcasts
  • If "live" : true in config toml is set it will look for and download new episodes every hour
  • If you send it a SIGHUP command it will reload the configuration, be sure to check the logs to see if it was successful.

Development: flask --app archivepodcast run --port 5100

Production: waitress-serve --threads=4 --listen 0.0.0.0:5100 --call archivepodcast:create_app

An example guide on setting it up start to finish, with all features and saving episodes do disk can be found in the docs. There are others for if you want to use s3 to host assets, or even host the whole thing on s3.

Todo

  • readme again
  • Container Registry
  • header as a table, or divs
  • Fix font selection for frontend, done?
  • Cloudflare worker cron (CF still in beta)
    • Terraform example
  • pydantic xml

Prod time to beat running adhoc, 56 seconds.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

archivepodcast-1.5.4.tar.gz (50.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

archivepodcast-1.5.4-py3-none-any.whl (69.3 kB view details)

Uploaded Python 3

File details

Details for the file archivepodcast-1.5.4.tar.gz.

File metadata

  • Download URL: archivepodcast-1.5.4.tar.gz
  • Upload date:
  • Size: 50.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for archivepodcast-1.5.4.tar.gz
Algorithm Hash digest
SHA256 88311d10cb45992360f75f1a30ae037c02f30acd52751de10da8eb02393aaeef
MD5 2f5a685d56d52e68e5c97ca464fbf5ed
BLAKE2b-256 f16a27718462b3d23268676a9c8535a1521e354d87416698965940c53659ca99

See more details on using hashes here.

File details

Details for the file archivepodcast-1.5.4-py3-none-any.whl.

File metadata

  • Download URL: archivepodcast-1.5.4-py3-none-any.whl
  • Upload date:
  • Size: 69.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for archivepodcast-1.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 529a8f8ae8c1fea5b40d5af4abae461d86bea6f2a7a75b46c90eeea12074430d
MD5 b0782ddff365f32a3de0e64d09f085fb
BLAKE2b-256 7496e0b351a9bab63ce62fc04d357f4bf9e1409844fc7262a47b2640158881d8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page