mirror of
https://github.com/mxpv/podsync.git
synced 2024-05-11 05:55:04 +00:00
148 lines
5.1 KiB
Markdown
148 lines
5.1 KiB
Markdown
# Podsync
|
|
|
|

|
|
|
|
[](https://github.com/mxpv/podsync/actions?query=workflow%3ACI)
|
|
[](https://github.com/mxpv/podsync/actions/workflows/nightly.yml)
|
|
[](https://github.com/mxpv/podsync/releases)
|
|
[](https://goreportcard.com/report/github.com/mxpv/podsync)
|
|
[](https://github.com/sponsors/mxpv)
|
|
[](https://www.patreon.com/podsync)
|
|
[](https://twitter.com/pod_sync)
|
|
|
|
Podsync - is a simple, free service that lets you listen to any YouTube / Vimeo channels, playlists or user videos in
|
|
podcast format.
|
|
|
|
Podcast applications have a rich functionality for content delivery - automatic download of new episodes,
|
|
remembering last played position, sync between devices and offline listening. This functionality is not available
|
|
on YouTube and Vimeo. So the aim of Podsync is to make your life easier and enable you to view/listen to content on
|
|
any device in podcast client.
|
|
|
|
## Features
|
|
|
|
- Works with YouTube and Vimeo.
|
|
- Supports feeds configuration: video/audio, high/low quality, max video height, etc.
|
|
- mp3 encoding
|
|
- Update scheduler supports cron expressions
|
|
- Episodes filtering (match by title, duration).
|
|
- Feeds customizations (custom artwork, category, language, etc).
|
|
- OPML export.
|
|
- Supports episodes cleanup (keep last X episodes).
|
|
- One-click deployment for AWS.
|
|
- Runs on Windows, Mac OS, Linux, and Docker.
|
|
- Supports ARM.
|
|
- Automatic youtube-dl self update.
|
|
- Supports API keys rotation.
|
|
|
|
## Dependencies
|
|
|
|
If you're running the CLI as binary (e.g. not via Docker), you need to make sure that dependencies are available on
|
|
your system. Currently, Podsync depends on `youtube-dl` , `ffmpeg`, and `go`.
|
|
|
|
On Mac you can install those with `brew`:
|
|
```
|
|
brew install youtube-dl ffmpeg go
|
|
```
|
|
|
|
## Documentation
|
|
|
|
- [How to get Vimeo API token](./docs/how_to_get_vimeo_token.md)
|
|
- [How to get YouTube API Key](./docs/how_to_get_youtube_api_key.md)
|
|
- [Podsync on QNAP NAS Guide](./docs/how_to_setup_podsync_on_qnap_nas.md)
|
|
- [Schedule updates with cron](./docs/cron.md)
|
|
|
|
## Nightly builds
|
|
|
|
Nightly builds uploaded every midnight from the `main` branch and available for testing:
|
|
|
|
```bash
|
|
$ docker run -it --rm ghcr.io/mxpv/podsync:nightly
|
|
```
|
|
|
|
### Access tokens
|
|
|
|
In order to query YouTube or Vimeo API you have to obtain an API token first.
|
|
|
|
- [How to get YouTube API key](https://elfsight.com/blog/2016/12/how-to-get-youtube-api-key-tutorial/)
|
|
- [Generate an access token for Vimeo](https://developer.vimeo.com/api/guides/start#generate-access-token)
|
|
|
|
## Configuration
|
|
|
|
You need to create a configuration file (for instance `config.toml`) and specify the list of feeds that you're going to host.
|
|
See [config.toml.example](./config.toml.example) for all possible configuration keys available in Podsync.
|
|
|
|
Minimal configuration would look like this:
|
|
|
|
```toml
|
|
[server]
|
|
port = 8080
|
|
|
|
[storage]
|
|
[storage.local]
|
|
data_dir = "/data/podsync/"
|
|
|
|
[tokens]
|
|
youtube = "PASTE YOUR API KEY HERE"
|
|
|
|
[feeds]
|
|
[feeds.ID1]
|
|
url = "https://www.youtube.com/channel/UCxC5Ls6DwqV0e-CYcAKkExQ"
|
|
```
|
|
|
|
If you want to hide Podsync behind reverse proxy like nginx, you can use `hostname` field:
|
|
|
|
```toml
|
|
[server]
|
|
port = 8080
|
|
hostname = "https://my.test.host:4443"
|
|
|
|
[feeds]
|
|
[feeds.ID1]
|
|
...
|
|
```
|
|
|
|
Server will be accessible from `http://localhost:8080`, but episode links will point to `https://my.test.host:4443/ID1/...`
|
|
|
|
## One click deployment
|
|
|
|
[](https://console.aws.amazon.com/cloudformation/home?region=us-west-1#/stacks/new?stackName=Podsync&templateURL=https://podsync-cf.s3.amazonaws.com/cloud_formation.yml)
|
|
|
|
## How to run
|
|
|
|
|
|
### Build and run as binary:
|
|
|
|
Make sure you have created the file `config.toml`. Also note the location of the `data_dir`. Depending on the operating system, you may have to choose a different location since `/app/data` might be not writable.
|
|
|
|
```
|
|
$ git clone https://github.com/mxpv/podsync
|
|
$ cd podsync
|
|
$ make
|
|
$ ./bin/podsync --config config.toml
|
|
```
|
|
|
|
### How to debug
|
|
|
|
Use the editor [Visual Studio Code](https://code.visualstudio.com/) and install the official [Go](https://marketplace.visualstudio.com/items?itemName=golang.go) extension. Afterwards you can execute "Run & Debug" ▶︎ "Debug Podsync" to debug the application. The required configuration is already prepared (see `.vscode/launch.json`).
|
|
|
|
|
|
### Run via Docker:
|
|
```
|
|
$ docker pull mxpv/podsync:latest
|
|
$ docker run \
|
|
-p 8080:8080 \
|
|
-v $(pwd)/data:/app/data/ \
|
|
-v $(pwd)/config.toml:/app/config.toml \
|
|
mxpv/podsync:latest
|
|
```
|
|
|
|
### Run via Docker Compose:
|
|
```
|
|
$ docker-compose up
|
|
```
|
|
|
|
## How to make a release
|
|
|
|
Just push a git tag. CI will do the rest.
|
|
|