Commit Graph

2945 Commits

Author SHA1 Message Date
Samantaz Fox
e62d4db752
API: Return actual stream height, width and fps (#4586)
At the moment Invidious will return hardcoded data for the 'size',
'qualityLabel' and 'fps' fields for streams, when such hardcoded data is
available, otherwise it just omits those fields from the response (e.g. with
the AV1 formats). Those issues are especially noticable when Invidious claims
that 50fps streams have 60fps and when it claims that the dimensions for a
vertical video are landscape. The DASH manifests that Invidious generates
already use the correct information.

This pull request corrects that issue by returning the information that
YouTube provides instead of hardcoded values and also fixes the long
standing bug of Invidious claiming that audio streams have 30 fps.

Here are two test cases:
50/25/13fps: https://youtu.be/GbXYZwUigCM (/api/v1/videos/GbXYZwUigCM)
vertical video: https://youtu.be/hxQwWEOOyU8 (/api/v1/videos/hxQwWEOOyU8)

Originally these problems were going to be solved by the complete refactor
of stream handling in 3620, but as that pull request got closed by the stale
bot over a month ago and has such a massive scope that it would require a
massive amount of work to complete it, I decided to open this pull request
that takes a less radical approach of just fixing bugs instead of a full
on refactoring.

FreeTube generates it's own DASH manifests instead of using Invidious' one,
so that it can support multiple audio tracks and HDR. Unfortunately due to
the missing and inaccurate information in the API responses, FreeTube has
to request the DASH manifest from Invidious to extract the height, width and
fps. With this pull request FreeTube could rely just on the API response,
saving that extra request to the Invidious instance. It would also make it
possible for FreeTube to use the vp9 streams with Invidious, which would
reduce the load on the video proxies.

Closes issue 4131
2024-07-21 17:23:50 +02:00
Samantaz Fox
8b1da2001e
Preferences: Fix handling of modified source code URL(#4437)
Before this PR, setting the modified code repo URL through the preferences
page in Invidious was broken:

* the HTML input tag for this field had invalid type "input"
  (though browser falls back on text input)

* the URL was used to set the "checked" property and not as a plain value,
  which makes no sense for a text-based input (and resulted in a blank field)

* when the submitted field is empty, the retrieved value was an empty 'String'
  instead of 'nil', causing the "modified source code URL" to be an empty
  'href' link which just pointed to the current page

No associated open issue
2024-07-21 17:23:48 +02:00
Samantaz Fox
5a12005b48
API: Fix URL for vtt subtitles (#4221)
For 'fmt=vtt' to work, the 'fmt' parameter needs to be replaced
in the original caption api URL.

No associated open issue
2024-07-21 17:23:44 +02:00
Samantaz Fox
bad92093bf
Channels: Add sort options to streams (#4224) 2024-07-10 22:28:22 +02:00
Samantaz Fox
436a61e3bb
API: Fix error code for disabled popular endpoint (#4296)
When visiting /api/v1/popular and popular endpoint is disabled
Before:

500 {"error":"Closed stream"}

After

403 {"error":"Administrator has disabled this endpoint."}
2024-07-10 22:25:31 +02:00
Samantaz Fox
5e0f55333a
Allow embedding videos in local HTML files (#4450)
The current Content Security Policy does not allow to embed videos
inside local HTML files which are viewed in the browser via the file
protocol. This commit adds the file protocol to the allowed frame
ancestors, so that the embedded videos load correctly in local HTML
files.

This behaviour is consistent which how the official YouTube website
allows to embed videos from itself.

Closes issue 4448
2024-07-10 22:24:18 +02:00
Samantaz Fox
99c7e9e800
YtAPI: Remove API keys like official clients (#4655)
This PR removes API keys from innertube requests, as the official clients
did it too.
2024-07-10 22:19:51 +02:00
Samantaz Fox
e9bab06e90
HTML: Use full URL in the og:image property (#4675)
Some opengraph implementations don't support a URL without the domain
therefore failing to fetch the video thumbnail and channel image.
This pull request basically fixes that.
2024-07-10 22:17:45 +02:00
syeopite
f466116cd7
Extract label for transcript in YouTube response 2024-06-13 09:07:20 -07:00
syeopite
5b519123a7
Raise error when transcript does not exist 2024-06-11 18:46:34 -07:00
syeopite
0224162ad2
Rewrite transcript logic to be more generic
The transcript logic in Invidious was written specifically
as a workaround for captions, and not transcripts as a feature.

This commit genericises the logic a bit as so it can be used for
implementing transcripts within Invidious' API and UI as well.

The most notable change is the added parsing of section headings
when it was previously skipped over in favor of regular lines.
2024-06-11 18:23:01 -07:00
absidue
3b773c4f77 Fix missing commas 2024-05-14 19:02:41 +02:00
absidue
57e606cb43 Add back missing resolution field 2024-05-14 19:02:41 +02:00
absidue
f57aac5815 Fix the missing p in the quality labels.
Co-authored-by: Samantaz Fox <coding@samantaz.fr>
2024-05-14 19:02:41 +02:00
absidue
71a821a7e6 Return actual height, width and fps for streams in /api/v1/videos 2024-05-14 19:02:32 +02:00
Fijxu
9d66676f2d
Use full URL in the og:image property. 2024-05-01 22:21:18 -04:00
Samantaz Fox
470245de54
YtAPI: Remove API keys like official clients 2024-04-27 20:48:42 +02:00
Samantaz Fox
0ab6d9e748
Videos: Use android test suite client (#4650)
"Temporary" fix, until a better and more permanent solution is found.

Closes issue 4584
2024-04-26 23:54:24 +02:00
Samantaz Fox
6f889dc695
Trending: Un-nest category if this is the only one (#4600)
Trending music was returning less than 24 videos which was getting
filtered out. Since multiple categories only appears on the default
trending page, we don't need to do that filtering for Music, Gaming or movies.

Closes issue 4596
2024-04-26 23:52:44 +02:00
Samantaz Fox
8eaaeb1c74
API: Add bitrate to formatStreams too (#4590)
Before this PR, the bitrate was only returned for the 'adaptiveFormats'.
They are now also returned the 'formatStreams'.

No linked issue
2024-04-26 23:49:44 +02:00
Samantaz Fox
7c1d2714e0
Comments: Add support for new format (#4576)
The new comment format is similar to the description's commandRuns.

This should fix the issues with most comments but there are still
some more changes that would need to be made like adding support for
formatting (bold, italic, underline) and channel emojis.

Fixes issue 4566
2024-04-26 23:48:15 +02:00
Samantaz Fox
c94c6f4b83
Remove legacy proxy code (#4570)
Also fixes the build on nightly as the offending code was removed.

Related to
https://github.com/iv-org/invidious/pull/4270#issuecomment-1858876952
2024-04-26 23:44:47 +02:00
Samantaz Fox
f1fd197cbc
API: convey info "is post live" from Youtube response (#4569)
Returns the 'isPostLiveDvr' field in the videos API when the video
is a post-live DVR (= ended livestream that hasn't been reprocessed
into VOD yet).

Example taken 10 minutes after that livestream ended:
/api/v1/videos/euqnWk-uP6M

{
  ...
  "isPostLiveDvr": true,
  ...
}

Partially fixes 4421
2024-04-26 23:44:30 +02:00
Samantaz Fox
bd549f21e9
API: Add 'authorVerified' field on recommended videos (#4562)
Closes 3323
2024-04-26 23:36:08 +02:00
Samantaz Fox
48ad864572
Videos: Add support for new likes format (#4462)
YouTube added a new format for like data in December 2023.
This PR adds support for parsing saod new format.

Related: LuanRT/YouTube.js issue 557

Closes 4419
2024-04-26 23:30:30 +02:00
Samantaz Fox
bcb679e653
Proxy: Handle non-200 HTTP codes on DASH manifests (#4429)
Before this PR, Invidious assumed that fetching the DASH manifest from
YouTube will always be successful and didn't check the status code.

That meant that if YouTube gave a rate-limiting page, invidious would
return an HTTP 200 response with the 'application/dash+xml' Content-Type
header and the YouTube ratelimiting page as the body.

No associated issue
2024-04-26 23:25:54 +02:00
Samantaz Fox
b163afecb7
API: Parse channel's tags (#4294)
Example from an auto generated channel (Minecraft - Topic):
/api/v1/channels/UCQvWX73GQygcwXOTSf_VDVg

{
  ...
  "tags":[
    "Video game","Indie game","Xbox One","New Nintendo 3DS",
    "PS3","Nintendo Switch","Wii U","Fire OS",
    "Mac operating systems","Apple TV","Xbox 360",
    "PlayStation Vita","PS4","Windows","Linux","Nintendo 3DS",
    "iOS","Windows Phone","iPadOS","Java","Android","tvOS",
    "ChromeOS"
  ]
  ...
}

Example from another channel (Mr Beast):
/api/v1/channels/UCX6OQ3DkcsbYNE6H8uQQuVA

{
  ...
  "tags":["mrbeast6000","beast","mrbeast","Mr.Beast","mr"]
  ...
}

No associated issue
2024-04-26 23:20:30 +02:00
Samantaz Fox
33f316c864
Videos: Remove AndroidScreenEmbed client 2024-04-26 23:15:34 +02:00
Samantaz Fox
be291e8f0f
Videos: Copy captions over between responses 2024-04-26 22:33:08 +02:00
Samantaz Fox
d49c762609
YtAPI: Add more client infos for Android test suite 2024-04-26 22:26:45 +02:00
Samantaz Fox
7f3ddad12e
Videos: Use android test suite client 2024-04-26 22:03:59 +02:00
ChunkyProgrammer
24de19d06f only ignore smaller trending categories on default trending tab 2024-04-23 23:51:22 -04:00
absidue
f313162fa1 Add bitrate to formatStreams in /api/v1/videos/{id} response 2024-04-21 12:53:31 +02:00
ChunkyProgrammer
2b6e71b553 Simplify cvm assignment logic + improve formatting
Co-Authored-By: Samantaz Fox <coding@samantaz.fr>
2024-04-20 10:25:51 -04:00
ChunkyProgrammer
d1eae10147 make authorVerified a bool value 2024-04-16 18:21:45 -04:00
ChunkyProgrammer
fbf07e18aa Parse links in the comments
Co-Authored-By: Samantaz Fox <coding@samantaz.fr>
2024-04-11 08:58:33 -04:00
ChunkyProgrammer
de2287963f fix loading replies to comments, remove unneeded code
Co-Authored-By: Samantaz Fox <coding@samantaz.fr>
2024-04-10 18:32:20 -04:00
ChunkyProgrammer
039212ed91 escape html, add todo comment 2024-04-10 18:21:53 -04:00
ChunkyProgrammer
a9f55aa310 fix lint, improve performance 2024-04-10 18:21:53 -04:00
ChunkyProgrammer
c27bb90e4d Add support for new comment format 2024-04-10 18:21:53 -04:00
syeopite
990931ff67
Remove legacy proxy code 2024-04-07 11:08:12 -07:00
ChunkyProgrammer
bfd9c9876e Parse if video is post live dvr and include it in API 2024-04-07 10:26:33 -04:00
ChunkyProgrammer
2a029b4d8c Add field for authorVerified for recommended videos when using the API 2024-04-04 20:20:27 -04:00
Brahim Hadriche
a9e8aabe1f Merge commit '08390acd0c17875fddb84cabba54197a5b5740e4' into fix/popular-disabled-error 2024-04-01 10:03:37 -04:00
Brahim Hadriche
b0c6bdf44c use 403 code 2024-04-01 10:03:29 -04:00
Brahim Hadriche
c5eb10b21f Revert "Fix error code for disabled popular endpoint"
This reverts commit 1363fb8094.
2024-04-01 10:02:49 -04:00
Brahim Hadriche
1a2d408d38 Update shorts params 2024-03-31 11:37:13 -04:00
src-tinkerer
72fe8af850
Merge branch 'master' into stream-sort 2024-03-26 12:19:45 +00:00
ChunkyProgrammer
0aaa3e6a08 API: Parse channel's tags 2024-03-11 13:31:14 -04:00
nooptek
499aed37dd Fix handling of modified source code URL setting 2024-03-10 17:51:29 +01:00