Skip to content

FErArg/pmpfm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PMPFM - Poor Man Podcast Feed Maker

A simple, self-hosted solution to convert YouTube videos into a podcast RSS feed. Download audio from YouTube videos, manage your podcast library through a web interface, and generate standards-compliant RSS feeds.

Features

  • YouTube to Podcast: Download YouTube videos as MP3 audio files
  • Web Interface: Add YouTube URLs through a browser
  • Password Protection: Secure web interface with login
  • RSS Feed Generation: Automatically generate iTunes-compatible podcast XML feeds
  • YouTube API Validation: Verify URLs exist before downloading
  • Video Titles: Shows real video names (not filenames)
  • Duplicate Detection: Prevents adding the same video twice (by video ID)
  • Cron Compatible: Run downloads automatically on a schedule

Quick Start

# Clone the repository
cd /var/www/html
sudo git clone https://github.com/ferarg/pmpfm podcast

# Install dependencies
sudo apt-get install mp3info php php-curl
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp

# Configure and set permissions
sudo chown -R www-data:www-data /var/www/html/podcast

For detailed instructions, see INSTALL.md.

How It Works

  1. Add Content: Use the web interface to add YouTube URLs
  2. Download: Run yt-podcast.sh to download queued videos as MP3 files
  3. Generate Feed: The script automatically generates podcast.xml with iTunes metadata
  4. Subscribe: Add the RSS feed URL to any podcast client

Usage

Web Interface

Access http://your-server/podcast/v5/ in your browser:

  • Login with your configured password
  • Add YouTube URLs - paste a link and click "Agregar"
  • View Queue - see pending videos
  • View Converted - see downloaded videos
  • Logout - click "Cerrar Sesión"

Command Line

# Add a URL to the queue
echo "https://www.youtube.com/watch?v=VIDEO_ID" >> v5/youtubeLinks.db

# Run the download script
sudo bash v5/yt-podcast.sh

# Or set up a cron job for automatic downloads
# 0 3 * * * /bin/bash /var/www/html/podcast/v5/yt-podcast.sh

Configuration

Edit the variables at the top of the files:

v5/index.php

$password = "MiClaveSegura";  // Change this!
$apiKey = "YourYouTubeApiKey";

v5/yt-podcast.sh

PODCAST_DIR="/var/www/html/podcast"
YT_DLP="/usr/local/bin/yt-dlp"
PODCAST_NAME="My Podcast"
PODCAST_DESC="My awesome podcast"
PODCAST_LINK="https://mydomain.com"
PODCAST_EMAIL="me@mydomain.com"
PODCAST_IMAGE="https://mydomain.com/logo.png"
PODCAST_DOMAIN="https://podcast.example.com"
PODCAST_XML_URL="$PODCAST_DOMAIN/podcast.xml"
PODCAST_AUDIO_URL="$PODCAST_DOMAIN/audios"

v5/yt-podcast.sh

PODCAST_DIR="/var/www/html/podcast"
YT_DLP="/usr/local/bin/yt-dlp"
PODCAST_NAME="My Podcast"
PODCAST_DESC="My awesome podcast"
PODCAST_LINK="https://mydomain.com"
PODCAST_EMAIL="me@mydomain.com"
PODCAST_IMAGE="https://mydomain.com/logo.png"
PODCAST_XML_URL="https://mydomain.com/podcast/podcast.xml"
PODCAST_AUDIO_URL="https://mydomain.com/podcast/audios"

Project Structure

pmpfm/
├── v5/                        # Active version
│   ├── index.php              # Web interface
│   ├── style.css              # Styles
│   ├── yt-podcast.sh          # Download + RSS script
│   ├── youtubeLinks.db        # Pending URLs
│   ├── videoDownload.db       # Download history
│   └── audios/                # MP3 files
├── old/                       # Previous versions (v1-v6)
├── README.md                  # This file
├── INSTALL.md                 # Installation guide
├── CHANGELOG.md               # Version history
├── AUTHORS                    # Project contributors
├── LICENSE                    # GPL v3
└── AGENTS.md                  # AI agent guidelines

Requirements

Component Version
PHP 7.4+
Apache2 2.4+
yt-dlp Latest
mp3info Any
Bash 4.0+
Python 3 3.6+

System Dependencies

sudo apt-get install mp3info php php-curl apache2 python3

Documentation

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Authors

AI Assistants

  • Deepseek
  • Miramax
  • Kimi

Acknowledgments

  • yt-dlp - YouTube download tool
  • mp3info - MP3 metadata reader
  • RSS 2.0 and iTunes Podcast specifications

About

Poor Man Podcast Feed Maker

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors