-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[YouTube] Improve download speed #9948
Conversation
Kudos, SonarCloud Quality Gate passed! |
I'm gonna make a shrine dedicated to you and pray there every day. |
Are you sure that your changes aren't breaking/changing anything for other services than YouTube? Also, I don't really understand how can downloads be throttled with HEAD requests, since these requests only return the HTTP headers of the stream URL. Could you explain this, please? |
Most HTTP client keep connections open to allow for faster subsequent requests. And once YouTube has recognized a download request (without Range header or params) the connection gets flagged and throttled. Since YouTube's servers dont make a difference between HEAD and GET requests, sending a HEAD request without range headers is enough to have your download speed throttled. To prove my point: forcing a reconnect (for example by reinstantiating the HTTP client) after the HEAD request prevents the throttling. I tried this with my rust-based YT downloader. I dont see how this limits compatibility with other services. HTTP HEAD requests simply return all headers that would be returned on normal GET requests, so a HEAD request with range will return the headers of a partial response. I have tried it with all services and did not encounter any issues. |
…s of 15-01-2024 into pre-unified-legacy This is a fork of TeamNewPipe/NewPipe-legacy that I have been patching for a few months now. There is no commit history as this has been a personal project up until today. Pulled in a major chunk of related commits for NewPipe Preunified from upstream TeamNewPipe/NewPipe repository: 1. Update NewPipe extractor to fetch likes count Fix TeamNewPipe/NewPipe#10624 2. Access Background Player Queue from Main menu by HybridAU TeamNewPipe/NewPipe#8419 3. Added Bandcamp Music Support Into NewPipeLegacy, Improve Bandcamp intent filters TeamNewPipe/NewPipe#3741 TeamNewPipe/NewPipe#6373 TeamNewPipe/NewPipe#6456 4. Disable sending metrics to Google when using Android System WebView TeamNewPipe/NewPipe#5337 5. Add basic resize functionality TeamNewPipe/NewPipe#3948 6. [media.ccc.de] Add recent & live stream kiosk TeamNewPipe/NewPipe#5251 TeamNewPipe/NewPipe#5286 [media.ccc.de] Fix service color TeamNewPipe/NewPipe#5258 7. Ability to see Pinned Comment added by dkramer95 TeamNewPipe/NewPipe#7577 8. Clicking on Title In Background Player Should Open Video Details TeamNewPipe/NewPipe#3808 by https://github.com/budde25 9. Added Swipe to Refresh for Channels New Videos in Subscription Feed TeamNewPipe/NewPipe#4893 10. [peertube] implement sepia search TeamNewPipe/NewPipe#5257 11. Allow installation on external storage by triallax in TeamNewPipe/NewPipe#6037 12. Change UA to privacy.resistFingerprinting TeamNewPipe/NewPipe#5649 by FireMasterK 13. Add formatting removal on paste for search TeamNewPipe/NewPipe#5912 by imericxu 14. Remember Last Selected Media Type For Downloads TeamNewPipe/NewPipe#4038 by vmazoyer 15. Improve search suggestion experience when remote ones can't be fetched TeamNewPipe/NewPipe#4029 by StyPox 16. Fix Download Button Not Visible After Playing Live Stream, Fix video detail controls visibility set inconsistently Add this commit by StyPox TeamNewPipe/NewPipe@dbb86d2 from TeamNewPipe/NewPipe#4362 17. [Background Player] Fix very small thumbnails in Video Detail Page by TobiGR in TeamNewPipe/NewPipe#5818 18. Add Always Expand Description In Appearance Settings TeamNewPipe/NewPipe#2998 by B0pol (Related) entries from search history Increased from 25 to 80 and Search Suggestions Entries from 3 to 60 commit copied from TeamNewPipe/NewPipe#2666 thanks to ergor 20. Fixes snackbar error on disabled likes count Fixes TeamNewPipe/NewPipe#7405 by TeamNewPipe/NewPipeExtractor#753 21. Fixed player controls not hiding after replay & Bluetooth headset button by Alexander-- TeamNewPipe/NewPipe#3547 22. update user agent in Downloader to firefox latest ESR 115 by Nickoriginal TeamNewPipe/NewPipe#8269 23. Changed Dark Theme Colors To Darker Variant by sauravrao637 TeamNewPipe/NewPipe#6244 24. Support for PeerTube Short Links TeamNewPipe/NewPipe#7353 25. Handle URLs for YouTube Shorts TeamNewPipe/NewPipe#7181 26. Fix playback speed not being updated in Background Player & Fix TeamNewPipe/NewPipe#8058 Fixed Combinedly by TeamNewPipe/NewPipe#6421 by Tobius and by seanzzy in TeamNewPipe/NewPipe#8244 27. Added comments disabled functionallity by litetex in TeamNewPipe/NewPipe#6483 28. [media.ccc.de] Fix service color TeamNewPipe/NewPipe#5258 29. Ignore ContentNotSupportedException caused by Bandcamp fan pages TeamNewPipe/NewPipeExtractor#1033 30. Crash when rotating device on unsupported channels TeamNewPipe/NewPipe#6696 31. Correct Gigaget's license from GPLv2 to GPLv3 TeamNewPipe/NewPipe#4892 32. Add basic resize functionality [Samsung Dex Now Supported] TeamNewPipe/NewPipe#3948 33. [Security] Update ktlint to 0.40.0 34. Fix security vulnerability update checkstyle / guava 35. Update ExoPlayer from 2.11.6 to 2.11.8 36. Update checkstyle, OkHttp, use Kotlin JDK8 by TacoTheDank added this commit TeamNewPipe/NewPipe@79e2bb3 from TeamNewPipe/NewPipe#3909 37. Use user agent of DownloaderImpl also in ReCapthaActivity TeamNewPipe/NewPipe#5215 38. Fix ACRA bug reports not containing stack trace, Do not init ACRA if inside its own process TeamNewPipe/NewPipe#3982 39. Remove deprecated calls to set Sender class to ACRA TeamNewPipe/NewPipe#3982 40.Use SubtitlesStream#getUrl instead of getURL TeamNewPipe/NewPipe#4120 41. Remove pbj=1 parameter from YouYube urls in recaptcha activity TeamNewPipe/NewPipe#5208 42. Set notification style in Android 11 to MediaStyle Thanks to XiangRongLin for Limted Support for preunified refer to this commit XiangRongLin@aa55a09 43. Click on title in background player opens video details TeamNewPipe/NewPipe#3808 44. Add 2K and 4K to the options list for default resolution TeamNewPipe/NewPipe#2968 45. Fix crash when opening video in local playlist tab Fixes TeamNewPipe/NewPipe#3887 by TeamNewPipe/NewPipe#3892 by wb9688 46. Handle ContentNotSupportedException TeamNewPipe/NewPipe#3300 47. [YouTube] Improve download speed by Theta-dev TeamNewPipe/NewPipe#9948 48. Disable commenter image when disabling thumbnails loading by 4D17Y4 Fixes TeamNewPipe/NewPipe#4205 TeamNewPipe/NewPipe#4350 49. Adapt opacity of popup close button to allow touches in other apps on Android >=11 Fixes TeamNewPipe/NewPipe#6770 TeamNewPipe/NewPipe#8279 50. Better error messages for SoundCloud and YouTube unavailable contents TeamNewPipe/NewPipe#5385 51. Mitigating long buffering on initial video playback by using custom progress-load-interval in exoplayer, Use 16 KiB as the default progressive load interval by karyogamy TeamNewPipe/NewPipe#7919 52. Support for opening YouTube Live URLs TeamNewPipe/NewPipe#9725 Co-Authored-By: Tobi <17365767+tobigr@users.noreply.github.com> Co-Authored-By: Stypox <stypox@pm.me> Co-Authored-By: Audric V. <74829229+audricv@users.noreply.github.com> Co-Authored-By: bopol <58657617+b0pol@users.noreply.github.com> Co-Authored-By: Isira Seneviratne <31027858+isira-seneviratne@users.noreply.github.com> Co-Authored-By: opusforlife2 <53176348+opusforlife2@users.noreply.github.com> Co-Authored-By: fynngodau <fynngodau@mailbox.org> Co-Authored-By: David Kramer <6166095+dkramer95@users.noreply.github.com> Co-Authored-By: Ethan Budd <budde25@protonmail.com> Co-Authored-By: triallax <triallax@tutanota.com> Co-Authored-By: Kavin <20838718+firemasterk@users.noreply.github.com> Co-Authored-By: Eric Xu <xeric.2002@gmail.com> Co-Authored-By: Vincent Mazoyer <17800856+vmazoyer@users.noreply.github.com> Co-Authored-By: Erol Gorancic <erol@gorancic.no> Co-Authored-By: Alexander-- <1107390+alexander--@users.noreply.github.com> Co-Authored-By: Saurav Rao <56369484+sauravrao637@users.noreply.github.com> Co-Authored-By: Nickoriginal <85299944+nickoriginal@users.noreply.github.com> Co-Authored-By: Ziyan Zhang <71145592+seanzzy@users.noreply.github.com> Co-Authored-By: litetex <40789489+litetex@users.noreply.github.com> Co-Authored-By: XiangRongLin <41164160+xiangronglin@users.noreply.github.com> Co-Authored-By: wb9688 <46277131+wb9688@users.noreply.github.com> Co-Authored-By: Okan25 <92695587+okan25@users.noreply.github.com> Co-Authored-By: Michael Van Delft <1610265+hybridau@users.noreply.github.com> Co-Authored-By: Taco <32376686+tacothedank@users.noreply.github.com> Co-Authored-By: ThetaDev <thetadev@magenta.de> Co-Authored-By: Aditya-Srivastav <54016427+4d17y4@users.noreply.github.com> Co-Authored-By: John Zhen Mo <zhenmogukl@gmail.com>
What is it?
Description of the changes in your PR
&range=n-m
URL parameterbytes 0-0/4530953
) which can be parsed to get the total size.Fixes the following issue(s)
APK testing
The APK can be found by going to the "Checks" tab below the title. On the left pane, click on "CI", scroll down to "artifacts" and click "app" to download the zip file which contains the debug APK of this PR.
Due diligence