mirror of
https://github.com/R0m1k3/podcastic.git
synced 2026-10-11 17:26:20 +02:00
228 lines
5.8 KiB
Markdown
228 lines
5.8 KiB
Markdown
# 🔍 Podcast Index Integration Setup
|
|
|
|
This guide explains how to set up Podcast Index API for podcast discovery and search functionality in Podcastic.
|
|
|
|
## What is Podcast Index?
|
|
|
|
[Podcast Index](https://podcastindex.org/) is a free, independent podcast database and API that provides:
|
|
- Podcast search functionality
|
|
- Trending podcasts
|
|
- Podcast metadata (title, author, image, description)
|
|
- Episode information
|
|
- No ads, no corporate tracking
|
|
|
|
## Prerequisites
|
|
|
|
- Podcastic backend running
|
|
- Internet connection
|
|
- Free Podcast Index account
|
|
|
|
## Step 1: Get API Keys
|
|
|
|
### Register on Podcast Index
|
|
1. Visit [Podcast Index API](https://podcastindex-api.com/)
|
|
2. Click "Sign Up" (top right)
|
|
3. Create a free account with your email
|
|
4. Check your email for verification link
|
|
5. Confirm your email address
|
|
|
|
### Generate API Keys
|
|
1. Log in to your Podcast Index account
|
|
2. Go to "My API Keys" section
|
|
3. You'll see:
|
|
- **API Key** (e.g., `abcdef123456`)
|
|
- **API Secret** (e.g., `xyz789`)
|
|
4. Copy both values
|
|
|
|
## Step 2: Configure Environment Variables
|
|
|
|
### Update `.env` file
|
|
```bash
|
|
# In the root Podcastic directory
|
|
nano .env # or edit with your preferred editor
|
|
```
|
|
|
|
Add these lines:
|
|
```env
|
|
PODCAST_INDEX_API_KEY=your_api_key_here
|
|
PODCAST_INDEX_API_SECRET=your_api_secret_here
|
|
```
|
|
|
|
**Example:**
|
|
```env
|
|
PODCAST_INDEX_API_KEY=abcdef123456
|
|
PODCAST_INDEX_API_SECRET=xyz789opqrst
|
|
```
|
|
|
|
### Docker Setup
|
|
If using Docker, the environment variables will be automatically loaded from `.env`:
|
|
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
The backend will automatically detect and use your API keys.
|
|
|
|
## Step 3: Verify Setup
|
|
|
|
### Test API Integration
|
|
```bash
|
|
# Start the backend (if not running)
|
|
cd backend
|
|
npm run dev
|
|
|
|
# In another terminal, test the API
|
|
curl http://localhost:5000/api/podcasts/discover?q=technology
|
|
```
|
|
|
|
Expected response:
|
|
```json
|
|
{
|
|
"source": "podcastindex",
|
|
"podcasts": [
|
|
{
|
|
"id": "25566",
|
|
"title": "Example Podcast",
|
|
"rssUrl": "https://example.com/feed",
|
|
"author": "Podcast Author",
|
|
"description": "...",
|
|
"imageUrl": "...",
|
|
"episodeCount": 150
|
|
}
|
|
],
|
|
"count": 10
|
|
}
|
|
```
|
|
|
|
### Test in Frontend
|
|
1. Open http://localhost:3000/discover
|
|
2. Click on the "🔍 Search Results" tab
|
|
3. Type a podcast name (e.g., "technology", "news", "music")
|
|
4. Results should appear from Podcast Index
|
|
|
|
## Features Enabled by API
|
|
|
|
### ✅ Podcast Discovery
|
|
- Search by keyword
|
|
- Browse trending podcasts
|
|
- View podcast metadata
|
|
|
|
### ✅ Quick Subscribe
|
|
- Find podcasts directly from discover page
|
|
- One-click subscribe
|
|
- Auto-fetch episodes
|
|
|
|
### Example Searches
|
|
- **Popular podcasts**: "Joe Rogan", "NPR", "BBC"
|
|
- **Topics**: "technology", "news", "business", "science"
|
|
- **Specific shows**: "The Daily", "Serial", "Freakonomics"
|
|
|
|
## API Limits
|
|
|
|
### Free Tier (Default)
|
|
- **100 requests per minute** per API key
|
|
- Sufficient for small to medium users
|
|
- No additional signup needed
|
|
|
|
### If You Need More
|
|
- Podcast Index offers higher rate limits for supporters
|
|
- See their pricing page for details
|
|
|
|
## Fallback When API is Unavailable
|
|
|
|
If PodcastIndex API is not configured or unavailable:
|
|
- Users can still subscribe manually using RSS URLs
|
|
- Dashboard shows previously subscribed podcasts
|
|
- Graceful degradation - app still works
|
|
|
|
## Troubleshooting
|
|
|
|
### "API credentials not configured"
|
|
**Solution**: Check that both `PODCAST_INDEX_API_KEY` and `PODCAST_INDEX_API_SECRET` are set in `.env`
|
|
|
|
```bash
|
|
# Verify environment variables
|
|
echo $PODCAST_INDEX_API_KEY
|
|
echo $PODCAST_INDEX_API_SECRET
|
|
```
|
|
|
|
### "Search rate limited"
|
|
**Error**: `Search rate limited. Please try again later.`
|
|
|
|
**Solution**:
|
|
- Wait a minute before searching again
|
|
- Rate limit resets every 60 seconds
|
|
- This is normal with free tier - switch searches if needed
|
|
|
|
### "Authentication failed"
|
|
**Error**: `PodcastIndex API authentication failed`
|
|
|
|
**Solution**:
|
|
- Verify your API keys are correct
|
|
- Check for extra spaces/newlines in `.env`
|
|
- Regenerate API keys on Podcast Index website if needed
|
|
|
|
### No results appear
|
|
**Possible causes**:
|
|
- API key not configured
|
|
- Internet connection issue
|
|
- Podcast doesn't exist in Podcast Index database
|
|
|
|
**Solution**:
|
|
- Try a very common podcast name first (e.g., "NPR")
|
|
- Check your internet connection
|
|
- Fall back to subscribing via RSS URL if needed
|
|
|
|
## Security Notes
|
|
|
|
⚠️ **Important**
|
|
- Never commit `.env` to git (it's in `.gitignore`)
|
|
- Don't share your API secret publicly
|
|
- API keys are for your use only
|
|
- Regenerate keys if accidentally exposed
|
|
|
|
## Using RSS URLs as Alternative
|
|
|
|
If you don't want to use Podcast Index:
|
|
|
|
1. Find podcast RSS URL:
|
|
- On the podcast's website
|
|
- Search "[Podcast Name] RSS" in Google
|
|
- Common format: `example.com/feed` or `example.com/podcast/rss`
|
|
|
|
2. Subscribe directly:
|
|
- Go to Dashboard
|
|
- Click Subscribe (or future manual add feature)
|
|
- Paste RSS URL
|
|
- Podcastic fetches episodes automatically
|
|
|
|
## API Documentation
|
|
|
|
Full API reference: [Podcast Index Documentation](https://podcastindex-api.com/docs/index.html)
|
|
|
|
Key endpoints available in Podcastic:
|
|
- `GET /api/podcasts/discover` - Search podcasts
|
|
- `GET /api/podcasts/trending` - Get trending podcasts
|
|
- `POST /api/podcasts/subscribe-discovery` - Subscribe from search results
|
|
|
|
## Advanced: Custom Podcast Sources
|
|
|
|
To use a different podcast database:
|
|
1. Implement a new service in `backend/src/services/`
|
|
2. Add environment variables for API credentials
|
|
3. Update `podcastController.ts` to use the new service
|
|
4. No frontend changes needed!
|
|
|
|
Example: Could integrate Apple Podcasts API, Spotify API, or self-hosted podcast database.
|
|
|
|
## Support
|
|
|
|
- **Podcast Index Support**: https://podcastindex.org/contact
|
|
- **Podcastic Issues**: Create an issue on GitHub
|
|
- **RSS Feed Help**: See `GETTING_STARTED.md` for manual subscription
|
|
|
|
---
|
|
|
|
**Last Updated**: 2026-04-16
|
|
**Podcast Index Status**: [https://podcastindex.org/status](https://podcastindex.org/status)
|