A self-hosted podcast manager/downloader/archiver tool to download podcast episodes as soon as they become live with an integrated player.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Akhil Gupta 33811c85d3
player improvement
3 years ago
.github/workflows fix github token 3 years ago
.vscode tags complete 3 years ago
client added size report 3 years ago
controllers player improvement 3 years ago
db player improvement 3 years ago
images Updated screenshots and readme 3 years ago
internal/sanitize fixed breaking file download 3 years ago
model added podcast index search 3 years ago
service player improvement 3 years ago
webassets ability to bookmark episodes 3 years ago
.env enable basic authentication 3 years ago
.gitignore new and improved wider layout 3 years ago
Dockerfile add image label for github repo 3 years ago
LICENSE added readme and stuff 4 years ago
Readme.md Fix type 3 years ago
Screenshots.md Updated screenshots and readme 3 years ago
docker-compose.yml update docuementation + increase refresh frequency 4 years ago
go.mod fix podcast url issue 3 years ago
go.sum fix podcast url issue 3 years ago
main.go added size report 3 years ago

Readme.md

Contributors Forks Stargazers Issues MIT License LinkedIn


Podgrab

A self-hosted podcast manager to download episodes as soon as they become live
Explore the docs »

Report Bug · Request Feature · Screenshots

Table of Contents

About The Project

Podgrab is a is a self-hosted podcast manager which automatically downloads latest podcast episodes. It is a light-weight application built using GO.

It works best if you already know which podcasts you want to monitor. However there is a podcast search system powered by iTunes built into Podgrab

Developers Note: This project is under active development which means I release new updates very frequently. It is recommended that you use something like watchtower which will automatically update your containers whenever I release a new version or periodically rebuild the container with the latest image manually.

Motivation

Podgrab started as a tool that I initially built to solve a specific problem I had. During the COVID pandemic times I started going for a run. I do not prefer taking by phone along so I would add podcast episodes to my smart watch which could be connected with my bluetooth earphones. Most podcasting apps do not expose the mp3 files directly which is why I decided to build this quick tool for myself. Once it reached a stage where my requirements were fulfilled I decided to make it a little pretty and share it with everyone else.

Product Name Screen Shot More Screenshots

Built With

Features

  • Download/Archive complete podcast
  • Auto-download new episodes
  • Tag/Label podcasts into groups
  • Download on demand
  • Podcast Discovery - Search and Add podcasts using iTunes API
  • Full-fledged podcast player - Play downloaded files or stream from original source. Play single episodes, full podcasts and podcast groups(tags)
  • Add using direct RSS feed URL / OMPL import / Search
  • Basic Authentication
  • Existing episode file detection - Prevent re-downloading files if already present
  • Easy OPML import/export
  • Customizable episode names
  • Dark Mode
  • Self Hosted / Open Source
  • Docker support

Installation

The easiest way to run Podgrab is to run it as a docker container.

Using Docker

Simple setup without mounted volumes (for testing and evaluation)

  docker run -d -p 8080:8080 --name=podgrab akhilrex/podgrab

Binding local volumes to the container

   docker run -d -p 8080:8080 --name=podgrab -v "/host/path/to/assets:/assets" -v "/host/path/to/config:/config"  akhilrex/podgrab

Using Docker-Compose

Modify the docker compose file provided here to update the volume and port binding and run the following command

version: "2.1"
services:
  podgrab:
    image: akhilrex/podgrab
    container_name: podgrab
    environment:
      - CHECK_FREQUENCY=240
     # - PASSWORD=password     ## Uncomment to enable basic authentication, username = podgrab
    volumes:
      - /path/to/config:/config
      - /path/to/data:/assets
    ports:
      - 8080:8080
    restart: unless-stopped
   docker-compose up -d

Environment Variables

Name Description Default
CHECK_FREQUENCY How frequently to check for new episodes and missing files (in minutes) 30
PASSWORD Set to some no empty value to enable Basic Authentication, username podgrab (empty)

Setup

  • Enable websocket support if running behind a reverse proxy. This is needed for the "Add to playlist" functionality.
  • Go through the settings page once and change relevant settings before adding podcasts.

License

Distributed under the MIT License. See LICENSE for more information.

Roadmap

  • Basic Authentication
  • Append Date to filename
  • iTunes Search
  • Existing episodes detection (Will not redownload if files exist even with a fresh install)
  • Downloading/downloaded indicator
  • Played/Unplayed Flag
  • OPML import
  • OPML export
  • In built podcast player
  • Set ID3 tags if not set
  • Filtering and Sorting options
  • Native installer for Windows/Linux/MacOS

Contact

Akhil Gupta - @akhilrex

Project Link: https://github.com/akhilrex/podgrab

Buy Me A Coffee