Commit graph

1054 commits

Author SHA1 Message Date
Samantaz Fox
ad4a06fca5
Move user captcha code to its own module 2022-02-07 17:15:22 +01:00
Samantaz Fox
c04f45d5e3
Move user struct to own file, under Invidious namespace 2022-02-07 17:15:22 +01:00
Samantaz Fox
fb36155022
Move user routes definitions to a macro in routing.cr 2022-02-07 17:15:21 +01:00
Samantaz Fox
7ace3fc989
Move remaining user-related routes out of main file 2022-02-07 17:15:21 +01:00
Samantaz Fox
4e44a91d08
Add support for clips 2022-02-02 00:41:02 +01:00
Samantaz Fox
d546f1870e
Merge pull request #2845 from SamantazFox/more-db-improvements
More db improvements
2022-01-30 23:34:48 +01:00
Samantaz Fox
eba311baa9
Merge pull request #2397 from syeopite/dep-manager-for-videojs-stuff
Add dependency manager script for videojs stuff
2022-01-28 15:30:13 +01:00
matthewmcgarvey
8ef1e81294 Make certain routes ignored if api only 2022-01-25 19:10:18 -06:00
matthewmcgarvey
d755d05f88 Move more routes to new pattern 2022-01-25 19:10:18 -06:00
Samantaz Fox
c78f84d5c6
DB: Move integrity check to the base.cr file 2022-01-25 23:53:00 +01:00
Samantaz Fox
a6c9b263da
DB: don't pass PG_DB to check_table/check_enum 2022-01-25 23:53:00 +01:00
Samantaz Fox
eff8b23f57
Improve youtube import type detection
Code courtesy of bbielsa:
https://gist.github.com/bbielsa/7d131aa2188945f591a8379ec0defc9b
2022-01-12 18:13:15 +01:00
bbielsa
8d47ec714e
Add text/xml as a possible mime type for xml file uploads 2022-01-08 18:07:07 +01:00
bbielsa
9607fe03af
Detect the type of subscription import format based on the content type of the file uploaded 2022-01-08 18:07:06 +01:00
bbielsa
43ff3be751
Test if body content is likely JSON, if so parse the json format of subscriptions export. If the content is anything else, assume it is CSV and parse 2022-01-08 18:07:06 +01:00
Samantaz Fox
d74873fed1
Clean useless database arguments (4/5) 2022-01-04 17:15:43 +01:00
Samantaz Fox
40ed4a0506
Clean useless database arguments (3/5) 2022-01-04 17:15:43 +01:00
Samantaz Fox
c25d664edc
Clean useless database arguments (2/5) 2022-01-04 17:15:43 +01:00
Samantaz Fox
9bad7e2940
Clean useless database arguments (1/5) 2022-01-04 17:15:43 +01:00
Samantaz Fox
6704ce3214
Move DB utility functions to the proper module 2022-01-04 17:15:43 +01:00
Samantaz Fox
85cf27119c
Move DB queries related to playlists in a separate module (3/3) 2022-01-04 17:15:43 +01:00
Samantaz Fox
7691f53520
Move DB queries related to 'users' in a separate module (2/2) 2022-01-04 17:15:43 +01:00
Samantaz Fox
094f835642
Move DB queries related to 'users' in a separate module (1/2) 2022-01-04 17:13:52 +01:00
Samantaz Fox
92eea3b18b
Move DB queries related to session tokens in a separate module 2022-01-04 17:13:52 +01:00
Samantaz Fox
c021b93b5c
Move DB queries related to channels in a separate module 2022-01-04 17:13:52 +01:00
Samantaz Fox
46d08237c6
Move DB queries related to playlists in a separate module (2/3) 2022-01-04 17:13:52 +01:00
Samantaz Fox
3deafe9f8d
Move DB queries related to playlists in a separate module (1/3) 2022-01-04 17:13:51 +01:00
Samantaz Fox
998edba6f0
Move DB queries related to 'videos' in a separate module 2022-01-04 17:13:51 +01:00
Samantaz Fox
139786b9ef
i18n: pass only the ISO code string to 'translate()'
Don't use the whole Hash everywhere.
Also fall back nicely to english string if no translation exists.
2021-11-21 01:50:11 +01:00
syeopite
e91421253e
Fix Style/VerboseBlock issues 2021-10-25 01:12:26 -07:00
syeopite
35d15c7c2b
Fix Style/VariableNames issues 2021-10-25 01:12:26 -07:00
syeopite
20cb751ff6
Fix Lint/UnusedArgument issues 2021-10-25 01:12:26 -07:00
syeopite
c8a985cc77
Merge pull request #2477 from SamantazFox/move-prefs-and-config
Move user preferences and server config
2021-10-18 17:06:07 +00:00
Samantaz Fox
7df2fd0bc8
Add 'require' statement to 'invidious.cr' 2021-10-18 16:12:17 +02:00
syeopite
4246c7a523
Extract image routes 2021-10-11 13:22:11 -07:00
Samantaz Fox
57ed047025
Add mising 'require' statement to 'invidious.cr' 2021-10-11 18:33:36 +02:00
syeopite
b10f37bea9
Use kemal in production mode (#2455) 2021-10-11 14:42:22 +02:00
syeopite
81b12b8001
Add support to make invidious API-only via flag (#2363) 2021-10-02 20:04:02 +00:00
syeopite
b20f72b963
Use default timeout (5 seconds) for YT pool (#2430) 2021-09-26 23:03:45 +02:00
syeopite
87f46a7532
Unregister captcha job (#2390) 2021-09-19 10:30:19 +00:00
syeopite
4a0359c04e
Pass success msg from dep script during compile-time 2021-09-18 14:48:57 -07:00
syeopite
06a1d2ac41
Rename fetch_videojs* to fetch_player* 2021-09-18 13:30:16 -07:00
syeopite
a539de4f97
Bump dependencies (#2378)
* Upgrade to Kemal v1.1.0

* Bump postgres driver
2021-09-10 07:42:15 +00:00
syeopite
4fcd0964cd
Extract API routes (#2271)
* Extract API routes from invidious.cr
* Remove deprecated APIs
  - insights
  - top feed
2021-08-30 18:27:47 +02:00
syeopite
5005212bec
Extract feed routes (#2269)
* Extract feed routes from invidious.cr
* Removes the deprecated route for /feed/top
* Deprecate /view_all_playlist & use /feed/playlists
* Move feed views into their own directory

* Add haltf method to halt current route context
* Change status_code + return blocks to use haltf

* Set appropriate response headers for RSS routes
2021-08-30 16:58:24 +02:00
Émilien Devos
a279d6f433
Fix livestream parsing URLs (#2356) 2021-08-26 21:02:26 +00:00
syeopite
fceb8093f1
Use athena-negotiation to detect language through Accept-Language header (#2324)
Detect language through Accept-Language header
2021-08-24 19:59:27 +00:00
syeopite
39b34eece8
Extract API routes from invidious.cr (3/3)
- Auth (excluding notifications*) APIs
- Mixes

*Notifications currently require the "connection_channel" channel
for talking with the notifications job. Unfortunately, we cannot
access that within the route modules yet.
2021-08-14 00:18:25 -07:00
syeopite
6aa65593ef
Extract API routes from invidious.cr (2/?)
- Video playback endpoints
- Search feed api
- Video info api
2021-08-14 00:18:24 -07:00
syeopite
cbf3d75087
Extract API routes from invidious.cr (1/?) 2021-08-14 00:18:24 -07:00
syeopite
0b0036813f
Remove deprecated APIs
- insights
- top feed
2021-08-14 00:18:03 -07:00
Émilien Devos
12b46bbd41
switch to innertube API for about channels (#2255) 2021-08-12 16:00:26 -07:00
Émilien Devos
88c5e3b6fa
Use the new youtube api for comments (#2217)
* use the new youtube api for comments
* remove PG_DB & action parameter + allow force region
* support new comments data with onResponseReceivedEndpoints
2021-08-12 19:14:30 +02:00
syeopite
1321c90920
Extract channel routes (#2227)
* Extract primary channel routes from invidious.cr

Also removes timedtext_video stub since all it does is redirect to the
homepage. However, Invidious's 404 handler already does this.

--
As the template for the channel about page doesn't exist yet, the
behavior for the /channel/:ucid/about endpoint has been changed to be
the same as what's currently present on Invidious

(cherry picked from commit 8fad19d805)

* Manually extract brand_redirect from 1b569bbc99

This commit manually extracts the brand_redirect function from the
commit mentioned.

However, the redirect to the  `.../about` endpoint is removed due to the
fact that it doesn't exist yet.

This commit is also mainly just a bridge for the next few cherry picks from
\#2215

* Update brand_redirect to use youtubei resolve_url

(cherry picked from commit 53335fe7cf)

* Add additional channel endpoints to brand_redirect

(cherry picked from commit 8fc6f3add6)

* Add separate handler for /profile endpoint

* Add /channel/:ucid/home route

* Document all channel brand_urls
2021-08-03 23:46:15 +02:00
syeopite
3e5c353298
Merge pull request #2205 from syeopite/fix-age-restricted-videos
Partial (and temporary) fix for age restricted videos
2021-07-14 10:11:03 -07:00
syeopite
ae61662f61
Debloat channels.cr into multiple files (#2225)
Cherry picked from ui overhaul branch with a few modifications:
  - channel folder is renamed to channels
  - parsing for channel home and featured channels are removed due to
    lack of infrastructure from other commits

(cherry picked from commit 44d18b8e14)
2021-07-14 17:46:12 +02:00
syeopite
54b19a04bb
Fix caption parsing on age restricted videos 2021-06-27 08:35:28 -07:00
Samantaz Fox
5a8825d016
Fix quoting of 'none' in CSP header
The keyword 'none' must be surrounded by single quotes.
Regression introduced by #2168.
2021-06-20 18:43:00 +02:00
syeopite
31fa3dfd59
Add route to redirect to another instance 2021-06-19 04:16:17 -07:00
TheFrenchGhosty
b8f0b4b583
Typo 2021-06-19 09:40:33 +02:00
Samantaz Fox
42d9fd9c88 Rewrite response headers
Fixes #2018 and #2153
2021-06-17 19:53:39 +02:00
syeopite
0a87ba6930
Decode URL encoded preference cookie when parsing 2021-06-08 13:11:04 -07:00
syeopite
065c104f27
Upgrade to crystal 1.0.0 2021-06-08 13:10:58 -07:00
Samantaz Fox
cac5f20a28 Move locales definition to i18n.cr 2021-04-21 16:10:25 +02:00
Andrew Zhao
9a8f1a0b0a add option to disable quic 2021-04-14 12:03:31 -04:00
syeopite
877bb5c821
Add aliases for watch route 2021-04-06 20:36:23 -07:00
Svallinn
cbdba66ef3
Use the youtubei API over the legacy one 2021-03-24 05:33:45 +00:00
Andrew Zhao
89fd35e02d fix comment replies 2021-03-20 00:43:12 -04:00
Svallinn
fa050fb8a8
Fix: functional hl / dark_mode / thin_mode params 2021-03-17 19:09:37 +00:00
TheFrenchGhosty
3cc9114f81
Merge pull request #1829 from SimonPhoenix96/xml-json-yt-sub-import
integrate legacy yt xml subscription import with new json sub import
2021-03-05 01:01:32 +01:00
Perflyst
fc8c555519
Merge pull request #1729 from Rjevski/12factor-database-url-restored
Support "Database URL" in addition to existing DB-related parameters
2021-03-02 18:41:10 +01:00
simonphoenix96
84487b2e52 format invidious.cr using crystal cli 2021-02-27 21:59:09 +01:00
Simon Phoenix
9689376de6
fixed line indent typo 2021-02-27 19:12:01 +01:00
simonphoenix96
a2f79a163f integrate legacy yt xml subscription import with new json sub import 2021-02-27 18:58:55 +01:00
Andrew Zhao
2600695927 fix search
Put search page in the super secret proto field
2021-02-25 22:19:22 -05:00
TheFrenchGhosty
c451aab150
Enable the Hebrew translation since it's now translated at more than 80% 2021-02-14 19:37:46 +00:00
TheFrenchGhosty
48bff9a5d2
Enable the Indonesian translation since it's now translated at more than 80% 2021-02-14 19:35:05 +00:00
saltycrys
5f03a583d1 Update code for Crystal 0.36.0
Rename `HTTPClient@socket` to `HTTPClient@io`, see
https://github.com/crystal-lang/crystal/pull/9543.

Rename `URI#full_path` to `URI#request_target`, see
https://github.com/crystal-lang/crystal/pull/10099.
2021-02-02 20:01:02 +01:00
saltycrys
991a04dc2a Adjust routes
Simple routes have been moved into a single `Misc` file.

Embed routes have been moved into a single `Embed` file.

The preferences route has been renamed to be more consistent with other parts
of the codebase.
2021-02-02 06:18:16 +01:00
Perflyst
82da5cfd01
Merge pull request #1712 from tenpura-shrimp/bumpvideojs
Bump videojs and fix webworker
2021-01-31 12:18:40 +01:00
Andre Borie
79e99908de Allow providing 12-Factor-style Database URL in config 2021-01-30 19:33:58 +00:00
TheFrenchGhosty
bd893cb24c Enable the Finish translation since it's now translated at more than 80% 2021-01-30 16:42:30 +01:00
saltycrys
c9a316ad35
Merge pull request #1702 from saltycrys/config
Config improvements
2021-01-30 14:46:10 +01:00
Andrew Zhao
4a0b10984a Bump videojs and fix webworker 2021-01-29 19:08:28 -05:00
saltycrys
70e14f92a4 Only start refresh jobs when necessary
If `channel_threads` or `feed_threads` is set to zero the corresponding job is
now not started.
2021-01-23 19:45:42 +01:00
saltycrys
b45f371911 Make config a constant
Instead of passing around `config` there is now the global `CONFIG`.
2021-01-23 19:39:04 +01:00
saltycrys
f1a7ee997b Add config environment variables
The config file can now be specified with `INVIDIOUS_CONFIG_FILE`.
A YAML formatted string can still be passed with `INVIDIOUS_CONFIG`, replacing
the config file.

Additionally all options can now be specified as environment variables.
The syntax for variable names is `INVIDIOUS_` followed by the option name in
upper case. The values are parsed as YAML.

These new env vars only update the provided main configuration, but it is
possible to point the config file at the example config and then use env vars
for all config options:
```
INVIDIOUS_CONFIG_FILE=./config/config.example.yml \
INVIDIOUS_CHANNEL_THREADS=10 \
./invidious
```
2021-01-23 18:58:13 +01:00
TheFrenchGhosty
799f97e847 Make invidious use all the translation files 2021-01-23 18:07:55 +01:00
Andrew Zhao
b7fe1db89a save host when using dash manifest 2021-01-10 18:00:45 -05:00
saltycrys
c81ca187f8 Fix downloads
The `itag` is now converted to a number, matching the `itag` of
`Video.adaptive_fmts` and `Video.fmt_stream`.
2021-01-09 20:40:01 +01:00
saltycrys
b0b8ba7000 Respect use_pubsub_feeds config
Setting `use_pubsub_feeds: false` now properly disables it.
2021-01-07 20:52:32 +01:00
saltycrys
6365ee7487 Make logger a constant
Instead of passing around `logger` there is now the global `LOGGER`.
2021-01-05 20:43:19 +01:00
saltycrys
7a8620a570 Add CLI arguments to config file
The log level can now be set with `log_level` (accepts ints and strings).
The log file can now be set with `output` (also accepts `STDOUT`).
2021-01-05 20:35:59 +01:00
Perflyst
2c24bf3222
Merge pull request #1389 from vhuynh3000/decrypt_on_demand
add config to decrypt on demand instead of polling
2021-01-05 19:32:22 +01:00
saltycrys
36e9fb9d68 Fix watch_videos endpoint
Playlists created by `watch_videos` do not have an author which caused a crash
previously.
2021-01-04 05:35:59 +01:00
vhuynh3000
3a2bd4e928 add config to decrypt on demand instead of polling 2021-01-03 20:50:52 +01:00
Perflyst
c89632d2a8
Merge pull request #1608 from saltycrys/add-subscription-traces
Add Subscription Traces
2020-12-31 11:30:04 +01:00
TheFrenchGhosty
82c8f3b556
Merge pull request #1600 from jksladjflkjsadflkjsadf/closeclients
Close http clients after use
2020-12-30 01:14:31 +00:00
Perflyst
b19524d56a
Merge pull request #1609 from saltycrys/add-popular-enabled-option
Add `popular-enabled` option
2020-12-28 11:30:55 +01:00
Andrew Zhao
e0d25ff887 Close http clients after using
The crystal http client maintains a keepalive connection to the other
server which stays alive for some time. This should be closed if the
client instance is not used again to avoid hogging resources
2020-12-27 19:40:58 -05:00