summaryrefslogtreecommitdiffstats
path: root/src (follow)
AgeCommit message (Collapse)Author
2025-05-17Add Javascript licence information automatically (#5297)syeopite
2025-05-17Add missing javascript licenses (#5292)syeopite
2025-05-17fix: safely access "label" key (#5282)syeopite
2025-05-17fix: pass user to query.process if present (#5277)syeopite
2025-05-17fix: do not strip '+' character from referer (#5276)syeopite
2025-05-17fix: set CSP header after setting preferences of registered users (#5275)syeopite
2025-05-17fix(typo): 'Salect' -> 'Select' (#5242)syeopite
2025-05-17Handle parse errors gracefully on timeline items (#5196)syeopite
2025-05-17require base_job before the other jobs (#5194)syeopite
2025-05-17Update Kemal to 1.6.0 and remove Kilt (#5120)syeopite
2025-05-10Revert "Update src/invidious/routes/before_all.cr"Fijxu
This reverts commit aab6ff4bb6e4d3174ab812e5a2cdeec841d2358e.
2025-05-10Update src/invidious/routes/before_all.crFijxu
Co-authored-by: syeopite <70992037+syeopite@users.noreply.github.com>
2025-05-10Add Javascript licence information automaticallysyeopite
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-10update commentFijxu
2025-05-10fix: set CSP header after setting preferences of registered usersFijxu
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-09Add missing javascript licensesFijxu
2025-05-09fix: safely access "label" keyFijxu
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-08fix: fallback first with TVHTML then MWEBÉmilien (perso)
fixes #5273
2025-05-08fix: pass user to `query.process` if present.Fijxu
Fixes https://github.com/iv-org/invidious/issues/5097
2025-05-08fix: do not strip '+' character from refererFijxu
Fix that a user of my instance (https://inv.nadeko.net) sent me by email.
2025-05-03Fix proxying live DASH streams (#4589)absidue
2025-05-03feat: route to invidious companion on downloads (#5224)Alex Maras
2025-05-02fix: fallback other yt clients no url found for adaptive formats (#5262)Émilien (perso)
2025-04-17fix(typo): 'Salect' -> 'Select'Fijxu
2025-04-05Fix issues raised by code reviewsyeopite
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-04chore: set dash by default (#5216)Émilien (perso)
2025-03-26chore: enforce 16 characters for invidious_companion_key (#5220)Émilien (perso)
2025-03-19Support ProblematicTimelineItem in trending feedsyeopite
2025-03-19Use ProblematicTimelineItem as needed in playlistssyeopite
2025-03-19Make "show technical details" btn translatablesyeopite
2025-03-19Fix formattingsyeopite
2025-03-19Improve JSON repr of ProblematicTimelineItemsyeopite
2025-03-19Improve design of placeholder itemsyeopite
Also makes it show the error backtrace
2025-03-19Handle parse errors gracefully on timeline itemssyeopite
Prior to this commit, if even a single item fails to parse Invidious will throw out an error. This means that even if everything else on a page can be parsed and rendered without issues, the single problematic item will cause the entire page to be unusable. This commit gracefully handles parse errors by catching and then replacing the problematic item with a new "timeline error" object that represents the parse error. This will allow the rest of the page to be rendered and an error card that will replace the location of the problematic item.
2025-03-13Add invidious companion support (#4985)Émilien (perso)
* add support for invidious companion * redirect latest_version and dash manifest to invidious companion * fix Shadowing outer local variable `response` * fixing condition for Content-Security-Policy * throw error if inv_sig_helper and invidious_companion used same time * Use sample instead of Random.rand Co-authored-by: syeopite <70992037+syeopite@users.noreply.github.com> * Remove debug puts functions Co-authored-by: syeopite <70992037+syeopite@users.noreply.github.com> * modify the description for config.example.yaml about invidious companion * move config checks for invidious companion * separate invidious_companion logic + better config.yaml config * fixing "end" misplacement * fix linting + use .empty? * crystal handle decompression already by itself * fix download function when invidious companion used * fix linting * invidious companion always used so always add CSP and redirect latest_version * apply all the suggestions + rework invidious_companion parameter * format watch.cr * fix ameba Redundant use of `Object#to_s` in interpolation * add ability for invidious companion to check request from invidious * Better document private_url and public_url * Better doc for invidious_companion_key * !empty? to present? * skip proxy for invidious companion * fixing format * missing , * add companion pooling http * fix: don't use http proxy when sending requests to companion * fix: logic where we want to have the invidious logic if companion is not used * chore: remove baseurl usage from invidious companion * chore: change from inv-sig-helper to companion for required playback * fix: use puts + add warning for inv-sig-helper deprecated --------- Co-authored-by: syeopite <70992037+syeopite@users.noreply.github.com>
2025-03-12Warn when `po_token`, `visitor_data` and/or `inv-sig-helper` is not ↵syeopite
configured (#5202) * Warn when required configs for playback is missing * Add link to documentation in warnings * Direct users to /installation instead
2025-02-28require base_job before the other jobsFijxu
The crystal compiler seems to evaluate `require` in an alphabetical way, so if anyone in the future, wants to add another job and that job is above `base_job.cr` in alphabetical order, the compiler is going to fail with `Error: undefined constant: Invidious::Jobs::BaseJob`. This doesn't fix anything, but it will prevent a future headache.
2025-02-26Fix lint and formattingsyeopite
2025-02-26Fix HLS being used for non-livestream videos (#5189)syeopite
Invidious does not currently support non-livestream hls playback Originally, the HLS manifest check was essentially a boolean: if the HLS manifest field was present, it was assumed to be a livestream. Some videos include the HLS Manifest but aren't livestreams. In the case where they are livestreams, the video contains a videoType field with the value "Livestream". In the case that they're normal videos, the videoType is "Video". This is exposed via the `video.live_now` property. This commit just checks that `video.live_now` is true before treating it as a livestream
2025-02-26Images: fix typo in thumbnail logicsyeopite
2025-02-26Channels: Support YouTube's change to from /community to /posts (#5183)syeopite
2025-02-26Videos: Fix empty response when rv published field is nonexistent (#5162)syeopite
Fixes #5161 by checking recommended videos published field for presence before attempting to parse it in api
2025-02-26Channels: Add Courses to channel page and channel API (#5158)syeopite
Closes #5144
2025-02-26Pick a different instance upon redirect (#5154)syeopite
The automatic instance redirection has the potential to pick the same instance the user is currently on. This is especially prevalent when the instance list is limited in number like how it is today. This PR checks the domain of the instance and ensures that it is not the same as the current instane before redirecting the user to it. Otherwise, it just sends the user to rediret.invidious.io
2025-02-26Add the ability to listen on UNIX sockets (#5112)syeopite
2025-02-26i18n: Enable Tamilsyeopite
2025-02-26Add API endpoint for fetching transcripts from YouTube (#4788)syeopite
2025-02-26User: Batch notifications togethersyeopite
2025-02-26RSS: Channel + Playlist improvements (#4298)syeopite
2025-02-26Frontend: Add a first page and previous page buttons for channel navigation ↵syeopite
(#4123)