diff --git a/YoutubeExplode/Videos/VideoController.cs b/YoutubeExplode/Videos/VideoController.cs index f92406bf..dfc79c69 100644 --- a/YoutubeExplode/Videos/VideoController.cs +++ b/YoutubeExplode/Videos/VideoController.cs @@ -47,13 +47,15 @@ public async ValueTask GetPlayerResponseAsync( CancellationToken cancellationToken = default ) { - // The most optimal client to impersonate is the Android client, because - // it doesn't require signature deciphering (for both normal and n-parameter signatures). - // However, the regular Android client has a limitation, preventing it from downloading - // multiple streams from the same manifest (or the same stream multiple times). - // As a workaround, we're using ANDROID_TESTSUITE which appears to offer the same - // functionality, but doesn't impose the aforementioned limitation. + // The most optimal client to impersonate is any mobile client, because they + // don't require signature deciphering (for both normal and n-parameter signatures). + // However, we can't use the ANDROID client because it has a limitation, preventing it + // from downloading multiple streams from the same manifest (or the same stream multiple times). // https://github.com/Tyrrrz/YoutubeExplode/issues/705 + // Previously, we were using ANDROID_TESTSUITE as a workaround, which appeared to offer the same + // functionality, but without the aforementioned limitation. However, YouTube discontinued this + // client, so now we have to use IOS instead. + // https://github.com/Tyrrrz/YoutubeExplode/issues/817 using var request = new HttpRequestMessage( HttpMethod.Post, "https://www.youtube.com/youtubei/v1/player"