podcast, microphone, audio

Youtube movies as a podcast?

Yes, it’s possible!

Some time ago, my friends from the telegram group asked if we may have a solution which will make a podcast from youtube videos. You may ask why, but answer is really simple:

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. But still – how to do it?

Podsync

Podsync is a free, open-source service, which allows you to listen your favorite user/playlist/channel videos from youtube and vimeo.

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.

The easiest way to use it is (of course) docker 🙂
Everything is described in github repo, but in fact, docker-compose file is really simple:

version: '2.2'

services:
  podsync:
    container_name: podsync
    image: mxpv/podsync:latest
    restart: always
    ports:
      - 80:80
    volumes:
      - ./data:/app/data/
      - ./config.toml:/app/config.toml

If you want to host it, you have to remember about disk space. If you want to keep more than last episode, and have more than two-three titles, then it will require some space.

vod2pod-rss

vod2pod-rss is another solution. vod2pod-rss is a tool that converts YouTube and Twitch channels into podcasts seamlessly, without the need for storage. It simplifies the process of accessing your content on the go by transforming video content into audio podcasts. vod2pod eliminates the hassle of managing large video files while still providing access to captivating content.

Features:

  • Completely converts the VoDs into a proper podcast RSS that can be listened to directly inside the client.
  • The VoDs are not downloaded on the server, so no need for storage while self-hosting this app.
  • VoDs are transcoded to MP3 192k on the fly by default, tested to be working flawlessly even on a Raspberry Pi 3-4.
  • also works on standard rss podcasts feed if you want to have a lower bitrate version to save mobile data.

Again, the easiest way is docker. In this example docker-compose file is more complicated, but still easy to understand, and it’s really good documented in github repo

version: "3.9"

services:
  api_keys:
    image: alpine
    environment:
    #add your api-keys here (put them after the "=" sign or use an .env file)
    #(is normal to se this conteiner as stopped soon after deploy)
      # Set your YouTube API key
      - YT_API_KEY=${YT_API_KEY:-}
      # Set your Twitch secret
      - TWITCH_SECRET=${TWITCH_SECRET:-}
      # Set your Twitch client ID
      - TWITCH_CLIENT_ID=${TWITCH_CLIENT_ID:-}

  vod2pod:
    extends: api_keys
    #change "latest" to "X.X.X" to pin a version es: "1.0.4" will force the image to use to version 1.0.4, if you do please watch the repo for updates (tutorial in README.md)
    #change "latest" to "beta" if you want to test yet unreleased fixes/features (expect bugs and broken builds from time to time)
    image: madiele/vod2pod-rss:latest 
    # uncomment to build vod2pod from scratch, only do this if your architecture is not supported
    #build: 
    #  dockerfile: ./Dockerfile
    #  context: https://github.com/madiele/vod2pod-rss.git
    depends_on:
      - redis
    restart: unless-stopped
    ports:
      - "80:8080" #change from 80 to another port if you already use the port 80 on your host
    environment:
      - TZ=Europe/London #set if you want the logs to have you timezone
      - MP3_BITRATE=192 #bitrate in kilobits of the mp3 transcode
      - TRANSCODE=true #put to false if you only need feed generation
      - SUBFOLDER=/ #for reverse proxies, ex: "/" -> access the app at mywebsite.com ; "vod2pod" -> access at mywebsite.com/vod2pod
      - RUST_LOG=INFO #set to DEBUG if you are having problems than open a github issue with the logs, use "sudo docker compose logs" to print them
      - REDIS_ADDRESS=redis #don't edit this
      - REDIS_PORT=6379 #don't edit this

  redis:
    image: "redis:6.2"
    command: redis-server --save 20 1 --loglevel warning
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
      interval: 10s
      timeout: 3s
      retries: 5

Of course, as always, I do not recomend to store your API keys (or other secrets) in docker-compose file. Use environment file, or secrets to keep them 🙂

Summary

vod2pod-rss:

  • Converts a YouTube or Twitch channel into a podcast RSS feed.
  • VODs are transcoded to MP3 on the fly, so no server storage is needed.
  • It has a Web UI for easy feed generation.
  • The VODs are not downloaded on the server, which saves storage space.
  • It supports on-the-fly MP3 conversion and streaming to your podcast client.

Podsync:

  • Podsync turning YouTube or Vimeo channels into podcast feeds as well.
  • It requires downloading the videos first before converting them to a podcast format.
  • Podsync not support on-the-fly transcoding, which means it require storage compared to vod2pod-rss.
  • It doesn’t have a Web UI for easy feed generation, which means each channel/playlist/user must be added manually into the config file.

Conclusion

I started with podsync, but manual labor needed from me every time when someone ask for a new input was too big, and I decided to search alternative. Currently me and my friends are using vod2pod-rss. The main pros are simple – I don’t have to add entries manually, because vod2pod has a nice gui, where every user can generate podcast feed by itself, and because it’s generated “on the fly” it does not require additional space on my VPS to store generated content.

Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.