3361 Commits

Author SHA1 Message Date
Sijawusz Pur Rahnama
ca41bbd21b Fix Style/ParenthesesAroundCondition type of Ameba issues 2026-01-11 23:45:04 +01:00
Sijawusz Pur Rahnama
818d4266a7 Fix Naming/AccessorMethodName type of Ameba issues 2026-01-11 23:45:04 +01:00
Sijawusz Pur Rahnama
dc7891cddb Fix Style/RedundantNext type of Ameba issues 2026-01-11 23:45:04 +01:00
Sijawusz Pur Rahnama
9aec157453 Fix Style/RedundantReturn type of Ameba issues 2026-01-11 23:45:04 +01:00
Sijawusz Pur Rahnama
9f96682783 Fix Style/RedundantBegin type of Ameba issues 2026-01-11 23:17:05 +01:00
Sijawusz Pur Rahnama
5f1c9849bf Use inline disable pragma 2026-01-11 23:14:50 +01:00
Sijawusz Pur Rahnama
7d90748e78 Use common heredoc markers 2026-01-11 23:13:19 +01:00
Sijawusz Pur Rahnama
b0049e1680 Remove redundant assignment 2026-01-11 23:04:53 +01:00
Sijawusz Pur Rahnama
6b2afb23db Fix Style/MultilineStringLiteral type of Ameba issues 2026-01-11 23:00:31 +01:00
Sijawusz Pur Rahnama
ee85274b8d Fix Lint/RequireParentheses type of Ameba issues 2026-01-11 22:58:37 +01:00
Sijawusz Pur Rahnama
31d218c03e Fix Style/MultilineCurlyBlock type of Ameba issues 2026-01-11 22:56:50 +01:00
Sijawusz Pur Rahnama
a6ade56756 Fix Lint/ElseNil type of Ameba issues 2026-01-11 22:56:50 +01:00
Sijawusz Pur Rahnama
2112ee674e Fix Style/HeredocIndent type of Ameba issues 2026-01-11 22:56:50 +01:00
Sijawusz Pur Rahnama
e5a1131665 Fix Performance/ChainedCallWithNoBang type of Ameba issues 2026-01-11 22:56:50 +01:00
Sijawusz Pur Rahnama
b5b187ad88 Fix Style/PercentLiteralDelimiters type of Ameba issues 2026-01-11 22:56:50 +01:00
Sijawusz Pur Rahnama
dd185c9379 Fix Layout/TrailingBlankLines type of Ameba issues 2026-01-11 22:56:50 +01:00
Sijawusz Pur Rahnama
456b50a5e2 Fix Layout/TrailingWhitespace type of Ameba issues 2026-01-11 22:56:50 +01:00
Sijawusz Pur Rahnama
3a68d5aeb2 Fix Style/RedundantNilInControlExpression type of Ameba issues 2026-01-11 22:56:50 +01:00
Sijawusz Pur Rahnama
d371829477 Fix Style/RedundantSelf type of Ameba issues 2026-01-11 22:56:50 +01:00
Sijawusz Pur Rahnama
db8e73760d Fix Style/VerboseNilType type of Ameba issues 2026-01-11 22:56:50 +01:00
Sijawusz Pur Rahnama
3d6f266827 Fix Lint/WhitespaceAroundMacroExpression type of Ameba issues 2026-01-11 22:32:28 +01:00
Fijxu
5f84a5b353
Generate companion check id one time and add missing companion check id on captions (#5575)
* Only generate companion check id one time

* Add missing check id for companion captions
2025-12-22 17:14:59 +01:00
Fijxu
f7a31aa3de
fix lint 2025-12-21 00:50:37 -03:00
Jeroen Boersma
dbbaf51f1f
Allow downloading via companion (#5561)
* Allow downloading via companion

* post request where not proxied for the download companion which made
  it impossible to download with the companion enabled

* Re-apply Channel to Channels rename which was pulled in

* Update src/invidious/routes/companion.cr

* doc: better comments for each route

---------

Co-authored-by: Fijxu <fijxu@nadeko.net>
Co-authored-by: Émilien (perso) <4016501+unixfox@users.noreply.github.com>
2025-12-19 15:09:22 +01:00
Fijxu
bf17d53068
Replace deprecated blocking property of Socket (#5538)
* Replace deprecated `blocking` property of `Socket`

This replaces the deprecated argument `blocking` and uses
`Socket.set_blocking(fd, value)` instead.

Fixes a warning in the compiler

https://github.com/crystal-lang/crystal/pull/16033

* Upgrade to upstream

* chore: only Socket.set_blocking for > 1.18

---------

Co-authored-by: Emilien <4016501+unixfox@users.noreply.github.com>
2025-12-19 14:59:42 +01:00
syeopite
1f5685ef92 Reduce indent in StaticAssetsHandler#serve_file 2025-12-19 12:35:00 +01:00
syeopite
21049518d6 Improve cache size check to be more performant
Summing the sizes of each cached file every time is very inefficient.
Instead we can simply store the cache size in an constant and increase
it everytime a file is added into the cache.
2025-12-19 12:35:00 +01:00
syeopite
89a0761a19 Fix Ameba Lint/UselessAssign 2025-12-19 12:35:00 +01:00
syeopite
9e482b4807 Add specs for the new StaticAssetsHandler 2025-12-19 12:35:00 +01:00
syeopite
6fd1cb3585 Compare against 1.17.0-dev until full release 2025-12-19 12:35:00 +01:00
syeopite
ddfbed68f7 Simplify StaticAssetsHandler implementation
Overriding `#call` or patching out `serve_file_compressed` provides
only minimal benefits over the ease of maintenance granted by only
overriding what we need to for the caching behavior.
2025-12-19 12:35:00 +01:00
syeopite
d2be57a454 Replace Kemal::StaticFileHandler on Crystal < 1.17.0
Kemal's subclass of the stdlib `HTTP::StaticFileHandler` is not as
maintained as its parent, and so misses out on many enhancements and bug
fixes from upstream, which unfortunately also includes the patches for
security vulnerabilities...

Though this isn't necessarily Kemal's fault since the bulk of the stdlib
handler's logic was done in a single big method, making any changes hard
to maintain. This was fixed in Crystal 1.17.0 where the handler
was refactored into many private methods, making it easier for an
inheriting type to implement custom behaviors while still leveraging
much of the pre-existing code.

Since we don't actually use any of the Kemal specific features added by
`Kemal::StaticFileHandler`, there really isn't a reason to not just
create a new handler based upon the stdlib implementation instead which
will address the problems mentioned above.

This PR implements a new handler which inherits from the stdlib variant
and overrides the helper methods added in Crystal 1.17.0 to add the
caching behavior with minimal code changes. Since this new handler
depends on the code in Crystal 1.17.0, it will only be applied on
versions greater than or equal to 1.17.0. On older versions we'll
fallback to the current monkey patched `Kemal::StaticFileHandler`
2025-12-19 12:35:00 +01:00
Fijxu
aba31a8e20
Set Kemal max_request_line_size to 16384 for large channel continuation query parameters. (#5566)
* feat: Add configurable max_request_line_size to handle long URLs

This commit adds a new configuration option `max_request_line_size` that allows
users to increase the HTTP request line size limit. This is particularly useful
for handling very long continuation tokens that can cause 414 (URI Too Long) errors.

Changes:
- Add `max_request_line_size` property to Config class
- Configure Kemal server to use the custom limit if specified
- Document the option in config.example.yml with recommendations
- Add examples in docker-compose.yml for both YAML and env var configuration

The default behavior remains unchanged (8KB limit) unless explicitly configured.
This provides a solution for users experiencing 414 errors without affecting
existing installations.

* Hardcode max_request_line_size to 16384

---------

Co-authored-by: Sunghyun Kim <hello@sunghyun.me>
2025-12-15 08:21:55 +01:00
Sebastian Hädrich
994c25de2e
Add link to GitHub release/tag/commit in footer (#4702)
* Add link to GitHub release/tag/commit in footer

* Only show tag if there is one

Co-authored-by: syeopite <70992037+syeopite@users.noreply.github.com>

---------

Co-authored-by: syeopite <70992037+syeopite@users.noreply.github.com>
2025-12-14 19:30:52 -03:00
Fijxu
65463333f3
Display "Erroneous CAPTCHA" for invalid captchas (#5508) 2025-12-11 17:28:20 -03:00
Fijxu
ef2290c1fd
Fix channel name overflow (#5553) 2025-12-06 20:20:42 -03:00
Fijxu
3944d2490c
Fix trending page by leaving livestream and gaming trending pages (#5555)
The livestream trending page is now the default.

Adds `content_container = special_category_container["gridRenderer"]?` in the `CategoryRendererParser`
needed for the gaming trending page. The JSON structure of the gaming
trending page looked like this:

```json
"contents": {
 "twoColumnBrowseResultsRenderer": {
  "tabs": [
   {
    "tabRenderer": {
     "selected": true,
     "content": {
      "sectionListRenderer": {
       "contents": [
        {
         "itemSectionRenderer": {
          "contents": [
           {
            "shelfRenderer": {
             "title": {
              "runs": [
               {
                "text": "Trending videos"
               }
              ]
             },
             "content": {
              "gridRenderer": { // <- This was added to the CategoryRendererParser
               "items": [
                {
                 "gridVideoRenderer": {
                  "videoId": "sTWztaLjD20",
                  // More video data
                  // ...
                 }
                }
               ]
              }
             }
            }
           }
          ]
         }
        }
       ]
      }
     }
    }
   }
  ]
 }
}
```

Thanks to
ae2755bf71/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/kiosk/YoutubeTrendingGamingVideosExtractor.java (L11-L13)
for the `browse_id` and `params` needed for the gaming trending page.
2025-12-06 20:19:38 -03:00
Fijxu
a7935bc378
fix: restore dmca_content functionality (#5228)
* fix: restore dmca_content functionality

This restores (or adds) the functionality of the `dmca_content` config
option that at this date, has been unused and makes no effect.

* only disable download widget for dmca video ids
2025-12-06 17:15:25 -03:00
Fijxu
07f3894a71
Remove signature helper completely from Invidious (#5550)
* Remove signature helper completely from Invidious

The official way to reproduce video with Invidious now is by using
Invidious Companion which uses Youtube.JS with a Javascript Interpreter
that can successfully decrypt youtube video URLs.

Sig helper has not been used for a long time, is beyond broken and no
one has plans to fix it and maintain it.

* Remove DECRYPT_FUNCTION and shrink player function

* remove `sp = cfr[sp]`

* Improve message
2025-12-06 16:50:59 -03:00
Fijxu
46a9c933be
Fix community posts when there is a unavailable video in a post (#5549)
Posts with a video that has been removed returned
`ProblematicTimelineItem` type which was not taken in account for
community posts.

Now community posts with a broken video will not display an embedded
video.
2025-12-04 12:00:58 -03:00
Fijxu
35d1d499bc
chore: Store preferences in a variable when reused and rename prefs to preferences (#5450)
A little code cleanup on places where `preferences` is used more than one time and rename `prefs` to `preferences` to maintain consistency.
2025-12-02 18:20:15 -03:00
shiny-comic
5cfe294063
Fix 0 view count on related videos section (#5446)
* Fix 0 view count on related videos

* Remove view_count variable since it's unused by Innertube

* Remove view_count from specs and API

---------

Co-authored-by: Fijxu <fijxu@nadeko.net>
2025-10-16 21:59:34 -03:00
Fijxu
0c13c4fab1
Prevent timestamp from being set for Livestreams on "Watch on Youtube" links (#5481) 2025-10-16 17:32:01 -03:00
Fijxu
fdf0a25b9e
Add Livestreams to trending page (#5480) 2025-10-16 17:31:48 -03:00
Alex
42d34cd084 Removed specific section from hyperlink in config.cr 2025-09-24 18:54:27 +02:00
Alex
18a8490587 Fixed broken companion hyperlink 2025-09-24 18:54:27 +02:00
Fijxu
f9cf70f9d7
Add default playlist preference (#5449)
* Add default playlist preference

Closes https://github.com/iv-org/invidious/issues/5421

* Add option to set default playlist to none

* Move it to player preferences
2025-09-11 11:05:09 -03:00
Fijxu
ba02a4cdf5
Prevent player microformat from being overwritten by the next microformat (#5453)
* Prevent player microformat from being overwritten by the next microformat

Closes https://github.com/iv-org/invidious/issues/5443

The player microformat is what we need to get the published date,
premiere timestamp, allowed regions and more information of the video.

Youtube introduced a new `microformat.microformatDataRenderer` in the
next endpoint which overwrote the player microformat
`microformat.playerMicroformatRenderer` when merged

* Update src/invidious/videos/parser.cr

Co-authored-by: syeopite <70992037+syeopite@users.noreply.github.com>

---------

Co-authored-by: syeopite <70992037+syeopite@users.noreply.github.com>
2025-09-08 17:16:22 -03:00
Emilien
cf2dfbb75d chore: remove debug 2025-09-08 21:34:47 +02:00
Emilien
21c13bba9d chore: use api captions from companion when available 2025-09-08 21:34:47 +02:00