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.
Project description
🎙️ 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
-
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 -
Upgrade: Ensure you have the latest version of Cast-Away by running:
pip install --upgrade castaway-cli -
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
- Visit the podcast's official website
- Look for RSS feed links - usually marked with:
- An RSS icon (📡 or 📻)
- "Subscribe" or "RSS" buttons
- Links ending in
.xmlor 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:
-
Apple Podcasts:
- Search for your podcast
- Click the "Share" button
- Copy the RSS feed URL
-
Spotify:
- Some podcasts show RSS links in their description
- Use third-party tools to extract RSS from Spotify
-
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:
- Podchaser (https://www.podchaser.com)
- Podcast Addict Directory (https://podcastaddict.com)
- Listen Notes (https://www.listennotes.com)
- Podlink (https://pod.link)
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
📝 Popular Podcast RSS Feed Examples
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:
Method 1: One-Click Popular Feeds (Recommended for Beginners)
- Launch Cast-Away
- Click "Add New Feed" button
- 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
- Click "Add" next to any podcast to subscribe instantly
- 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:
- Launch Cast-Away
- Click "Add New Feed" button
- Scroll to "Or Add Custom Feed" section
- Paste the RSS feed URL in the input field
- Click "Add Feed"
- 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:
- Test the feed URL in a web browser - you should see XML content
- Check feed validity using tools like:
- RSS Validator (https://www.rssboard.org/rss-validator/)
- W3C Feed Validation Service (https://validator.w3.org/feed/)
🔧 Troubleshooting RSS Feeds
Common Issues and Solutions:
-
"Invalid RSS Feed" Error
- Verify the URL is correct
- Ensure the feed is still active
- Check if the feed requires authentication
-
"Feed Not Updating" Issue
- Some feeds may have caching delays
- Check the feed's update frequency
- Verify the podcast is still producing episodes
-
"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:
- Podcast Library: List of your subscribed podcasts
- Episode List: Episodes for the selected podcast
- Audio Visualizer: Real-time ASCII waveform display
- 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:
- Check this guide for RSS feed troubleshooting
- Verify your RSS feed URLs are correct
- Ensure you have internet connectivity
- Check the application logs for error messages
- 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! 🎙️
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file castaway_cli-0.0.4.tar.gz.
File metadata
- Download URL: castaway_cli-0.0.4.tar.gz
- Upload date:
- Size: 25.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
504160ca0c41fd4be709e4bf07fc25af7c66e71f764ded343a620e3c72d7acbf
|
|
| MD5 |
3f7b601a42b50f16fb94f1d5eec9bc1a
|
|
| BLAKE2b-256 |
f36abd26910f1231250acd28e9c9c174941fbf59d9987e61e7599deecf994eda
|
File details
Details for the file castaway_cli-0.0.4-py3-none-any.whl.
File metadata
- Download URL: castaway_cli-0.0.4-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09ccd1c3dd2a1e38b0ac636a57394321f69ed64a89a4f0abff9624f90d5f18de
|
|
| MD5 |
3b587b3fcc39ea29fb269df9c0256094
|
|
| BLAKE2b-256 |
1062704fcba0662394d33c57b7141b31301c3703b03cc8a38623ad29b4527fd7
|