Giter Club home page Giter Club logo

invidious's Introduction

Invidious

Build Status

Invidious is an alternative front-end to YouTube

  • Copylefted libre software (AGPLv3+ licensed)
  • Audio-only mode (and no need to keep window open on mobile)
  • Lightweight (the homepage is ~4 KB compressed)
  • Tools for managing subscriptions:
    • Only show unseen videos
    • Only show latest (or latest unseen) video from each channel
    • Delivers notifications from all subscribed channels
    • Automatically redirect homepage to feed
    • Import subscriptions from YouTube
  • Dark mode
  • Embed support
  • Set default player options (speed, quality, autoplay, loop)
  • Support for Reddit comments in place of YouTube comments
  • Import/Export subscriptions, watch history, preferences
  • Developer API
  • Does not use any of the official YouTube APIs
  • Does not require JavaScript to play videos
  • No need to create a Google account to save subscriptions
  • No ads
  • No CoC
  • No CLA

Liberapay: https://liberapay.com/omarroth
BTC: 356DpZyMXu6rYd55Yqzjs29n79kGKWcYrY
BCH: qq4ptclkzej5eza6a50et5ggc58hxsq5aylqut2npk

Invidious Instances

Public instances are to be found in this list.

Official Instances

Screenshots

Player Preferences Subscriptions

Installation

Invidious-Updater is a self-contained script that can automatically install and update Invidious.

Docker:

Build and start cluster:

$ docker-compose up

Then visit localhost:3000 in your browser.

Rebuild cluster:

$ docker-compose build

Delete data and rebuild:

$ docker volume rm invidious_postgresdata
$ docker-compose build

Linux

To manually compile invidious you need at least 2GB of RAM. If you have less you can setup SWAP to have a combined amount of 2 GB or use Docker instead.

Install the dependencies

# Arch Linux
$ sudo pacman -S base-devel shards crystal librsvg postgresql

# Ubuntu or Debian
# First you have to add the repository to your APT configuration. For easy setup just run in your command line:
$ curl -sSL https://dist.crystal-lang.org/apt/setup.sh | sudo bash
# That will add the signing key and the repository configuration. If you prefer to do it manually, execute the following commands:
$ curl -sL "https://keybase.io/crystal/pgp_keys.asc" | sudo apt-key add -
$ echo "deb https://dist.crystal-lang.org/apt crystal main" | sudo tee /etc/apt/sources.list.d/crystal.list
$ sudo apt-get update
$ sudo apt install crystal libssl-dev libxml2-dev libyaml-dev libgmp-dev libreadline-dev postgresql librsvg2-bin libsqlite3-dev

Add an Invidious user and clone the repository

$ useradd -m invidious
$ sudo -i -u invidious
$ git clone https://github.com/iv-org/invidious
$ exit

Set up PostgresSQL

$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql
$ sudo -i -u postgres
$ psql -c "CREATE USER kemal WITH PASSWORD 'kemal';" # Change 'kemal' here to a stronger password, and update `password` in config/config.yml
$ createdb -O kemal invidious
$ psql invidious kemal < /home/invidious/invidious/config/sql/channels.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/videos.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/channel_videos.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/users.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/session_ids.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/nonces.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/annotations.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/playlists.sql
$ psql invidious kemal < /home/invidious/invidious/config/sql/playlist_videos.sql
$ exit

Set up Invidious

$ sudo -i -u invidious
$ cd invidious
$ shards update && shards install
$ crystal build src/invidious.cr --release
# test compiled binary
$ ./invidious # stop with ctrl c
$ exit

systemd service

$ sudo cp /home/invidious/invidious/invidious.service /etc/systemd/system/invidious.service
$ sudo systemctl enable invidious.service
$ sudo systemctl start invidious.service

Logrotate

$ sudo echo "/home/invidious/invidious/invidious.log {
rotate 4
weekly
notifempty
missingok
compress
minsize 1048576
}" | tee /etc/logrotate.d/invidious.logrotate
$ sudo chmod 0644 /etc/logrotate.d/invidious.logrotate

macOS:

# Install dependencies
brew update
brew install shards crystal postgres imagemagick librsvg

# Clone the repository and set up a PostgreSQL database
git clone https://github.com/iv-org/invidious
cd invidious
brew services start postgresql
psql -c "CREATE ROLE kemal WITH PASSWORD 'kemal';" # Change 'kemal' here to a stronger password, and update `password` in config/config.yml
createdb -O kemal invidious
psql invidious kemal < config/sql/channels.sql
psql invidious kemal < config/sql/videos.sql
psql invidious kemal < config/sql/channel_videos.sql
psql invidious kemal < config/sql/users.sql
psql invidious kemal < config/sql/session_ids.sql
psql invidious kemal < config/sql/nonces.sql
psql invidious kemal < config/sql/annotations.sql
psql invidious kemal < config/sql/privacy.sql
psql invidious kemal < config/sql/playlists.sql
psql invidious kemal < config/sql/playlist_videos.sql

# Set up Invidious
shards update && shards install
crystal build src/invidious.cr --release

Update Invidious

Instructions are available in the updating guide.

Usage:

$ ./invidious -h
Usage: invidious [arguments]
    -b HOST, --bind HOST             Host to bind (defaults to 0.0.0.0)
    -p PORT, --port PORT             Port to listen for connections (defaults to 3000)
    -s, --ssl                        Enables SSL
    --ssl-key-file FILE              SSL key file
    --ssl-cert-file FILE             SSL certificate file
    -h, --help                       Shows this help
    -c THREADS, --channel-threads=THREADS
                                     Number of threads for refreshing channels (default: 1)
    -f THREADS, --feed-threads=THREADS
                                     Number of threads for refreshing feeds (default: 1)
    -o OUTPUT, --output=OUTPUT       Redirect output (default: STDOUT)
    -v, --version                    Print version

Or for development:

$ curl -fsSLo- https://raw.githubusercontent.com/samueleaton/sentry/master/install.cr | crystal eval
$ ./sentry
πŸ€–  Your SentryBot is vigilant. beep-boop...

Documentation

Documentation can be found in the wiki.

Extensions

Extensions can be found in the wiki, as well as documentation for integrating it into other projects.

Made with Invidious

  • FreeTube: A libre software YouTube app for privacy.
  • CloudTube: A JavaScript-rich alternate YouTube player
  • PeerTubeify: On YouTube, displays a link to the same video on PeerTube, if it exists.
  • MusicPiped: A material design music player that streams music from YouTube.
  • LapisTube: A fancy and advanced (experimental) YouTube front-end. Combined streams & custom YT features.
  • HoloPlay: Funny Android application connecting on Invidious API's with search, playlists and favoris.

Contributing

  1. Fork it ( https://github.com/iv-org/invidious/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new pull request

Translation

  • Log in with an account you have elsewhere, or register an account and start translating at Hosted Weblate.

Contact

Feel free to send an e-mail to [email protected] or join our Matrix server, or #invidious on freenode.

You can also read the release notes on the page of releases CHANGELOG.md included in the repository.

invidious's People

Contributors

aaferrari avatar anne017 avatar beriain avatar boffire avatar comradekingu avatar dimqua avatar dmitrysandalov avatar dragnucs avatar eutampieri avatar gauthierplm avatar jorgesumle avatar jwilk avatar leonklingele avatar mendel5 avatar noruf avatar olleolleolle avatar omarroth avatar outloudvi avatar perflyst avatar recette-lemon avatar s8321414 avatar santossi avatar supersandro2000 avatar szepeviktor avatar thefrenchghosty avatar tmiland avatar tolstovka avatar vistaus avatar vladcranga avatar wazaaaaa0 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.