podcastrr/README.md
Cody Cook 9e19ae6cf6
Some checks failed
Build and Publish / test (push) Successful in 20s
Build and Publish / build (push) Failing after 5m33s
Build and Publish / notify (push) Successful in 1s
Add a test and make changez?
2025-06-17 20:36:20 -07:00

128 lines
3.1 KiB
Markdown

# Podcastrr
A podcast management application similar to Sonarr but for podcasts, built with Python and Flask.
## Features
- **Search for Podcasts**: Find podcasts from various sources
- **Track Podcasts**: Monitor your favorite podcasts for new episodes
- **Download Management**: Automatically download new episodes and manage storage
- **Complete Podcast Archive**: Download all episodes of a podcast with one click
- **Custom Naming**: Configure how downloaded files are named
- **Tag/Label System**: Organize podcasts into groups with tags
- **Direct RSS Feed**: Add podcasts using direct RSS feed URLs
- **OPML Import/Export**: Easily import and export podcast subscriptions
- **Existing Episode Detection**: Prevent re-downloading files if already present
- **Web Interface**: Manage everything through an intuitive web interface
## Requirements
- Python 3.8+
- Dependencies listed in `requirements.txt`
## Installation
1. Clone the repository:
```
git clone https://github.com/yourusername/podcastrr.git
cd podcastrr
```
2. Create and activate a virtual environment:
```
python -m venv .venv
# On Windows
.venv\Scripts\activate
# On macOS/Linux
source .venv/bin/activate
```
3. Install dependencies:
```
pip install -r requirements.txt
```
4. Create a `.env` file in the root directory with the following variables:
```
FLASK_ENV=development
SECRET_KEY=your_secret_key
DATABASE_URI=sqlite:///podcastrr.db
DOWNLOAD_PATH=/path/to/downloads
```
5. Initialize the database:
```
python init_db.py
```
This will create the database and run all necessary migrations.
6. If you're updating an existing installation and encounter database errors:
```
python run_migrations.py
```
This will apply any pending migrations to your database. See the [Migration Guide](MIGRATION_GUIDE.md) for more details.
## Usage
### Local Development
Run the application:
```
python main.py
```
Then open your browser and navigate to `http://localhost:5000`.
### Docker Deployment
The application can be deployed using Docker in two ways:
#### Option 1: Using the published Docker image from Forgejo registry (recommended for production)
1. Create a `.env` file with the following variables:
```
FORGEJO_REGISTRY=your-forgejo-registry-url
FORGEJO_USERNAME=your-username
PORT=5000
FLASK_ENV=production
SECRET_KEY=your_secret_key
DATABASE_URI=sqlite:///instance/podcastrr.db
DOWNLOAD_PATH=/app/downloads
```
2. Run the application using docker-compose:
```
docker-compose up -d
```
#### Option 2: Building from local Dockerfile (for development)
1. Modify the `docker-compose.yml` file to use the local build instead of the published image:
- Comment out the `image:` line
- Uncomment the `build:` section
2. Run the application using docker-compose:
```
docker-compose up -d
```
The application will be available at `http://localhost:5000` (or the port you specified in the `.env` file).
## Development
1. Install development dependencies:
```
pip install -r requirements-dev.txt
```
2. Run tests:
```
pytest
```
3. Format code:
```
black .
```