https://github.com/gildas-gh/youtube-podcast
Convert any YouTube channel or playlist into a downloadable podcast
https://github.com/gildas-gh/youtube-podcast
france podcast podcast-generator python youtube youtube-downloader
Last synced: 8 days ago
JSON representation
Convert any YouTube channel or playlist into a downloadable podcast
- Host: GitHub
- URL: https://github.com/gildas-gh/youtube-podcast
- Owner: Gildas-GH
- Created: 2019-02-19T16:32:00.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-03-27T12:13:55.000Z (over 6 years ago)
- Last Synced: 2025-10-14T15:27:01.686Z (18 days ago)
- Topics: france, podcast, podcast-generator, python, youtube, youtube-downloader
- Language: HTML
- Size: 15.6 KB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# YouTube to podcast converter
This tool can convert any YouTube channel or a playlist into a downloadable podcast. You can choose audio or video format, and use it online or install it on your own server.
## Online
1. Head over to YouTube in your browser, and find the URL of your favorite user, channel, or playlist. The URL will look like one of these:
+ `https://m.youtube.com/user/latenight`
+ `https://www.youtube.com/channel/UCVTyTA7-g9nopHeHbeuvpRA`
+ `https://www.youtube.com/playlist?list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb`
2. Open up your podcasts app and add a new podcast by URL. Copy and paste in the URL from step 1, except change the domain to youtube-podcast's one.
Your modified URL should look like one of these:
+ `https://podcast.becauseofprog.fr/user/latenight`
+ `https://podcast.becauseofprog.fr/channel/UCVTyTA7-g9nopHeHbeuvpRA`
+ `https://podcast.becauseofprog.fr/playlist?list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb`
3. youtube-podcast generates video podcasts by default. If you'd like an audio-only podcast instead, simply add `?a` to the end of the URL for users or channels, or add `&a` to the end of the URL for playlists:
+ `https://podcast.becauseofprog.fr/user/latenight?a`
+ `https://podcast.becauseofprog.fr/channel/UCVTyTA7-g9nopHeHbeuvpRA?a`
+ `https://podcast.becauseofprog.fr/playlist?list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&a`
4. Hit subscribe. You're all set. You can now download and refresh episodes, just like with any other podcast.
**If you enjoy this service, please consider making a donation to help keep it up and running.**
## Install it on your own server
If you don't want to use the online version, you can install youtube-podcast on your own server. It requires Python 3.7+ (tested on Python 3.7.2), pip, git and [youtube-dl](http://rg3.github.io/youtube-dl/download.html).
### Steps
+ Clone the repository : ``git clone https://github.com/Gildas-GH/youtube-podcast``
+ Install requirements : ``pip3 install -r requirements.txt``
+ You'll need a [YouTube API key](https://stackoverflow.com/questions/44399219/where-to-find-the-youtube-api-key), put it in a new file named ``g.py`` in /epi/ like this : ``KEY = 'R4nd0mAp1k3y'``
+ You must also add the domain or url for your yt-podcast instance in g.py : ``DOMAIN = 'domain.tld'``
+ Try ``python3 run.py`` to run yt-podcast
The software is now installed and listening on port 5003. Now we need to configure a daemon to let the software run in background, and expose it over the internet.
### Create a daemon
We need to run yt-podcast in the background. On Debian, create and edit a new systemd service :
``vi /etc/systemd/system/yt-podcast.service``
In this file, paste the following configuration :
```
[Unit]
Description=uWSGI instance to serve yt-podcast
After=network.target
[Service]
User=sammy
Group=www-data
WorkingDirectory=/path/to/yt-podcast
ExecStart=/usr/local/bin/uwsgi --ini youtube-podcast.ini
[Install]
WantedBy=multi-user.target
```
Make sure you edit user, group and the software path.
Then you can run ``service yt-podcast start`` to start the software.
### Nginx reverse proxy
I am using nginx on my server. If you know the configuration for other web servers, a pull request is welcome!
Put this configuration in a ``server`` block.
```nginx
location / {
include uwsgi_params;
uwsgi_pass unix:/path/to/yt-podcast/youtube-podcast.sock;
# Some optional arguments:
# uwsgi_cache mycache;
# uwsgi_cache_valid any 1h;
# uwsgi_cache_key $request_uri;
}
```
You can now access yt-podcast from the address you set in nginx and in ``g.py``. The rules to create a podcast will be the same (``http(s)://domain.tld/playlist?list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&a`` for example).
## Note
You can also use EPI to download a single video :
+ Video format : https://podcast.becauseofprog.fr/download/video/VideoID.mp4
+ Audio format : https://podcast.becauseofprog.fr/download/audio/VideoID.m4a