[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] [![LinkedIn][linkedin-shield]][linkedin-url]

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](#about-the-project) - [Motivation](#motivation) - [Built With](#built-with) - [Installation](#installation) - [License](#license) - [Roadmap](#roadmap) - [Contact](#contact) ## 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](https://github.com/containrrr/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 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][product-screenshot] [More Screenshots](Screenshots.md) ### Built With - [Go](https://golang.org/) - [Go-Gin](https://github.com/gin-gonic/gin) - [GORM](https://github.com/go-gorm/gorm) - [SQLite](https://www.sqlite.org/index.html) ## 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) ```sh docker run -d -p 8080:8080 --name=podgrab akhilrex/podgrab ``` Binding local volumes to the container ```sh 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](https://github.com/akhilrex/podgrab/blob/master/docker-compose.yml) to update the volume and port binding and run the following command ```yaml 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 ``` ```sh 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)| ## License Distributed under the MIT License. See `LICENSE` for more information. ## Roadmap - [x] Basic Authentication - [x] Append Date to filename - [x] iTunes Search - [x] Existing episodes detection (Will not redownload if files exist even with a fresh install) - [x] Rudimentary downloading/downloaded indicator - [x] Played/Unplayed Flag - [x] OPML import - [ ] OPML export - [ ] Set ID3 tags if not set - [ ] Filtering and Sorting options - [ ] In built podcast player ## Contact Akhil Gupta - [@akhilrex](https://twitter.com/akhilrex) Project Link: [https://github.com/akhilrex/podgrab](https://github.com/akhilrex/podgrab) Buy Me A Coffee [contributors-shield]: https://img.shields.io/github/contributors/akhilrex/podgrab.svg?style=flat-square [contributors-url]: https://github.com/akhilrex/podgrab/graphs/contributors [forks-shield]: https://img.shields.io/github/forks/akhilrex/podgrab.svg?style=flat-square [forks-url]: https://github.com/akhilrex/podgrab/network/members [stars-shield]: https://img.shields.io/github/stars/akhilrex/podgrab.svg?style=flat-square [stars-url]: https://github.com/akhilrex/podgrab/stargazers [issues-shield]: https://img.shields.io/github/issues/akhilrex/podgrab.svg?style=flat-square [issues-url]: https://github.com/akhilrex/podgrab/issues [license-shield]: https://img.shields.io/github/license/akhilrex/podgrab.svg?style=flat-square [license-url]: https://github.com/akhilrex/podgrab/blob/master/LICENSE.txt [linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square&logo=linkedin&colorB=555 [linkedin-url]: https://linkedin.com/in/akhilrex [product-screenshot]: images/screenshot.jpg