Skip to main content

🎙️ Cast-Away

Minimalist TUI Podcast Client for Hackers

Cast-Away is a lightweight, keyboard-driven terminal application designed for developers who want to listen to podcasts without leaving their terminal environment. Built with Python and Textual, it provides a distraction-free experience with real-time audio visualization.

✨ Features

  • One-Click Popular Feeds: Add 12+ popular podcasts with a single click from curated categories.
  • RSS Integration: Add any public podcast RSS feed or enter custom URLs.
  • Smooth Playback: Non-blocking audio streaming using Pygame.mixer.
  • ASCII Visualizer: Real-time audio Processbar in the terminal.
  • Self-Contained: No external dependencies required once compiled.

🛠️ Requirements (TerminalCraft v2)

  • Real Problem: Solves the "heavy GUI" problem of modern podcast apps.
  • Unix Support: Tested on Linux, macOS, and WSL.
  • Open Source: Licensed under MIT for the community.
  • No Wrapper: Custom built RSS parser and audio manager (not just a wrapper).

🚀 Quick Start

  1. Installation

    Ensure you have Python 3.8+ installed. Clone the repo and install dependencies:

    git clone https://github.com/MadushankaRajapaksha/castAway.git
    cd castAway
    pip install -e .
    

    or via pip

    pip install castaway-cli
    
  2. Upgrade: Ensure you have the latest version of Cast-Away by running:

    pip install --upgrade castaway-cli
    
  3. Run the App

    castAway
    

    Or run directly with Python:

    python -m castAway
    

📂 Project Structure

castAway/
├── cli.py          # Main entry point and CLI interface
├── core.py         # Core RSS parsing and podcast logic
├── db.py           # Database management for subscriptions
├── player.py       # Audio playback functionality
├── screen.py       # TUI interface using Textual
└── test.py         # Testing utilities

📖 User Guide: How to Get RSS Feeds

This comprehensive guide will help you find and add RSS feeds to your Cast-Away podcast library.

🎯 What is an RSS Feed?

RSS (Really Simple Syndication) feeds are web feeds that allow you to receive updates from websites, including podcast episodes. For podcasts, RSS feeds contain information about episodes, audio files, and show metadata.

🔍 Finding RSS Feeds for Your Favorite Podcasts

Method 1: Direct from Podcast Websites

  1. Visit the podcast's official website
  2. Look for RSS feed links - usually marked with:
    • An RSS icon (📡 or 📻)
    • "Subscribe" or "RSS" buttons
    • Links ending in .xml or containing /feed/

Example Podcasts with Direct RSS Links:

  • Darknet Diaries: https://feeds.megaphone.fm/darknetdiaries
  • This American Life: https://www.thisamericanlife.org/podcast/rss.xml
  • NPR Podcasts: Look for "RSS" links on individual show pages
  • BBC Sounds: Check the podcast's page for RSS subscription options

Method 2: Using Podcast Aggregators

Popular podcast platforms often provide RSS feeds:

  1. Apple Podcasts:

    • Search for your podcast
    • Click the "Share" button
    • Copy the RSS feed URL
  2. Spotify:

    • Some podcasts show RSS links in their description
    • Use third-party tools to extract RSS from Spotify
  3. Google Podcasts:

    • Open the podcast page
    • Look for RSS feed information

Method 3: Podcast Search Engines

Use these websites to search for podcasts and get their RSS feeds:

Method 4: Using RSS Feed Discovery Tools

  • RSS.com Podcast Directory: https://rss.com/podcasts/
  • Podcast Republic: Offers RSS feed discovery
  • gPodder Directory: Open-source podcast directory

Here are some popular podcasts with their RSS feeds to get you started:

Technology & Hacking

  • Darknet Diaries: https://feeds.megaphone.fm/darknetdiaries
  • Security Now: https://feeds.twit.tv/sn.xml
  • Command Line Heroes: https://www.redhat.com/en/command-line-heroes/feed.xml

News & Current Affairs

  • NPR News Now: https://www.npr.org/rss/podcast.php?id=500005
  • BBC Global News: https://podcasts.files.bbci.co.uk/p02nq0gn.rss
  • The Daily (NYT): https://feeds.simplecast.com/54nAGcIl

Technology & Development

  • Syntax.fm: https://feeds.simplecast.com/4qg_LgQw
  • Software Engineering Daily: https://softwareengineeringdaily.com/feed/podcast/
  • The Changelog: https://changelog.com/podcast/feed

Storytelling & Entertainment

  • This American Life: https://www.thisamericanlife.org/podcast/rss.xml
  • Radiolab: https://feeds.wnyc.org/radiolab
  • 99% Invisible: https://feeds.99percentinvisible.org/99percentinvisible

➕ Adding RSS Feeds to Cast-Away

Cast-Away offers two easy ways to add podcasts:

  1. Launch Cast-Away
  2. Click "Add New Feed" button
  3. Browse curated categories of popular podcasts:
    • Technology & Hacking: Darknet Diaries, Security Now, Command Line Heroes
    • News & Current Affairs: NPR News Now, BBC Global News, The Daily (NYT)
    • Technology & Development: Syntax.fm, Software Engineering Daily, The Changelog
    • Storytelling & Entertainment: This American Life, Radiolab, 99% Invisible
  4. Click "Add" next to any podcast to subscribe instantly
  5. The app automatically fetches episodes and adds them to your library

