Commit Graph
44 Commits
Author SHA1 Message Date
saltycrys c5136ca4d6 Download liblsquic.a from iv-org/liblsquic-static-alpine
This only affects Docker installs.
Regular builds still use the binary shipped with `lsquic.cr`.
2021-01-03 19:23:54 +01:00
saltycrys dfd5e30015 Fix Video Mode Button
The query params that get edited for `embed_params` are now deep copied instead
of shallow copied, preventing the originals from being changed.
2020-12-29 01:22:56 +01:00
saltycrys 198dfffaeb Add popular-enabled option
This is similar to the removed `top-enabled` option but for the Popular feed.
The instance needs to be restarted if the feed was enabled.

Editing admin options on the preferences page is also fixed.

The handling of the feed pages now only happens in a single place.

Instead of redirecting:
  - The Top feed now displays a message that it was removed from Invidious.
  - The Popular feed now displays a message that it was disabled if it was.
2020-12-27 06:12:43 +01:00
saltycrys c4ef055248 Add RefreshChannelsJob traces
Traces can be enabled with `-l trace`.

The problem with subscriptions is that sometimes requests to YouTube never
finish. As soon as that happens `channel-threads` times subscriptions stop
being refreshed. This is most likely a problem with the lsquick bindings.
2020-12-27 05:20:33 +01:00
saltycrys 420ceffbb0 Rename threads to fibers
The config and command line options haven't been changed.
2020-12-27 05:14:33 +01:00
saltycrys 75c6844b66 Improve storyboards
Instead of limiting the width of storyboards through CSS it is now done in the
VTT directly.
2020-12-21 17:02:36 +01:00
saltycrys b39f01dcdf Improve logging
Everything that gets logged now has a log level associated with it.

The log level can be set with the new `-l` or `--log-level` arguments.

The defaul log level is `debug` for now. There aren't many things that get
logged but if the logs get spammed in the future it can be set down to `info`.
2020-12-21 16:32:34 +01:00
saltycrys ef96a50cea Remove "Top" feed option from preferences
The Top feed used to be a feed based on YouTube ratings. Once YouTube removed
publicly available ratings the Top feed was removed from Invidious but the
option to display a link to it remained.
2020-12-19 19:30:42 +01:00
saltycrys eed78c960d Improve DASH quality preference
Besides `auto`, `best` and `worst` it is now possible to select a target height.
If the target height is not available the closest lower height is selected.
2020-12-19 18:37:41 +01:00
saltycrys eea7ca9b72 Add DASH quality preference
The options are `auto` (the current and default behavior), `best` and `worst`.

