44e2b1c207
Add settings for Max DL concurrency + `User-Agent` |
||
---|---|---|
.github | ||
.vscode | ||
client | ||
controllers | ||
db | ||
docs | ||
images | ||
internal/sanitize | ||
model | ||
service | ||
webassets | ||
.env | ||
.gitignore | ||
Dockerfile | ||
LICENSE | ||
Readme.md | ||
Screenshots.md | ||
docker-compose.yml | ||
go.mod | ||
go.sum | ||
main.go |
Readme.md
Podgrab
Current Version -2022.07.07
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.
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