Commit Graph

65 Commits

Author SHA1 Message Date
wukko
810e0a865c api/package: replace youtubei.js with a fork, update undici 2025-07-01 16:15:12 +06:00
wukko
164ea8aeb9 api: return covers from soundcloud and youtube
& refactor createProxyTunnels() in stream/manage a little
2025-06-26 17:36:26 +06:00
wukko
7ce9d6882b api/youtube: don't use session if user wants subtitles
cuz they're not currently available anywhere but HLS
2025-06-20 17:27:49 +06:00
wukko
33c801f66b api/youtube: add support for youtubeVideoContainer 2025-06-20 14:35:43 +06:00
wukko
259a0758f1 api: initial subtitles functionality with youtube support
this took way more effort than i expected it to do, mostly because of youtube locking everything down to shit

local processing doesn't function with subtitles yet, wasm needs to be updated
2025-06-18 20:24:13 +06:00
wukko
4b6447cba6 api/youtube: use the original track instead of default
closes #1329

default ≠ original, apparently. not sure why youtube thought it's a good idea to force ai generated dubs as default
2025-06-08 19:30:43 +06:00
jj
6f6f885723 api/youtube: update Session arguments to match new constructor 2025-04-23 14:02:27 +00:00
wukko
cf17f53405 api/youtube: use the iOS client for <=1080p vp9 videos 2025-03-21 21:29:25 +06:00
wukko
24ce19d09f api/youtube: use both ios & web_embedded client depending on request
this ensures better reliability & reduces rate limiting of either clients
2025-03-20 17:57:02 +06:00
wukko
073b169a93 api: remove code & docs related to youtube oauth
it hasn't been functional for a while, unfortunately
2025-03-19 20:43:31 +06:00
wukko
d1b5983e49 api/youtube: disable HLS if a session server is used 2025-03-19 20:34:56 +06:00
wukko
b6cd0ad727 api: automatically pull youtube session tokens from a session server
if provided, cobalt will pull poToken & visitor_data from an instance of invidious' youtube-trusted-session-generator or its counterpart
2025-03-19 19:54:20 +06:00
wukko
d2d098dbfb api/youtube: use custom innertube client env & decipher for more clients 2025-03-14 08:54:42 +06:00
wukko
2ebe2899be api/youtube: return an appropriate error if a video is locked behind DRM 2025-03-13 13:23:03 +06:00
wukko
b5ba86dd75 api/youtube: return a proper error if the video is "inappropriate" 2025-02-13 17:09:03 +06:00
jj
3f6dd4fced api/youtube: expect errorInfo to not be json 2025-02-08 20:59:53 +00:00
jj
ee3ef60a20 api/youtube: expect one of itags to be empty 2025-01-20 20:12:21 +00:00
jj
19ade7c905 api/youtube: return internal metadata for replaying request 2025-01-20 14:47:09 +00:00
jj
7767a5f5bb api/youtube: add support for pinning client/itag 2025-01-20 14:46:55 +00:00
jj
ec0d773792 api/youtube: use Math.min instead of ternary operator 2025-01-20 12:38:12 +00:00
jj
0378a1ae15 api/youtube: fix error when downloading stuff from WEB 2025-01-20 12:37:36 +00:00
wukko
4d634603e2 api/youtube: fix variable shadowing
oops
2024-12-23 23:34:05 +06:00
wukko
c6d0e0bdd5 api/youtube: use poToken, visitorData, and web client with cookies
and also decipher media whenever needed, but only if cookies are used
2024-12-23 22:58:16 +06:00
jj
9da3ba60a9 api/youtube: add support for cookies 2024-12-23 11:11:48 +00:00
wukko
4b8b0a0e9e api/youtube: don't retrieve the player as cobalt doesn't use it
we don't decipher anything lol
2024-12-10 17:30:32 +06:00
wukko
6770738116 api/create-filename: build & sanitize filenames in one place 2024-11-24 18:12:21 +06:00
wukko
5b445d5c7e api/youtube: catch even more innertube errors 2024-11-23 15:37:42 +06:00
jj
f7dc6cebad all: add space after catch 2024-11-15 12:19:49 +00:00
wukko
3fe2bd3b7c api/youtube: add missing else to adaptive codec fallback 2024-11-13 22:23:45 +06:00
wukko
dec977e34d api/youtube: fix variable shadowing in normalizeQuality 2024-11-13 18:45:18 +06:00
wukko
c88e21d4a8 api/youtube/adaptive: refactor, avoid extra loops, fallback all codecs 2024-11-13 18:41:57 +06:00
wukko
5f1c19d0f1 api/youtube: add no matching format error
this error is returned when cobalt got a response from innertube, but couldn't find a matching combo of video and audio streams. sometimes youtube returns only video or only audio per format combo for whatever reason.
2024-11-13 15:00:09 +06:00
wukko
8b972c7a85 api/youtube: disable hls if user prefers av1 2024-11-13 14:50:13 +06:00
wukko
b6e827c6f9 api/youtube: improve video quality normalization once again 2024-11-13 14:49:51 +06:00
wukko
2c451c69d0 api/youtube: rename quality variable in matchQuality 2024-10-31 21:43:02 +06:00
wukko
3dd6165472 api/youtube: slight refactor of matchQuality 2024-10-31 21:37:11 +06:00
wukko
5470926d52 api/youtube: adjust matched resolution
heights like 714 are now adjusted to 720, so that preferred quality is picked correctly
2024-10-31 21:31:39 +06:00
wukko
da72b9615e api/youtube: use best quality if all else fails 2024-10-31 21:18:34 +06:00
wukko
406ac7613c api/youtube: make sure language exists when checking for hls dubs
oops
2024-10-30 22:55:50 +06:00
wukko
367cab0de4 api/youtube: update hls vp9 container to webm
way better compatibility this way
2024-10-30 17:18:18 +06:00
wukko
e081751c59 api/youtube: fix dubbed audio track matching 2024-10-28 23:05:56 +06:00
wukko
17c020fe22 api/youtube: fix dubbed hls audio marking 2024-10-28 21:38:25 +06:00
wukko
b14c618228 api/youtube: pick a default track for videos with ai dubs 2024-10-28 19:35:08 +06:00
wukko
14ca47b73d api/youtube: make mp3 the best format for hls audio 2024-10-28 18:30:01 +06:00
wukko
866427a7a7 api/youtube: fix local variable overlap 2024-10-28 16:55:44 +06:00
wukko
effec1bfb9 api/youtube: return correct audio url in hls mode
my disappointment in its quality is immeasurable
2024-10-28 16:45:48 +06:00
wukko
fba6ba09c2 api/youtube: add hls codec fallback, update hls error code, refactor
also fixed best audio format
2024-10-28 15:45:18 +06:00
wukko
c9eefc4d55 api/youtube: add an option to use HLS streams
- added `youtubeHLS` variable to api
- added youtube HLS parsing & handling
2024-10-28 15:17:54 +06:00
wukko
7798844755 api/youtube: refactor, fix fallback, don't repeat same actions
fallback to h264 is now done if there's no required media, not only if adaptive formats list is empty.

best audio and best video are now picked only once.
2024-10-28 12:01:38 +06:00
wukko
fb7325f3b2 api/youtube: more refactoring, return audio even if there's no video 2024-10-26 23:53:43 +06:00