1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00
2020-02-08 14:35:37 -08:00
2019-11-24 13:17:47 -08:00
2020-02-08 14:35:37 -08:00
2019-12-18 18:28:32 -08:00
2020-02-08 14:35:37 -08:00
2020-01-27 11:37:43 -08:00
2020-02-08 14:35:37 -08:00
2020-02-08 14:35:37 -08:00
2019-11-17 17:30:03 -08:00
2020-01-26 17:25:35 -08:00

Podsync

Podsync

GitHub release (latest SemVer) Go Report Card Patreon Twitter Follow

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.

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 and ffmpeg.

On Mac you can install those with brew:

brew install youtube-dl ffmpeg

Access tokens

In order to query YouTube or Vimeo API you have to obtain an API token first.

Configuration example

You need to create a configuration file (for instance config.toml) and specify the list of feeds that you're going to host. Here is an example how configuration might look like:

[server]
port = 8080
data_dir = "/path/to/data/directory"

[tokens]
youtube = "{YOUTUBE_API_TOKEN}" # Tokens from `Access tokens` section
vimeo = "{VIMEO_API_TOKEN}"

[feeds]
  [feeds.ID1]
  url = "{FEED_URL}" # URL address of a channel, group, user, or playlist. 
  page_size = 50 # The number of episodes to query each update (keep in mind, that this might drain API token)
  update_period = "12h" # How often query for updates, examples: "60m", "4h", "2h45m"
  quality = "high" # or "low"
  format = "video" # or "audio"
  cover_art = "{IMAGE_URL}" # Optional URL address of an image file
  max_height = "720" # Optional maximal height of video, example: 720, 1080, 1440, 2160, ...

Episodes files will be kept at: /path/to/data/directory/ID1, feed will be accessible from: http://localhost/ID1.xml

If you want to hide Podsync behind reverse proxy like nginx, you can use hostname field:

[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

Deploy to AWS

How to run

Run as binary:

$ ./podsync --config config.toml

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 run:

$ make release V=2.0.7
Description
No description provided
Readme 9.8 MiB
Languages
Go 99%
Makefile 0.6%
Dockerfile 0.4%