{"id":15813808,"url":"https://github.com/sean89503/invidious_cast","last_synced_at":"2025-05-12T13:31:54.724Z","repository":{"id":232240357,"uuid":"783819137","full_name":"sean89503/Invidious_Cast","owner":"sean89503","description":"Invidious Cast is an application that generates RSS feeds for podcasts based on YouTube channels.","archived":false,"fork":false,"pushed_at":"2024-05-02T22:13:49.000Z","size":313,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-06T04:05:54.458Z","etag":null,"topics":["docker","invidious","linux","mac","podcast","python","windows","youtube","yt-dlp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sean89503.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-08T16:25:37.000Z","updated_at":"2024-07-05T22:38:02.000Z","dependencies_parsed_at":"2024-05-01T22:09:01.836Z","dependency_job_id":"a8935518-a733-4310-b552-200768fba4e6","html_url":"https://github.com/sean89503/Invidious_Cast","commit_stats":null,"previous_names":["sean89503/invidious_cast"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean89503%2FInvidious_Cast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean89503%2FInvidious_Cast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean89503%2FInvidious_Cast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean89503%2FInvidious_Cast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sean89503","download_url":"https://codeload.github.com/sean89503/Invidious_Cast/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246607355,"owners_count":20804570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","invidious","linux","mac","podcast","python","windows","youtube","yt-dlp"],"created_at":"2024-10-05T04:06:15.655Z","updated_at":"2025-04-01T08:31:46.934Z","avatar_url":"https://github.com/sean89503.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n![invidious_Cast logo](https://github.com/sean89503/Invidious_Cast/blob/main/logo.png?raw=true)\n\n\n# Invidious Cast\n\nInvidious 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.\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n  - [Using Docker](#using-docker)\n  - [Using Windows](#using-windows)\n  - [Using Mac](#using-mac)\n- [Known Issues](#known-issues)\n- [Contributing](#contributing)\n- [License](#license)\n- [Roadmap](#roadmap)\n- [Contributors](#contributors)\n\n## Features\n- Convert YouTube channel or Youtube playlist content into podcast RSS feeds.\n- No API needed\n- Support for audio and video formats with customizable URLs.\n- Automatic handling of iTunes-specific tags for improved compatibility.\n- Thumbnail art support.\n- Blocking to prevent your feed from being listed.\n- Link to the source video added to the end of the description.\n- Only add videos that are available (no scheduled lives or geoblocked).\n\n## Installation\nCreate a `channels.txt` file. Please look at the example format:\n- ChannelID/Playlist: is case sensitive\n- Type: video or audio (default is video)\n- Limit: number of videos to put in feed (default is 5)\n- Filter: used to filter out video types (such as shorts and lives) (default is none)\n\nExample lines:\n\n```txt\nUCMLSTcLBdfdsMQ0TfzQzUIw:video:3:none\nUCMLSTcLB4HefgdfgfzQzUIw:audio:20:none\n@TheInvidiousCast:video:5:none\n```\nor if you want to use defualts it can look like\n```txt\nUCMLSTcLBdfdsMQ0TfzQzUIw\nUCMLSTcLB4HefgdfgfzQzUIw\n@TheInvidiousCast\n```\neach 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 \n\n### Using Docker\n1. Clone the repository:\n   ```cmd\n   git clone https://github.com/sean89503/Invidious_Cast.git\n   ```\n2. Navigate into created folder:\n  ```cmd\n  cd Invidious_Cast\n  ```\n3. Build a Docker Image\n  ```cmd\n  sudo docker build -t invidiouscast .\n  ```\n4. Run Container \n  ```cmd\n  sudo docker run -d \\\n  --name invidiouscast \\\n  -e CAST_DOMAIN=https://YOURDOMAINTOINVIDIOUSCAST \\\n  -e CAST_CRON=300 \\\n  -e CAST_TRUSTED_NETWORK=YOUR_DEVICE_IP_YOU_MANAGE_WITH\n  -p 5895:5895 \\\n  -v /HOST/Docker/invidious-cast/xml_files:/app/xml_files:rw \\\n  -v /HOST/Docker/invidious-cast/channels.txt:/app/channels.txt:rw \\\n  -v /HOST/invidious-cast/templates:/app/templates:rw \\\n  --restart unless-stopped \\\n  invidiouscast\n```\n   - Set `CAST_DOMAIN` URL example \"https://invidiouscast.example.com\" This is were you want to host it.\n   - Set the `CAST_CRON` variable (time in seconds between checks for new episodes default, if variable is not found, is once a day `86400`)\n   - 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\n   - Map the volumes to where you can access them. the app could run without you having access but it is easier to troubleshoot and manage the channels file without having access to the container.\n  \n## Using Windows\n### 1. Copy Files\n\nCopy the following files and folders to your desired location:\n- `main.py`\n- `app.py`\n- `requirments.txt`\n- `Template` folder (contains HTML templates for your app)\n\n### 2. Set Environment Variables\n\n1. Open Command Prompt (CMD) as an administrator.\n2. Set the `CAST_DOMAIN` variable:\n\n   ```cmd\n   set CAST_DOMAIN=https://yourcastdomain.com\n   ```\n3. Set the `CAST_CRON` variable (time in seconds between checks for new episodes default if variable is not found is once a day `86400`):\n   ```cmd\n   set CAST_CRON=300\n   ```\n4. 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:\n   ```cmd\n   set CAST_TRUSTED_NETWORK=192.168.0.\n   ```\n \n### 3. Install Requirements\n\n1. Navigate to the directory where your files are located.\n2. Install the required packages:\n   ```cmd\n   pip install -r requirements.txt\n   ```\n\n### 4. Prepare channels.txt\n\nEnsure 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.\n\n### 5. Start the Application\n\nRun the following command to start your application:\n  ```cmd\n  python main.py\n  ```\n  If you want to run invidious as a service, I suggest useing [nssm](https://nssm.cc/)\n\n## Using Mac\n### 1. Copy Files\n\nCopy the following files and folders to your desired location:\n- `main.py`\n- `app.py`\n- `requirments.txt`\n- `Template` folder (contains HTML templates for your app)\n\n### 2. Set Environment Variables\n\n1. Open Terminal.\n2. Set the `CAST_DOMAIN` variable:\n  ```cmd\n  export CAST_DOMAIN=https://yourcastdomain.com\n  ```\n3. Set the `CRON` variable (time in seconds between checks for new episodes):\n  ```cmd\n  export CAST_CRON=300\n  ```\n4.  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 :\n  ```cmd\n  export CAST_TRUSTED_NETWORK=192.168.0.\n  ```\n\n### 3. Install Requirements\n\n1. Navigate to the directory where your files are located in Terminal.\n2. Install the required packages:\n  ```cmd\n  pip install -r requirements.txt\n  ```\n\n### 4. Prepare channels.txt\n\nEnsure 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.\n\n### 5. Start the Application\n\nRun the following command to start your application in Terminal:\n  ```cmd\n  python main.py\n  ```\n\n## Post Instalation\n### 1.\n  Pount your domain to invidious_cast \n  I use and suggest [clouflaried tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) \n   \n### 2.\n   After a full run\n   Try\n   - `https://yourdomain.com/`  \u003c\u003c This will show you all the xml files\n   - `https://yourdomain.com/opml` \u003c\u003c this will help you create an opml URL for importing into your podcast manager\n   - `https://yourdomain.com/manage` \u003c\u003c 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`\n   \n   ![image](https://github.com/sean89503/Invidious_Cast/assets/22017525/3e3bfe15-a9ec-4978-9536-f00a7f51900d)\n\n## Known Issues\n  - filter peramiter is not working\n\n## Contributing\n  Fork the repository.\n  Create a new branch (git checkout -b feature/improvement).\n  Make your changes.\n  Commit your changes (git commit -am 'Add new feature').\n  Push to the branch (git push origin feature/improvement).\n  Create a new Pull Request.\n  Please follow our Code of Conduct in all interactions.\n\n## License\n  This project is licensed under the MIT License - see the LICENSE file for details.\n\nSupport\n  For any questions or issues, please open an issue on GitHub.\n\nAcknowledgments\n  This project uses the following libraries:\n  waitress: https://github.com/Pylons/waitress\n  Flask: https://flask.palletsprojects.com/\n  xml.etree.ElementTree: https://docs.python.org/3/library/xml.etree.elementtree.html\n\nRelease History\n  1.0.0 - Initial release: 4/8/2024\n  2.0.0 - Rewrote to use yt-dlp\n  \n  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.\n\n## Roadmap\n  - add support for filtering shorts, lives and shows\n  - improve logic for geo-blocked videos\n  - ability to add/remove subscription from browser\n  - Add support for more customization options in the RSS feed.\n  - Improve error handling and logging.\n  - Enhance performance for large YouTube channels.\n  - Support for more services\n\n## Contributors\n(@sean89503 )\nWe welcome contributions from the community. If you'd like to contribute, please follow the Contributing guidelines.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsean89503%2Finvidious_cast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsean89503%2Finvidious_cast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsean89503%2Finvidious_cast/lists"}