Commit Graph

3536 Commits

Author SHA1 Message Date
syeopite
654f5fd45e Add btn in video desc to show transcript 2025-05-10 20:04:06 -07:00
Fijxu
aab6ff4bb6 Update src/invidious/routes/before_all.cr
Co-authored-by: syeopite <70992037+syeopite@users.noreply.github.com>
2025-05-10 23:02:34 -04:00
syeopite
20cf913a4e Add Javascript licence information automatically
This commit automates the process of documenting the licenses of
Invidious Javascript files through a compile time macro in the
licenses.ecr template file.

This should hopefully help keep the license documentation up-to-date
and allow extensions like LibreJS to always be able to load the latest
Javascript files of Invidious.

Currently only Invidious's first-party Javascript files are supported.
In the future it should be possible to leverage videojs-dependencies.yml
to automatically document the Javascript licenses for
VideoJS and co. as well.
2025-05-10 18:44:53 -07:00
Fijxu
1492453c60 update comment 2025-05-10 16:31:14 -04:00
Fijxu
401bc110d6 fix: set CSP header after setting preferences of registered users
Fixes https://github.com/iv-org/invidious/issues/5142

add reason why extra_media_csp is after reading user preferences from the database and cookies

set media-src after loading database user preferences
2025-05-10 13:26:30 -04:00
Fijxu
30ae222bf2 Add missing javascript licenses 2025-05-09 23:02:19 -04:00
Fijxu
abb5927450 chore: set minified js route on licenses so librejs can detect it
Some checks are pending
Build and release container directly from master / release (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Waiting to run
Invidious CI / build-docker (push) Waiting to run
Invidious CI / build-docker-arm64 (push) Waiting to run
Invidious CI / lint (push) Waiting to run
2025-05-09 22:29:54 -04:00
Fijxu
c141705810 fix: restore jslicense (required for librejs to work) on footer 2025-05-09 22:29:53 -04:00
Fijxu
975201a673 chore: set ident back to spaces 2025-05-09 22:29:53 -04:00
Fijxu
4c8b02f5fa Merge 'Extract footer overhaul from #2215':
From https://github.com/iv-org/invidious/pull/4003

Squashed

commit 5bcc25b2da46e5b21ebc9d11a0963b4df8cd9402
Author: syeopite <syeopite@syeopite.dev>
Date:   Thu Nov 7 20:33:35 2024 -0800

    Reduce footer buffer height

commit 1341f67e85b27103514339c0ab4267dae7e7af09
Author: syeopite <syeopite@syeopite.dev>
Date:   Thu Nov 7 20:29:52 2024 -0800

    Rename project homepage to project website

commit d1b9769d8941e4ce7d95bc2f3a574586da47b3c9
Author: syeopite <syeopite@syeopite.dev>
Date:   Thu Nov 7 20:28:26 2024 -0800

    Add footer buffer only in necessary templates

commit 2c798c945215db683aa4be2e34747ea9f6bf1c8b
Author: syeopite <syeopite@syeopite.dev>
Date:   Wed Mar 13 14:58:29 2024 -0700

    Remove preferences and login link from footer

commit d5571faec5435dff3a1c09d726c983fbc9836bb2
Author: syeopite <syeopite@syeopite.dev>
Date:   Wed Mar 13 14:52:43 2024 -0700

    Add modified disclaimer to version tag

commit a41bedbe64152ce5c51589c2d645276b89f4060a
Author: syeopite <syeopite@syeopite.dev>
Date:   Wed Mar 13 14:50:44 2024 -0700

    Typo

commit 87cdc3b286a80f0a404e4b2891a58febe3aacad7
Author: syeopite <syeopite@syeopite.dev>
Date:   Wed Mar 13 14:48:06 2024 -0700

    Add config option for instance donation link

    Co-authored-by: Arya K <arya@projectsegfau.lt>

commit b5ae452bc5750e14f00d8e16d2fc8b708262fcc3
Author: syeopite <syeopite@syeopite.dev>
Date:   Wed Mar 13 14:38:18 2024 -0700

    Add "Instance" section to footer

commit 001ba71b9101445243d194887adbd0b95852cc54
Author: syeopite <syeopite@syeopite.dev>
Date:   Wed Mar 13 14:01:20 2024 -0700

    Add config to add custom text in the footer

    Co-authored-by: Aural Glow <125497673+auralglow@users.noreply.github.com>

commit 1da6933b8e41be43e0aa703d1f989869cabb56a2
Author: syeopite <syeopite@syeopite.dev>
Date:   Wed Mar 13 13:55:49 2024 -0700

    Add new instance customization section in config

commit dc9697157bca50aab56450ea76aa0ac18da18448
Author: syeopite <syeopite@syeopite.dev>
Date:   Wed Mar 13 13:35:39 2024 -0700

    Add Invidious version to footer

commit 629f95fcbead361f2e260a0a38e0839de7f1d735
Author: syeopite <70992037+syeopite@users.noreply.github.com>
Date:   Sat Sep 16 23:05:38 2023 +0000

    Use instances.invidious.io instead of redirect

    Co-authored-by: TheFrenchGhosty <47571719+TheFrenchGhosty@users.noreply.github.com>

commit 3f0ea875c16eb3a87050a9a73bec536be41dde48
Author: syeopite <70992037+syeopite@users.noreply.github.com>
Date:   Sun Jul 30 06:10:18 2023 +0000

    Update locales/en-US.json

    Co-authored-by: Samantaz Fox <coding@samantaz.fr>

commit e9639aaef8222a458c0d67d72c18764487ba9750
Author: syeopite <syeopite@syeopite.dev>
Date:   Mon Jul 24 15:11:45 2023 -0700

    Extract and implement footer overhaul from #2215
2025-05-09 22:29:53 -04:00
Fijxu
f52b91c28d Merge remote-tracking branch 'upstream/master'
Some checks are pending
Build and release container directly from master / release (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Waiting to run
Invidious CI / build-docker (push) Waiting to run
Invidious CI / build-docker-arm64 (push) Waiting to run
Invidious CI / lint (push) Waiting to run
2025-05-09 17:13:45 -04:00
Fijxu
b120abdcc5 fix: safely access "label" key
Fixes https://github.com/iv-org/invidious/issues/5095

On some videos, `label` is missing from the video information. Invidious
assumed that the `label` key existed.

Videos with label have this inside `metadataBadgeRenderer`:

```
{"style" => "BADGE_STYLE_TYPE_SIMPLE",
 "label" => "4K",
 "trackingParams" => "COMDENwwGAoiEwiCrebe6JWNAxWIxz8EHSQRFTU="}
```

but other videos, for some reason, look like this:

```
{"icon" => {"iconType" => "PERSON_RADAR"},
 "style" => "BADGE_STYLE_TYPE_SIMPLE",
 "trackingParams" => "CM4DENwwGAsiEwiCrebe6JWNAxWIxz8EHSQRFTU="}
```
2025-05-09 02:58:29 -04:00
Fijxu
65bb1f5ebb chore: remove unused config options 2025-05-09 00:50:26 -04:00
Fijxu
af13d10730 Merge 'Show message when comments are turned off'
From https://github.com/iv-org/invidious/pull/4051
2025-05-09 00:16:07 -04:00
Fijxu
caa2273bf2 fix(backend switcher): pass referer in URL
Some checks are pending
Build and release container directly from master / release (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Waiting to run
Invidious CI / build-docker (push) Waiting to run
Invidious CI / build-docker-arm64 (push) Waiting to run
Invidious CI / lint (push) Waiting to run
Closes https://git.nadeko.net/Fijxu/invidious/issues/109

This will allow browsers that by default set the referer to the same
page to tracking via the referer header. IceCat browser does this.
2025-05-08 20:27:40 -04:00
Fijxu
4e2f59ba37 feat(routes): redirect to the backend selected at the time of downloading 2025-05-08 17:24:54 -04:00
Émilien (perso)
9e3c0dfd85 fix: fallback first with TVHTML then MWEB
fixes #5273
2025-05-08 19:55:22 +02:00
Fijxu
25eade589f fix: pass user to query.process if present.
Fixes https://github.com/iv-org/invidious/issues/5097
2025-05-08 03:12:00 -04:00
Fijxu
35896d086b fix: do not strip '+' character from referer
Fix that a user of my instance (https://inv.nadeko.net) sent me by email.
2025-05-08 01:00:46 -04:00
Fijxu
b9114cbb9d feat(frontend): config option to disable video downloads 2025-05-08 00:31:03 -04:00
Fijxu
ea587758a5 Merge branch 'graceful-parse-errors'
Some checks failed
Build and release container directly from master / release (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Has been cancelled
Invidious CI / build-docker (push) Has been cancelled
Invidious CI / build-docker-arm64 (push) Has been cancelled
Invidious CI / lint (push) Has been cancelled
From: https://github.com/iv-org/invidious/pull/5196
2025-05-04 15:32:37 -04:00
Fijxu
3c5d37810d Merge remote-tracking branch 'upstream/master' 2025-05-04 14:17:11 -04:00
Fijxu
2d49601066 feat: option to increase the number of videos shown on the popular page 2025-05-04 14:10:37 -04:00
absidue
2c1400c41e Fix proxying live DASH streams (#4589) 2025-05-03 20:28:19 +00:00
Alex Maras
8fd0b82c38 feat: route to invidious companion on downloads (#5224) 2025-05-03 01:28:18 +02:00
Émilien (perso)
7579adc3a3 fix: fallback other yt clients no url found for adaptive formats (#5262) 2025-05-02 16:57:02 +02:00
Fijxu
05b99df49a fix(typo): 'Salect' -> 'Select' 2025-04-17 16:55:30 -04:00
Fijxu
ad95f0e2c0 feat(backends): redirect to another backend if one is unavailable
Only works with cookies for now. Support for numbered backends will be
added later since it requires some black magic.
2025-04-14 16:53:09 -04:00
Fijxu
e13800e859 fix: support for I2P backends! (again!)
Some checks are pending
Build and release container directly from master / release (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Waiting to run
Invidious CI / build-docker (push) Waiting to run
Invidious CI / build-docker-arm64 (push) Waiting to run
Invidious CI / lint (push) Waiting to run
2025-04-13 18:35:00 -04:00
Fijxu
69e351770d chore(backends): change logic used to detect if the user accessed via a numbered backend or main domain
Numbered backends will only work if the domain has a number at the end, for example:

inv1.nadeko.net will redirect to backend 1
inv2.nadeko.net will redirect to backend 2
2inv.nadeko.net will use cookies
nadeko1.net will redirect to backend 1

The number of the backend in the domain should be always on the end of it to be able to use numbered backends.
2025-04-13 18:18:06 -04:00
Fijxu
3e33c9b70f redis: update library and use the recently added #ping method 2025-04-13 15:53:54 -04:00
Fijxu
0ce17d91eb chore(config): change server_id cookie name 2025-04-13 15:53:54 -04:00
Fijxu
b4e146fb60 redis: replace lib by jgaskins/redis
https://github.com/jgaskins/redis

It's faster and in active development, old one gave me this using a TCP
connection:

test   5.94k (168.34µs) (±56.73%)  144B/op  fastest
test   5.11k (195.76µs) (±58.89%)  144B/op  fastest
test   5.48k (182.33µs) (±73.39%)  144B/op  fastest
test   3.42k (292.56µs) (±66.19%)  144B/op  fastest

meanwhile, the jgaskins/redis one gives:

test   6.96k (143.66µs) (±58.73%)  96.0B/op  fastest
test   6.36k (157.16µs) (±55.95%)  96.0B/op  fastest
test   7.06k (141.65µs) (±57.03%)  96.0B/op  fastest
2025-04-13 02:30:37 -04:00
Fijxu
7b072200f6 add support for i2p backends and onion numbered backends
Some checks failed
Build and release container directly from master / release (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Has been cancelled
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Has been cancelled
Invidious CI / build-docker (push) Has been cancelled
Invidious CI / build-docker-arm64 (push) Has been cancelled
Invidious CI / lint (push) Has been cancelled
2025-04-06 01:33:08 -04:00
syeopite
6c063436d4 Fix issues raised by code review
Remove explicit `self.` from #process of parsers

Remove explicit return tuple in get_issue_template

Fix formatting

Move inline issue template style to stylesheet

Use @id in ProblematicTimelineItem xml repr

Fix naming
2025-04-05 12:40:38 -07:00
Fijxu
bbec111997 feat(experimental): minify js files using esbuild
Some checks are pending
Build and release container directly from master / release (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Waiting to run
Invidious CI / build-docker (push) Waiting to run
Invidious CI / build-docker-arm64 (push) Waiting to run
Invidious CI / lint (push) Waiting to run
2025-04-05 03:03:04 -03:00
Fijxu
e3d60a0517 fix missing scheme on meta elements
move scheme logic
2025-04-05 03:03:00 -03:00
Émilien (perso)
0c07e9d27a chore: set dash by default (#5216) 2025-04-04 14:00:29 +02:00
Fijxu
ce052103e7 deprecate support for external video playback proxy 2025-04-03 03:12:36 -03:00
Fijxu
c57a4f4920 add CSP based on backend selected by the user
xd
2025-04-03 03:12:36 -03:00
Fijxu
426e7bfbdb use Host header on img-src 'self' data: CSP 2025-04-03 03:12:36 -03:00
Fijxu
3d85519ec9 Only show embed link on error pages if v query param is present 2025-04-03 03:12:36 -03:00
Fijxu
a74d89b6d9 Safely handle missing current_companion just in case 2025-04-03 03:12:36 -03:00
Fijxu
fd8c40e0da fix: fix wrong invidious companion logic on backends
do not change to another companion if request fails
2025-04-03 03:12:36 -03:00
Fijxu
5f1944925b remove unused Content-Security-Policy generated on every request to watch end embed 2025-04-01 18:51:13 -03:00
Fijxu
015c9ec5d1 support for numbered backends
Some checks are pending
Build and release container directly from master / release (push) Waiting to run
Invidious CI / build-docker (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Waiting to run
Invidious CI / build-docker-arm64 (push) Waiting to run
Invidious CI / lint (push) Waiting to run
2025-03-31 19:26:33 -03:00
Fijxu
be9a3794e9 cookies: remove port number from domain if it exists
Some checks are pending
Invidious CI / lint (push) Waiting to run
Build and release container directly from master / release (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.12.1, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.13.2, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.14.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (1.15.0, true) (push) Waiting to run
Invidious CI / build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }} (nightly, false) (push) Waiting to run
Invidious CI / build-docker (push) Waiting to run
Invidious CI / build-docker-arm64 (push) Waiting to run
2025-03-31 01:42:25 -03:00
Fijxu
642b2e8bf0 cookies: replace alternative domains and backend domains by Host header instead 2025-03-31 01:42:25 -03:00
Fijxu
ce97a41301 views/template.ecr: remove trailing | character on backend switcher 2025-03-31 01:42:25 -03:00
Fijxu
b29f5b39de add note to backend 2025-03-31 00:04:52 -03:00