Thanks to visit codestin.com
Credit goes to github.com

Skip to content

aizhimou/pigeon-pod

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pigeonpod

PigeonPod

Listen to YouTube. Anywhere.

If self-hosting isn't your thing, take a look at our upcoming online services: PigeonPod

中文 README Español README Português README 日本語 README Deutsch README Français README 한국어 README

Screenshots

index-dark&light

Channel list

detail-dark&light

Channel detail

Core Features

  • 🎯 Smart Subscription: Quickly add and sync YouTube channels or playlists with one click.
  • 🤖 Auto Sync Updates: Automatically check and sync latest channel content with incremental updates.
  • 📻 RSS Podcast Subscription: Generate standard RSS subscription links, compatible with any podcast client.
  • 🔍 Content Filtering: Support filtering by title and description keywords (include/exclude) and episode duration.
  • 📊 Episode Management: View, delete, and retry failed episode downloads.
  • 🎦 Video Support: Download video episodes with selectable resolutions and encodings; watch in podcast clients that support video.
  • 🎚 Audio Quality Controls: Choose between 0–10 quality levels or keep the original track to balance fidelity and size.
  • 💽 Chapters & Metadata: Automatically writes metadata and chapter markers to files for a better listening experience.
  • ✨ Ad-free Listening: Automatically remove intro and mid-roll ads from episodes.
  • 🍪 Custom Cookies: Supports subscription of age-restricted content and membership content by uploading cookies.
  • 🌐 Multi-language Support: Complete support for English, Chinese, Spanish, Portuguese, Japanese, French, German, Korean interfaces.
  • 📱 Responsive UI: Excellent experience on any device, anytime, anywhere.

Deployment

Using Docker Compose (Recommended)

Make sure you have Docker and Docker Compose installed on your machine.

  1. Use the docker-compose configuration file, modify environment variables according to your needs
version: '3.9'
services:
  pigeon-pod:
    image: 'ghcr.io/aizhimou/pigeon-pod:latest'
    restart: unless-stopped
    container_name: pigeon-pod
    ports:
      - '8834:8080'
    environment:
      - 'PIGEON_BASE_URL=https://pigeonpod.cloud' # set to your domain
      - 'PIGEON_AUDIO_FILE_PATH=/data/audio/' # set to your audio file path
      - 'PIGEON_COVER_FILE_PATH=/data/cover/' # set to your cover file path
      - 'SPRING_DATASOURCE_URL=jdbc:sqlite:/data/pigeon-pod.db' # set to your database path
    volumes:
      - data:/data

volumes:
  data:
  1. Start the service
docker-compose up -d
  1. Access the application Open your browser and visit http://localhost:8834 with default username: root and default password: Root@123

Run with JAR

Make sure you have Java 17+ and yt-dlp installed on your machine.

  1. Download the latest release JAR from Releases

  2. Create data directory in the same directory as the JAR file.

mkdir -p data
  1. Run the application
java -jar -DPIGEON_BASE_URL=http://localhost:8080 \  # set to your domain
           -DPIGEON_AUDIO_FILE_PATH=/path/to/your/audio/ \  # set to your audio file path
           -Dspring.datasource.url=jdbc:sqlite:/path/to/your/pigeon-pod.db \  # set to your database path
           pigeon-pod-x.x.x.jar
  1. Access the application Open your browser and visit http://localhost:8080 with default username: root and default password: Root@123

Documentation

Tech Stack

Backend

  • Java 17 - Core language
  • Spring Boot 3.5 - Application framework
  • MyBatis-Plus 3.5 - ORM framework
  • Sa-Token - Authentication framework
  • SQLite - Lightweight database
  • Flyway - Database migration tool
  • YouTube Data API v3 - YouTube data retrieval
  • yt-dlp - Video download tool
  • Rome - RSS generation library

Frontend

  • Javascript (ES2024) - Core language
  • React 19 - Application framework
  • Vite 7 - Build tool
  • Mantine 8 - UI component library
  • i18next - Internationalization support
  • Axios - HTTP client

Development Guide

Environment Requirements

  • Java 17+
  • Node.js 22+
  • Maven 3.9+
  • SQLite
  • yt-dlp

Local Development

  1. Clone the project
git clone https://github.com/aizhimou/PigeonPod.git
cd PigeonPod
  1. Configure database
# Create data directory
mkdir -p data/audio

# Database file will be created automatically on first startup
  1. Configure YouTube API

    • Create a project in Google Cloud Console
    • Enable YouTube Data API v3
    • Create an API key
    • Configure the API key in user settings
  2. Start backend

cd backend
mvn spring-boot:run
  1. Start frontend (new terminal)
cd frontend
npm install
npm run dev
  1. Access the application
  • Frontend dev server: http://localhost:5173
  • Backend API: http://localhost:8080

Development Notes

  1. Ensure yt-dlp is installed and available in command line
  2. Configure correct YouTube API key
  3. Ensure audio storage directory has sufficient disk space
  4. Regularly clean up old audio files to save space

Star History

Star History Chart

Made with ❤️ for podcast enthusiasts!

⭐ If you like PigeonPod, give us a star on GitHub!