Skip to content

Repository files navigation

Security Podcasts Tracking System

This repository maintains a list of security-focused podcasts and tracks their activity status.

Files

  • List_of_podcast.md: The comprehensive list of security podcasts with their descriptions and links (canonical input for all scripts)
  • check_active_podcasts.py: Checks activity of PodcastIndex-listed podcasts and writes status CSVs
  • check_active_sites.py: Checks activity of all podcast website URLs, skipping social media links
  • podcast_status.csv: Active podcasts (updated within the last 30 days) — generated by check_active_podcasts.py
  • podcast_update.csv: Full status report for all PodcastIndex-tracked podcasts — generated by check_active_podcasts.py
  • url_status.csv: Full status report for all podcast website URLs — generated by check_active_sites.py
  • changelog.txt: History of updates and changes to the system
  • tests/: Automated tests for URL extraction and CSV validation logic

Requirements

Install all Python dependencies from requirements.txt:

pip install -r requirements.txt

Python 3.8+ is required.

How It Works

check_active_podcasts.py reads podcastindex.org links from List_of_podcast.md, checks each podcast's last update time via HTTP, and generates two CSV files:

  • podcast_status.csv: Only podcasts updated within the last 30 days
  • podcast_update.csv: All podcasts with their current status

check_active_sites.py provides a broader check across all podcast website URLs in List_of_podcast.md, automatically skipping social media and profile links (Twitter/X, Mastodon instances, Reddit, YouTube channel pages) so only actual podcast sites are validated. Results are written to url_status.csv.

Both scripts include automatic retries on transient network errors and handle multiple date-header formats to reduce Unknown results.

Automated Validation

A scheduled GitHub Actions workflow (.github/workflows/check_podcasts.yml) runs every Monday and:

  1. Executes check_active_podcasts.py and check_active_sites.py
  2. Commits updated podcast_update.csv, podcast_status.csv, and url_status.csv back to the repository

You can also trigger the workflow manually from the Actions tab using the "Run workflow" button.

A separate workflow (.github/workflows/tests.yml) runs the test suite on every push and pull request.

Usage

To check PodcastIndex podcast status:

python check_active_podcasts.py

To check all podcast website URLs:

python check_active_sites.py

To run the test suite locally:

pip install pytest
python -m pytest tests/ -v

Deployment

This site is deployed to Cloudflare Pages. On every push to main, the GitHub Actions workflow in .github/workflows/deploy.yml builds the Jekyll site and deploys it via the Cloudflare Wrangler action.

To enable deployments, add the following secrets to the repository:

  • CLOUDFLARE_API_TOKEN – Cloudflare API token with Pages edit permissions
  • CLOUDFLARE_ACCOUNT_ID – Your Cloudflare account ID

Updates

See changelog.txt for a detailed history of updates and changes to the podcast list and system.

About

Taken from a post on r/cybersecurity

Resources

Stars

23 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages