Invidious is an alternative front-end to YouTube
Go to file
Tony Finn cdc007c83c
Specify the public schema for public videos
Unlike the other migrations, this one uses a bare table name to specify the table. This means it looks in the default search path. Unfortunately, the out of box search path is:

1. Schema with the same name as the user
2. Public

Because of this, if a schema exists with the same name as the DB user, the playlist_videos table will get created in _that_ schema, rather than the public schema, and then the grant statement will fail with an error like below if check_table is enabled as it keeps trying to create the table but failing on the grant statement:

```
2022-01-22 02:27:42 UTC [info] check_table: check_table: CREATE TABLE playlist_videos
Unhandled exception: relation "public.playlist_videos" does not exist (PQ::PQError)
  from /usr/share/crystal/src/primitives.cr:266:3 in 'handle_error'
  from lib/pg/src/pq/connection.cr:184:9 in 'handle_async_frames'
  from lib/pg/src/pq/connection.cr:162:7 in 'read'
  from lib/pg/src/pq/query.cr:53:14 in 'exec_all'
  from lib/db/src/db/database.cr:126:9 in '__crystal_main'
  from /usr/share/crystal/src/crystal/main.cr:110:5 in 'main'
  from src/env/__libc_start_main.c:94:2 in 'libc_start_main_stage2'
2022-01-22 02:27:43 UTC [info] check_table: check_table: CREATE TABLE playlist_videos
Unhandled exception: relation "public.playlist_videos" does not exist (PQ::PQError)
  from /usr/share/crystal/src/primitives.cr:266:3 in 'handle_error'
  from lib/pg/src/pq/connection.cr:184:9 in 'handle_async_frames'
  from lib/pg/src/pq/connection.cr:162:7 in 'read'
  from lib/pg/src/pq/query.cr:53:14 in 'exec_all'
  from lib/db/src/db/database.cr:126:9 in '__crystal_main'
  from /usr/share/crystal/src/crystal/main.cr:110:5 in 'main'
  from src/env/__libc_start_main.c:94:2 in 'libc_start_main_stage2'
```
2022-01-22 02:32:13 +00:00
.github Create FUNDING.yml 2022-01-19 20:43:52 +00:00
assets Add JS to focus search box on '/' 2022-01-13 22:48:31 +01:00
config Specify the public schema for public videos 2022-01-22 02:32:13 +00:00
docker switch to alpine 3.15 for using crystal 1.2.2 2022-01-09 22:27:22 +01:00
kubernetes fix image location for helm 2021-09-01 21:21:38 +00:00
locales Apply suggestions from review 2022-01-17 21:47:29 +01:00
screenshots Rework the README (#2135) 2021-07-24 20:48:30 +02:00
scripts Add ability to propagate locale removals 2021-06-13 07:23:45 -07:00
spec Merge pull request #2545 from bbielsa/csv-subscriptions-import 2022-01-16 15:11:37 +01:00
src Merge pull request #2822 from matthewmcgarvey/reddit-comments 2022-01-19 12:53:20 +01:00
.editorconfig Initial commit 2017-11-23 01:48:55 -06:00
.gitattributes Only ignore the videojs libraries 2021-05-23 17:59:02 +00:00
.gitignore Untrack config.yml (#1557) 2020-12-10 08:18:30 +01:00
CHANGELOG.md Remove admin_email. Use repos url for captcha ID and reddit header. Add note about not updating changelog 2021-01-07 21:09:24 +01:00
LICENSE Change license 2018-01-28 11:32:40 -06:00
Makefile Also fix DISABLE_QUIC declaration 2022-01-04 01:47:41 +01:00
README.md Add FAQ link to readme 2022-01-16 16:14:55 +01:00
TRANSLATION TRANSLATION file for l10n 2020-05-26 18:02:21 +00:00
docker-compose.yml Added -d parameter for dbname to postgres-container healthcheck (#2571) 2021-11-08 21:47:00 +00:00
invidious.service Add logfile to systemd service and fix path 2019-01-23 21:31:52 +01:00
shard.lock i18n: use spectator for i18next plurals spec 2022-01-12 00:49:36 +01:00
shard.yml i18n: use spectator for i18next plurals spec 2022-01-12 00:49:36 +01:00

README.md

Invidious logo

Invidious

License: AGPLv3 Build Status GitHub commits GitHub issues GitHub pull requests Translation Status Awesome Humane Tech

An open source alternative front-end to YouTube

Website  •  Instances list  •  FAQ  •  Documentation  •  Contribute  •  Donate

Chat with us:
Matrix Libera.chat (IRC)
Mastodon: @invidious@social.tchncs.de
Contact the team directly

Screenshots

Player Preferences Subscriptions

Features

User features

  • Lightweight
  • No ads
  • No tracking
  • No JavaScript required
  • Light/Dark themes
  • Customizable homepage
  • Subscriptions independent from Google
  • Notifications for all subscribed channels
  • Audio-only mode (with background play on mobile)
  • Support for Reddit comments
  • Available in many languages, thanks to our translators

Data import/export

  • Import subscriptions from YouTube, NewPipe and Freetube
  • Import watch history from NewPipe
  • Export subscriptions to NewPipe and Freetube
  • Import/Export Invidious user data

Technical features

  • Embedded video support
  • Developer API
  • Does not use official YouTube APIs
  • No Contributor License Agreement (CLA)

Quick start

Using invidious:

Hosting invidious:

Documentation

The full documentation can be accessed online at https://docs.invidious.io/

The documentation's source code is available in this repository: https://github.com/iv-org/documentation

Extensions

We highly recommend the use of Privacy Redirect, a browser extension that automatically redirects Youtube URLs to any Invidious instance and replaces embedded youtube videos on other websites with invidious.

The documentation contains a list of browser extensions that we recommended to use along with Invidious.

You can read more here: https://docs.invidious.io/Extensions.md

Contribute

Code

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

Translations

We use Weblate to manage Invidious translations.

You can suggest new translations and/or correction here: https://hosted.weblate.org/engage/invidious/.

Creating an account is not required, but recommended, especially if you want to contribute regularly. Weblate also allows you to log-in with major SSO providers like Github, Gitlab, BitBucket, Google, ...

Projects using 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.
  • HoloPlay: Funny Android application connecting on Invidious API's with search, playlists and favorites.

Contact the team directly

Every team member is available through GitHub or through the Matrix room (bridged to IRC), however, if you need/have to, you can contact the team directly via e-mail (remove +SPAMGUARD from the addresses):

  • General Inquiries (forwarded to all team members): contact +SPAMGUARD [at] invidious [dot] io

Note: before sending a bug report please check that it hasn't already be reported on GitHub - bug reports sent to this address will be copied to GitHub

  • Security issues (forwarded to the two project owners, @TheFrenchGhosty and @Perflyst): security +SPAMGUARD [at] invidious [dot] io

Note: the creation of a PGP key for this address is planned

Liability

We take no responsibility for the use of our tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate use of Invidious, such as illegal downloading. This tool is provided to you in the spirit of free, open software.

You may view the LICENSE in which this software is provided to you here.

  1. Limitation of Liability.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.