Commit graph

119 commits

Author SHA1 Message Date
ThetaDev
883b79c648 feat: player: handle VPN ban and captcha required error messages 2025-04-23 21:21:23 +02:00
ThetaDev
584a397790 fix: switch client if no adaptive stream URLs were returned 2025-03-26 02:44:08 +01:00
ThetaDev
5c164a2d53 fix: handle player returning no adaptive stream URLs 2025-03-24 01:28:07 +01:00
ThetaDev
bcbf5e87bb fix: extract deobf data with global strings variable 2025-03-24 01:12:01 +01:00
ThetaDev
e313fef4f0 fix: always skip failed clients 2025-03-16 16:51:43 +01:00
ThetaDev
1e1b0cdf45 fix: desktop client: generate PO token from user_syncid when authenticated 2025-03-16 01:56:29 +01:00
ThetaDev
c34227e763 fix: simplify get_player_from_clients logic 2025-03-16 01:24:54 +01:00
ThetaDev
85a92b1a53 feat: add timezone query option 2025-02-07 04:13:43 +01:00
ThetaDev
2ce96b14de feat: log failed player fetch attempts with player_from_clients 2025-02-06 14:04:01 +01:00
ThetaDev
533cb92f51 fix: output full request body in reports, clean up get_player_po_token 2025-02-06 03:56:11 +01:00
ThetaDev
799e1c8450 feat: add session po token cache 2025-02-06 00:48:37 +01:00
ThetaDev
f152a853b8 fix: allow player data to be fetched without botguard 2025-02-05 15:56:15 +01:00
ThetaDev
c74a6f62f7 feat: add support for rustypipe-botguard to get PO tokens 2025-02-05 15:56:14 +01:00
ThetaDev
96d1829490 fix: a/v streams incorrectly recognized as video-only 2025-01-22 01:59:01 +01:00
ThetaDev
a9ec7055d1 fix: player_from_clients method not send/sync 2025-01-16 04:23:02 +01:00
ThetaDev
5cc342a88d docs: update README 2025-01-16 03:45:12 +01:00
ThetaDev
414f0b97c9 feat: add DRM and audio channel number filtering to StreamFilter 2025-01-16 00:47:49 +01:00
ThetaDev
26d9f674d9 feat: extract player DRM data 2025-01-13 03:22:37 +01:00
ThetaDev
8751ee6a5b fix: only use auth-enabled clients for fetching player with auth option enabled 2025-01-13 03:22:37 +01:00
ThetaDev
171c22458d feat: add functions to fetch a user's history and subscriptions 2025-01-05 05:50:58 +01:00
ThetaDev
7a6a020a39 fix: error 400 when fetching player with login 2024-12-20 03:06:03 +01:00
ThetaDev
31677181d5 fix: update client versions, enable Opus audio with iOS client 2024-12-18 19:44:42 +01:00
ThetaDev
7a234cbb74 fix: disable Android client 2024-11-25 15:48:04 +01:00
ThetaDev
40811a89e5 fix: fetch unlocalized player data to interpret errors correctly; regression introduced with v0.6.0 2024-11-09 03:08:00 +01:00
ThetaDev
8cc227077b feat: add OAuth user login to access age-restricted videos 2024-10-23 23:02:32 +02:00
ThetaDev
448657bcb5 feat!: generate random visitorData, remove RustyPipeQuery::get_context and YTContext<'a> from public API 2024-10-23 01:51:16 +02:00
ThetaDev
43805aca66 feat!: remove TvHtml5Embed client as it got disabled 2024-10-23 01:42:02 +02:00
ThetaDev
93dbd0d20c fix: fetch artist albums continuation 2024-10-22 23:56:59 +02:00
ThetaDev
ee76cee8d1 feat: add mobile client 2024-10-13 05:16:06 +02:00
ThetaDev
9f16a63fe3 fix: player_from_clients: fall back to TvHtml5Embed client 2024-08-17 00:21:47 +02:00
ThetaDev
0b8cc6ac86 fix: detect ip-ban error message 2024-08-10 16:26:43 +02:00
ThetaDev
1a62471ad7 feat: change default player client order 2024-08-10 03:03:15 +02:00
ThetaDev
1bd49fc53d fix: set tracing instrumentation level to Error 2024-08-10 00:06:56 +02:00
ThetaDev
f27d0492cb feat!: add TV client 2024-07-30 01:55:24 +02:00
ThetaDev
b2839f773d feat: add player_from_clients function to specify client order 2024-07-29 18:03:31 +02:00
ThetaDev
9517de2dcd fix: improve deobfuscator (support multiple nsig name matches, error if mapping all streams fails)
Since YouTube keeps changing the nsig function signature and a generic regex may match at multiple places, I changed the extraction logic to search for multiple matches if necessary and test the extracted deobfuscation functions.

I also found out that if the deobfuscation fails for all streams, fetching the player still returns a successful result with no streams, suggesting that the video is not available. So I changed the mapper to throw an ExtractionError if no streams are mapped successfully.
2024-07-29 14:45:52 +02:00
ThetaDev
1934592ab8 feat: add client_type to VideoPlayer, simplify MapResponse trait
The MapResponse trait needed too many arguments, so I added the MapRespCtx object.
Also added the client_type to the context, so it can be added to the extracted player data.
This is necessary to be able to download videos with the correct user agent
2024-07-27 02:30:24 +02:00
ThetaDev
36d6061a27 fix!: extracting nsig function, remove field throttled from Video/Audio stream model 2024-07-15 20:41:20 +02:00
ThetaDev
3204de301a refactor!: rename VideoItem/VideoPlayerDetails.length to duration for consistency 2024-06-16 22:42:11 +02:00
ThetaDev
b5dcdebeab feat: add UnavailabilityReason: IpBan 2024-06-16 22:24:59 +02:00
ThetaDev
cf3b84fe70 chore: fix clippy lints 2024-05-02 19:39:48 +02:00
ThetaDev
4ab9046d33 fix: remove Innertube API keys, update android player params 2024-04-16 15:18:29 +02:00
ThetaDev
1a22dc835a fix: handle age restricted channels
refactor! rename ExtractionError::VideoUnavailable to ExtractionError::Unavailable
2023-11-05 22:43:04 +01:00
ThetaDev
b25e9ebbb7 fix: send visitor data for YTM playlists 2023-09-28 01:00:00 +02:00
ThetaDev
1d1dcd622f feat: add tracing 2023-09-22 03:22:38 +02:00
ThetaDev
ac25490435 chore: fix clippy lints 2023-08-30 22:05:18 +02:00
ThetaDev
9d385e8e9b fix: player from android client 2023-07-30 17:00:47 +02:00
ThetaDev
32b4800b46 fix!: remove possible panic from client builder
fix: simplify integer divisions
2023-05-31 12:14:11 +02:00
ThetaDev
cc2cadc309 fix: add support for A/B test 7 (short date format) 2023-05-28 21:07:03 +02:00
ThetaDev
cbeb14f3fd fix: add pedantic lints 2023-05-13 02:40:26 +02:00