Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/acupofjose/downplay
A free, self-hostable, youtube-as-a-podcast service.
https://github.com/acupofjose/downplay
expressjs free podcast react self-hosted websockets youtube-dl
Last synced: 26 days ago
JSON representation
A free, self-hostable, youtube-as-a-podcast service.
- Host: GitHub
- URL: https://github.com/acupofjose/downplay
- Owner: acupofjose
- License: mit
- Created: 2021-08-01T18:10:24.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-08-07T15:45:04.000Z (over 3 years ago)
- Last Synced: 2024-11-08T03:06:23.669Z (3 months ago)
- Topics: expressjs, free, podcast, react, self-hosted, websockets, youtube-dl
- Language: TypeScript
- Homepage:
- Size: 2.43 MB
- Stars: 0
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
---
Goals:
- [x] Entirely Self-Hostable
- [x] `Dockerfile` and sample `docker-compose.yml`
- [x] Easy to use REST API
- [x] User Authentication System
- [x] Simultaneous Workers for multiple downloads
- [x] Queuing System with Persistence through Server Restarts
- [x] Download Youtube Videos
- [x] Download Youtube Playlists
- [x] Download Thumbnail Artwork
- [x] Transcode Audio to `.mp3` format
- [x] Add ID3 tags to mp3 files
- [x] Play files from client
- [x] Live updating client
- [x] Settings management from client
- [ ] User Management
- [ ] Queue channels to watch and automatically download
- [ ] CRUD Operations
- [ ] Webhooks / Notifications## Getting Started
Generate a new `JWT_SECRET` and put it into your `.env` file.
```bash
$ cp .env.example .env
$ openssl rand -hex 32
```Using the `docker-compose.yml` in this repo, adjust the settings accordingly to your setup.
**You should change the DB passwords and make sure ports are not exposed**
Then it's as simple as:
```bash
$ docker-compose up -d
```## API
**POST `auth/login`**
**POST `auth/register`**
**GET `entity`**
**GET `entity/:id`**
**GET `entity/stream/:id`**
**GET `entity/thumbnail/:id`**
**POST `entity/delete/:id`**
**POST `queue`**
**GET `queue`**
**GET `queue/:id`**
**POST `queue/delete/:id`**