Invidious Cast is a Flask application that generates RSS feeds for podcasts based on YouTube channels. It allows you to customize the podcast feed format and includes support for iTunes-specific tags.
Create a channels.txt
file. Please look at the example format:
Example lines:
UCMLSTcLBdfdsMQ0TfzQzUIw:video:3:none
UCMLSTcLB4HefgdfgfzQzUIw:audio:20:none
@TheInvidiousCast:video:5:none
or if you want to use defualts it can look like
UCMLSTcLBdfdsMQ0TfzQzUIw
UCMLSTcLB4HefgdfgfzQzUIw
@TheInvidiousCast
each line must have the channel id and i one peramiter is needed please fill out all so it will know what permiter it is refuring
git clone https://github.com/sean89503/Invidious_Cast.git
cd Invidious_Cast
sudo docker build -t invidiouscast .
sudo docker run -d \
--name invidiouscast \
-e CAST_DOMAIN=https://YOURDOMAINTOINVIDIOUSCAST \
-e CAST_CRON=300 \
-e CAST_TRUSTED_NETWORK=YOUR_DEVICE_IP_YOU_MANAGE_WITH
-p 5895:5895 \
-v /HOST/Docker/invidious-cast/xml_files:/app/xml_files:rw \
-v /HOST/Docker/invidious-cast/channels.txt:/app/channels.txt:rw \
-v /HOST/invidious-cast/templates:/app/templates:rw \
--restart unless-stopped \
invidiouscast
CAST_DOMAIN
URL example "https://invidiouscast.example.com" This is were you want to host it.CAST_CRON
variable (time in seconds between checks for new episodes default, if variable is not found, is once a day 86400
)CAST_TRUSTED_NETWORK
variable (the device IP or network example 1 host 192.168.0.10 or a group like 192.168.0.2 will let anyone that starts with 192.168.0.2 or 192.168.0.2*) * don't trust your tunnel or proxy as it will allow everyone to have accessCopy the following files and folders to your desired location:
main.py
app.py
requirments.txt
Template
folder (contains HTML templates for your app)Open Command Prompt (CMD) as an administrator.
Set the CAST_DOMAIN
variable:
set CAST_DOMAIN=https://yourcastdomain.com
Set the CAST_CRON
variable (time in seconds between checks for new episodes default if variable is not found is once a day 86400
):
set CAST_CRON=300
Set the CAST_TRUSTED_NETWORK
variable (the device IP or network example 1 host 192.168.0.10 or a group like 192.168.0.2 will let anyone that starts with 192.168.0.2 or 192.168.0.2*) *don't trust your tunnel or proxy as it will allow everyone to have access:
set CAST_TRUSTED_NETWORK=192.168.0.
pip install -r requirements.txt
Ensure that the channels.txt
file is in the same directory as main.py
and app.py
. This file should follow the specified format for listing channel IDs or playlists.
Run the following command to start your application:
python main.py
If you want to run invidious as a service, I suggest useing nssm
Copy the following files and folders to your desired location:
main.py
app.py
requirments.txt
Template
folder (contains HTML templates for your app)CAST_DOMAIN
variable:export CAST_DOMAIN=https://yourcastdomain.com
CRON
variable (time in seconds between checks for new episodes):export CAST_CRON=300
CAST_TRUSTED_NETWORK
variable (the device IP or network example 1 host 192.168.0.10 or a group like 192.168.0.2 will let anyone that starts with 192.168.0.2 or 192.168.0.2*) *don't trust your tunnel or proxy as it will allow everyone to have access :export CAST_TRUSTED_NETWORK=192.168.0.
pip install -r requirements.txt
Ensure that channels.txt
file is in the same directory as main.py
and app.py
. This file should follow the specified format for listing channel IDs or playlists.
Run the following command to start your application in Terminal:
python main.py
Pount your domain to invidious_cast I use and suggest clouflaried tunnel
After a full run Try
https://yourdomain.com/
<< This will show you all the xml fileshttps://yourdomain.com/opml
<< this will help you create an opml URL for importing into your podcast managerhttps://yourdomain.com/manage
<< this will allow you to edit the channels.txt
localhost what is listed in parameter access by defualt and what is listed in CAST_TRUSTED_NETWORK
Fork the repository. Create a new branch (git checkout -b feature/improvement). Make your changes. Commit your changes (git commit -am 'Add new feature'). Push to the branch (git push origin feature/improvement). Create a new Pull Request. Please follow our Code of Conduct in all interactions.
This project is licensed under the MIT License - see the LICENSE file for details.
Support For any questions or issues, please open an issue on GitHub.
Acknowledgments This project uses the following libraries: waitress: https://github.com/Pylons/waitress Flask: https://flask.palletsprojects.com/ xml.etree.ElementTree: https://docs.python.org/3/library/xml.etree.elementtree.html
Release History 1.0.0 - Initial release: 4/8/2024 2.0.0 - Rewrote to use yt-dlp
Invidious Cast is not affiliated with or endorsed by YouTube or iTunes. This is an independent project for creating podcast RSS feeds from YouTube content.
(@sean89503 ) We welcome contributions from the community. If you'd like to contribute, please follow the Contributing guidelines.