The UI is only updated once playback starts.
2020-12-19 18:37:30 +01:00
saltycrys 13800589a9 Bump dependencies (#1578) 2020-12-14 19:33:31 +01:00
saltycrys fc67dd18d0 Increase color contrast of light theme links 2020-12-14 14:20:31 +01:00
saltycrys b3e9b92344 Fix pure-button hover color on a-tags 2020-12-14 14:15:03 +01:00
saltycrys b566c4ba1a Untrack config.yml (#1557)
* Untrack config.yml

`config/config.yml` has been untracked and moved to `config/config.example.yml`.

The Dockerfile has been updated to copy all `config/config.*` files and to try
to move `config/config.example.yml` to `config/config.yml`. If a user supplied
`config/config.yml` exists it is not overwritten.

* Update Dockerfile to use `shard.lock`

* Fix tests
2020-12-10 08:18:30 +01:00
saltycrys d42539949e Add YT embed link to watch page 2020-12-08 19:10:29 +01:00
saltycrys 680dc1f962 Shuffle URL params
The `list` and `index` params are the most important and come first now.
2020-12-08 02:30:48 +01:00
saltycrys 30c92ce1b7 Add embed link to watch page 2020-12-08 02:28:44 +01:00
saltycrys e55a09241e Fix Invidious playlist continuation
Playing a video in a Invidious playlist now correctly redirects to the next
video. The problem was that the offset was updated in the wrong place.
2020-12-07 22:28:27 +01:00
saltycrys 5f02237119 Remove unused steps from CI
There is no way to cache Crystal unfortunately.
See https://github.com/oprypin/install-crystal/issues/2
2020-12-07 19:18:38 +01:00
saltycrys 4184fb3ae7 Increase YouTube request timeout (#1540)
Increase YouTube request timeout
2020-12-06 12:12:02 +00:00
saltycrys 0cfc3bfb79 Fix comment continuation tests 2020-12-06 04:28:35 +01:00
saltycrys 2de206cb81 Fix comments
The YouTube headers are now always added for requests to YouTube.
Previously they were only added for requests going through QUIC.

The session token is now JSON decoded to unescape escaped Unicode characters.

The comment continuation protobuf has been updated and the request now goes
through the YouTube `pbj` JSON API.
2020-12-06 04:11:41 +01:00
saltycrys adccca366e Fix invidious version for old git versions
The `%cs` format was only added to git in version 2.25 while `%ci` has been
around forever.
2020-12-04 01:58:27 +01:00
saltycrys cc684ff0b1 Fix redirect channels
Redirect channels may use JS to redirect now, instead of only a response header
as it used to be. This fix reads the channel to redirect to from `ytInitialData`.
2020-12-03 21:02:52 +01:00
saltycrys 7823c07f1a Fix extract_polymer_config
The `ytInitialPlayerResponse` regex can now handle `var` and `window`
assignments.

The video streams can now be extracted from `player_response` and
`initial_data`.

This fixes the descriptions on videos and videos themselves. Videos are
technically broken right now, but work becasue of a fallback that goes through
embeds.
2020-12-03 18:10:41 +01:00
saltycrys eb6d3d68a9 Run CI on api-only branch, too 2020-12-03 13:06:27 +01:00
saltycrys 21c1450e4a Run CI only once per change 2020-12-02 05:33:42 +01:00
saltycrys 2b6b0e62f4 Add shard caching to CI 2020-12-02 04:40:13 +01:00
saltycrys 4fb360b19f Track shard.lock 2020-12-02 04:39:55 +01:00
saltycrys 0fa1567793 Display lint fixes on lint error 2020-12-02 01:32:19 +01:00
saltycrys 139017ba7c Switch to GitHub Actions for CI
Travis CI is slow, builds are first queued up forever and then the builds
themselves are slow, too.

GitHub Actions run pretty much immediately and are fast. Also separate jobs run
at the same time unlike on Travis CI.
2020-12-01 21:45:33 +01:00
saltycrys b409cdece5 Improve error message 2
Electric Boogaloo

The long backtrace has been moved into a `<details>` HTML element, as suggested
by @B0pol. To make the error still visible it has been added to the top under
`Title:`. This also encourages informative issue titles.
2020-12-01 13:41:19 +01:00
saltycrys 2478e67d16 Switch to date based versioning scheme
Since no new tags are created for releases the version has been frozen for some
time, with only the commit hash changing.

Versions based on the latest commit date make it much easier to identify them.
2020-12-01 13:29:30 +01:00
saltycrys 92bb477f68 Improve error message
The error message has been reworded and the issue template now includes the
date, route, version and backtrace.
2020-11-30 13:02:35 +01:00
saltycrys 0f08cc5aa9 Remove backtrace on YouTube error
YouTube returning an error is not a bug in Invidious, so it should not print
a backtrace.
2020-11-30 12:57:25 +01:00
saltycrys 3dac33ffba Add backtraces to errors (#1498)
Error handling has been reworked to always go through the new `error_template`,
`error_json` and `error_atom` macros.
They all accept a status code followed by a string message or an exception
object. `error_json` accepts a hash with additional fields as third argument.

If the second argument is an exception a backtrace will be printed, if it is a
string only the string is printed. Since up till now only the exception message
was printed a new `InfoException` class was added for situations where no
backtrace is intended but a string cannot be used.

`error_template` with a string message automatically localizes the message.
Missing error translations have been collected in https://github.com/iv-org/invidious/issues/1497
`error_json` with a string message does not localize the message. This is the
same as previous behavior. If translations are desired for `error_json` they
can be added easily but those error messages have not been collected yet.

Uncaught exceptions previously only printed a generic message ("Looks like
you've found a bug in Invidious. [...]"). They still print that message
but now also include a backtrace.
2020-11-30 10:59:21 +01:00
saltycrys 5f932e9749 Fix CSS specificity issues 2020-11-18 00:10:32 +01:00
saltycrys ff46c18164 Move themes into default.css
Now that themes are controlled with a class instead of setting
media="none" on the stylesheet link and both themes already being
duplicated in default.css for the automatic themeing it makes sense
to have all theme related CSS in the same place.

This commit also fixes the missing dark theme on embeds.
2020-11-17 22:53:45 +01:00
saltycrys de777907f2 Apply dark theme immediately
Themes are now controlled with a class on the body element.

If a preference is set the body element will have either "dark-theme"
or "light-theme" class. If no preference is set or the preference is
empty the class will be "no-theme".

"dark-theme" and "light-theme" are handled by darktheme.css and
lighttheme.css respectively.

"no-theme" is handled by default.css where depending on the value of
"prefers-color-scheme" the styles corresponding to "dark-theme" or
"light-theme" are applied.

Unfortunately this means that both themes are duplicated, once in the
theme .css and once in default.css.
2020-11-16 04:19:41 +01:00
saltycrys 72c4fd868a Fill empty preference values 2020-11-16 01:33:55 +01:00
saltycrys 0530045536 Remove double empty line 2020-11-12 16:53:31 +01:00
saltycrys d3e4739745 Improve storyboard display 2020-11-08 22:23:24 +01:00
saltycrys 3379f3ef61 Update videojs-vtt-thumbnails to latest upstream version
Note that the latest version on NPM is over two years old so this was built from source.
2020-11-08 22:02:25 +01:00
saltycrys 9a8b81fcbe Fix storyboards 2020-10-25 09:35:16 +01:00