Skip to content

yadomi/tube

Repository files navigation

Tube

Screenshot of Tube

Tube is a standalone web app that periodically fetches the RSS feeds of selected YouTube channels. A static index.html is created with a chronological view of all the published videos from subscribed channels. The app doesn't rely on the YouTube API and only uses the RSS feeds of the channels. The aim is to be simple and straightforward, KISS.

Docker image

To build the docker and run image localy:

docker build -t yadomi/tube .
docker run -it -rm --name tube yadomi/tube

Take a look at the compose file for volumes mount and other options.

https://github.com/yadomi/tube/blob/master/docker-compose.yml

and also the list of env variable:

tube/main.ts

Lines 11 to 50 in 65c407e

PORT: Number(Deno.env.get("TUBE_PORT")) || 8000,
/**
* Path to store internal data
*/
DATA_PATH: "./data",
SUBSCRIPTIONS_FILE: "./data/subscriptions",
/**
* Path to store public files
*/
PUBLIC_PATH: Deno.env.get("TUBE_PUBLIC_PATH") || "./public",
/**
* Cron pattern to build the html static file
*/
CRON_FEED_BUILDER: Deno.env.get("TUBE_CRON_FEED_BUILDER") || "*/5 * * * *",
/**
* Cron pattern to update the queue, this is the cron that add each channel to the queue to be fetched
*/
CRON_QUEUE_UPDATE: Deno.env.get("TUBE_CRON_QUEUE_UPDATE") || "0 * * * *",
/**
* Fetch interval in seconds, used to add a delay between each channel fetch to avoid rate limit
* or requests bottleneck.
*
* In case there is a lot of channels to fetch,
* makes sure the total time to fetch all channels is lower than the CRON_QUEUE_UPDATE interval.
* Ex:
* 3600 channels with 1 second interval will take 1 hours to fetch all channels.
* 1000 channels with 1 second interval will take ~16 minutes to fetch all channels.
*/
FETCH_INTERVAL: Number(Deno.env.get("TUBE_FETCH_INTERVAL")) || 1,
/**
* If true, will allow shorts to be processed and added in the feed.
*/
ALLOW_SHORTS: !!JSON.parse(Deno.env.get("TUBE_ALLOW_SHORTS") || "false"),
YOUTUBE_FRONTEND: Deno.env.get("TUBE_YOUTUBE_FRONTEND") || "https://www.youtube.com/watch?v=",

Without docker

To run the app localy without a docker container:

deno task dev

FAQ

  • Do I need a YouTube API Key?
    • No, Tube does not rely on the YouTube API and only uses the RSS feed from the channel page.
  • Do I need a YouTube/Google Account?
    • No, since Tube uses public RSS feeds, no Google account is required. This is a nice alternative to building a subscription feed without a Google/YouTube account.
  • Does it support multiple users?
    • No, Tube is designed to be very simple. In fact, it doesn't even support any users as there is no concept of users. However, you can run multiple instances of it with different data paths and ports and/or protect them behind a reverse proxy or similar.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published