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 accd7fe166
better rss feeds
3 years ago
.github Update issue templates 4 years ago
.vscode commiting before crash 4 years ago
client upgrade packages 3 years ago
controllers better rss feeds 3 years ago
db setting to not redownload deleted content 3 years ago
docs Update ubuntu-install.md 4 years ago
images Updated screenshots and readme 4 years ago
internal/sanitize fix breaking slashes and show summary on player 3 years ago
model better rss feeds 3 years ago
service setting to not redownload deleted content 3 years ago
webassets fix #84 4 years ago
.env enable basic authentication 4 years ago
.gitignore new and improved wider layout 4 years ago
Dockerfile add image label for github repo 4 years ago
LICENSE added readme and stuff 4 years ago
Readme.md upgrade packages 3 years ago
Screenshots.md Updated screenshots and readme 4 years ago
docker-compose.yml update docuementation + increase refresh frequency 4 years ago
go.mod upgrade packages 3 years ago
go.sum upgrade packages 3 years ago
main.go fix breaking backups & possibly breaking download 3 years ago

Readme.md

Contributors Forks Stargazers Issues MIT License LinkedIn


Podgrab

Current Version - 2021.07.28

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.

Also check out my other self-hosted, open-source solution - Hammond - Vehicle and Expense management system.

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 my 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

Build from Source / Ubuntu Installation

Although personally I feel that using the docker container is the best way of using and enjoying something like Podgrab, a lot of people in the community are still not comfortable with using Docker and wanted to host it natively on their Linux servers. Follow the link below to get a guide on how to build Podgrab from source.

Build from source / Ubuntu Guide

Environment Variables

Name Description Default
CHECK_FREQUENCY How frequently to check for new episodes and missing files (in minutes) 30
PASSWORD Set to some non empty value to enable Basic Authentication, username podgrab (empty)
PORT Change the internal port of the application. If you change this you might have to change your docker configuration as well (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 GPL-3.0 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