5.1 KiB
Web Interface for RSS-to-Podcast Converter
This document explains how to set up and use the web interface for the RSS-to-Podcast Converter. The web interface allows users to create accounts, add websites to their personal podcast feed, and obtain their personalized RSS feed URL.
Overview
The web application provides:
- User Registration and Login: Users can create accounts and log in securely.
- Personalized Podcast Feed: Each user gets a unique podcast feed identified by their username.
- Adding Websites: Users can add any website URL to their feed, which will be processed and converted into podcast episodes.
- Lo-fi 8-bit ZX Spectrum Style: The user interface is designed with a retro aesthetic.
Setup Instructions
Prerequisites
- Python 3.x
- Required Python packages (install via
pip
orpoetry
):- Flask
- Flask-Login
- SQLAlchemy
- Other dependencies from the main project
Database Recommendation
Important: For the web application, it is highly recommended to use PostgreSQL instead of SQLite due to potential locking issues with multiple users accessing the database simultaneously.
Environment Variables
FLASK_SECRET_KEY
The application uses a secret key for session management. You can set the secret key via the FLASK_SECRET_KEY
environment variable. If this variable is not set, the application will generate a random secret key every time it starts. This approach is suitable for development but not recommended for production.
Installation
-
Clone the Repository
git clone https://github.com/yourusername/rss-to-podcast.git cd rss-to-podcast
-
Install Dependencies
To install with web interface support, include the
web
dependency group:poetry install --with web
This installs additional dependencies required for the web interface, including
Flask
,Flask-Login
, andSQLAlchemy
. -
Prepare the Database
-
Create a PostgreSQL database for the application.
-
Use the
database-tool.py
script to create the necessary tables:python database-tool.py create --db postgresql://user:password@localhost:5432/mydatabase
-
-
Configure the Web Application
-
Update
web-config.json
to include your PostgreSQL connection string:{ "database": "postgresql://user:password@localhost:5432/mydatabase", ... }
-
Ensure the
web-config.json
template is in the project root directory. -
Set the
FLASK_SECRET_KEY
environment variable for security.
-
Running the Web Application
Start the Flask web server:
python app.py --config web-config.json
The application will be accessible at http://localhost:5000
.
Running the Queue Processor
In a separate terminal, run the process that handles the queue of pending episodes:
python process_website_queue.py --config web-config.json
This script continuously checks for pending episodes and processes them.
Usage Instructions
Registering an Account
- Navigate to
http://localhost:5000/register
. - Fill in a username and password.
- Submit the form to create your account.
Logging In
- Go to
http://localhost:5000/login
. - Enter your username and password.
- Click "Login" to access your dashboard.
Dashboard
After logging in, you will see:
- Your Personalized RSS Feed URL: This is the URL you can add to your podcast player to receive your episodes.
- Copy Icon: Click this icon to copy the feed URL to your clipboard.
- Add Website: An input box where you can enter a website URL.
- "Load it up" Button: Click this to add the website to your processing queue.
Adding a Website
- Enter the full URL of the website you want to convert into a podcast episode.
- Click "Load it up".
- You will receive a confirmation message: "The podcast has been loaded up into the queue, let's roll the tape!"
Accessing Your Podcast Feed
- Copy your personalized RSS feed URL from the dashboard.
- Add this URL to your preferred podcast app to receive your episodes once they're processed.
Customization
Retro Styling
The user interface is styled to resemble 8-bit ZX Spectrum graphics. You can customize the templates and CSS in the templates
and static
directories to modify the appearance.
Config Template
The web-config.json
file serves as the base configuration for all users. Placeholders like {podcast_id}
are replaced with the user's specific details at runtime.
Security Considerations
- Replace
app.secret_key
inapp.py
with a secure, random value. - Ensure that the database is secured and not accessible from the web.
- Use PostgreSQL for better concurrency and to avoid locking issues.
Troubleshooting
- Database Errors: Ensure the database credentials are correct and the database is running.
- Processing Issues: Check the logs of
process_website_queue.py
for any errors during episode processing.
Additional Information
- The web interface interacts with the existing processing scripts, reusing the core functionality.
- Users are isolated by their
podcast_id
, which is derived from their username.