Method 2: Custom RSS Feeds

If you want to add a podcast that's not in our curated list:

  1. Launch Cast-Away
  2. Click "Add New Feed" button
  3. Scroll to "Or Add Custom Feed" section
  4. Paste the RSS feed URL in the input field
  5. Click "Add Feed"
  6. The app will fetch and validate the feed automatically

Both methods support the same RSS feed formats and will automatically detect podcast metadata like titles, descriptions, and episode information.

✅ Verifying RSS Feeds

Before adding an RSS feed to Cast-Away:

  1. Test the feed URL in a web browser - you should see XML content
  2. Check feed validity using tools like:

🔧 Troubleshooting RSS Feeds

Common Issues and Solutions:

  1. "Invalid RSS Feed" Error

    • Verify the URL is correct
    • Ensure the feed is still active
    • Check if the feed requires authentication
  2. "Feed Not Updating" Issue

    • Some feeds may have caching delays
    • Check the feed's update frequency
    • Verify the podcast is still producing episodes
  3. "Cannot Parse Feed" Error

    • The feed format might be incompatible
    • Try a different feed source for the same podcast
    • Check if the feed uses non-standard elements

📊 Understanding the Interface

The Cast-Away interface consists of:

  1. Podcast Library: List of your subscribed podcasts
  2. Episode List: Episodes for the selected podcast
  3. Audio Visualizer: Real-time ASCII waveform display
  4. Status Bar: Current playback information

🎯 Quick Start Checklist

  • Install Cast-Away
  • Launch the app and click "Add New Feed"
  • Browse popular podcasts and add 3+ with one click
  • Or add custom podcasts by pasting RSS URLs
  • Test audio playback on any episode
  • Explore keyboard shortcuts for navigation

🆘 Getting Help

If you encounter issues:

  1. Check this guide for RSS feed troubleshooting
  2. Verify your RSS feed URLs are correct
  3. Ensure you have internet connectivity
  4. Check the application logs for error messages
  5. Report issues on the GitHub repository

❓ Frequently Asked Questions

Q: How do I add podcasts? A: Click "Add New Feed" and choose from popular podcasts with one click, or paste a custom RSS URL.

Q: Can I import my podcast subscriptions from other apps? A: Yes, you can export OPML files from most podcast apps and import them into Cast-Away.

Q: How do I update my podcast feeds? A: Use the 'r' key to refresh all feeds or restart the application.

Q: Can I download episodes for offline listening? A: Cast-Away streams episodes but may cache recently played content.

Q: What audio formats are supported? A: Most common audio formats including MP3, AAC, and OGG.

Q: How do I backup my podcast subscriptions? A: Your subscriptions are stored in a local database file in the application directory.

🔧 Development & Contributing

We welcome contributions! Here's how to set up your development environment:

# Clone the repository
git clone https://github.com/MadushankaRajapaksha/castAway.git
cd castAway

# Install in development mode
pip install -e .

# Install development dependencies
pip install pytest pytest-cov flake8 black isort mypy

# Run tests
pytest

# Format code
black castAway/
isort castAway/

📦 Automated Releases

This project uses GitHub Actions for CI/CD:

  • CI Pipeline: Runs on every push and PR with:

    • Unit tests across Python 3.8-3.12
    • Code linting (flake8, black, isort)
    • Type checking (mypy)
    • Code coverage reporting
  • PyPI Release: Automatically publishes to PyPI when you push a version tag:

    git tag v0.1.0
    git push origin v0.1.0
    

👥 User Testing We are looking for at least 10 active users! If you find a bug or have a feature request, please Open an Issue.

🌍 Open Source & License Distributed under the MIT License. See LICENSE for more information.


Happy podcast listening with Cast-Away! 🎙️

Metadata

Release files for castaway-cli 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for castaway-cli 0.0.4
File Size Uploaded Provenance Actions
castaway_cli-0.0.4.tar.gz 25.0 kB Without provenance Details for castaway_cli-0.0.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for castaway-cli 0.0.4
File Interpreter ABI Platform Actions
castaway_cli-0.0.4-py3-none-any.whl Python 3 none any Details for castaway_cli-0.0.4-py3-none-any.whl

Total release size: 47.2 kB

Release files / castaway_cli-0.0.4.tar.gz

Download URL castaway_cli-0.0.4.tar.gz
Size 25.0 kB
Tags Source
SHA-256 checksum
How to use checksums
504160ca0c41fd4be709e4bf07fc25af7c66e71f764ded343a620e3c72d7acbf
BLAKE2b-256 checksum
How to use checksums
f36abd26910f1231250acd28e9c9c174941fbf59d9987e61e7599deecf994eda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / castaway_cli-0.0.4-py3-none-any.whl

Download URL castaway_cli-0.0.4-py3-none-any.whl
Size 22.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
09ccd1c3dd2a1e38b0ac636a57394321f69ed64a89a4f0abff9624f90d5f18de
BLAKE2b-256 checksum
How to use checksums
1062704fcba0662394d33c57b7141b31301c3703b03cc8a38623ad29b4527fd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Security for castaway-cli 0.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page