Releases: prateek-chaubey/YTPro
Release list
Fixed Downloader and other minor bugs
This is a hassle release, as I am busy with a few other works.
This update contains major changes regarding the YouTube Downloader.
YouTube has been devouring downloaders for a while, and now it is doing it aggressively as it shifts to SABR (Server-Based Adaptive Bitrate). The downloader in YTPRO has always been an issue. Previously, it was simple, mainly by extracting the signatureCipher function using regex, while many YouTube clients had direct streamable URLs.
Now it is much harder to get streamable URLs. The shift to SABR has also deprecated the old methods.
In this update, videos will be directly downloaded using SABR streams (thanks to Innertube and googlevideo). The SABR stream is then passed to WebMessagePost, where it is written to disk. The MediaMuxerUtils class then muxes the audio and video, which are downloaded separately using SABR.
Bug fixes and improvements
- Fixed the downloader and introduced the SABR downloader
- It can now mux video and audio itself, so you can download every adaptive format with audio
- Fixed the CSP issue that blocked
onclickin HTML elements and refactored it usingonClickEventListener - Updated the Gemini models
- Refactored the entire Java code and separated it into classes (a few parts are still pending)
- Extended the video
playbackRateup to 10x - Fixed the gesture control overlay over the video controls
- Fixed the UI glitch in Shorts buttons
- Minor UI tweaks
Things which will be updated soon
- Gemini bugs
- Features like Skip Silence and Enhance Audio
- Other minor bugs which are left behind
This update fixes the issues #172, #165, #160, #159, #154, #145 and more lol.
📌 Full Changelog
Tip
For the latest updates and patches, download the nightly builds. They are often more stable than the official releases.
Enjoy this Update 🫡 , and please let me know if anything breaks with a PR 😦
Fixed CSP issue and other minor bugs
🚀 YTPro v3.95 – CSP Patch & Major Fixes
YouTube recently rolled out an updated Content Security Policy (CSP). While it enhances protection against XSS attacks, it unfortunately blocked the external CDNs used by YTPro, causing unexpected malfunctions. Since such changes take time to fully propagate on YouTube’s side, reproducing the issue initially was difficult—but once identified, a patch was deployed.
Because CSP blocks all external script requests that aren’t whitelisted in YouTube’s headers, the only feasible workaround was using shouldInterceptRequest(). With this approach, YTPro fetches requests that appear to originate from youtube.com (allowed by the browser) and injects/manipulates them inside shouldInterceptRequest().
Fully disabling CSP wasn’t possible, so this solution has been implemented. If you find a better or cleaner method, feel free to open a PR.
🔧 Bug Fixes & Improvements
- Fixed the settings icon bug
- Resolved the CSP-related script blocking issue
- Repaired the download function and used the same CSP-bypass method to fetch deciphering modules for downloadable URLs
- Fixed volume & brightness gestures in the Shorts tab (they overlapped with UI buttons) by removing gesture overlays entirely in that tab
- Added an option to enable/disable the Miniplayer gesture
📌 Full Changelog
Tip
For the latest updates and patches, download the nightly builds—they're often more stable than the official releases.
Enjoy the update 😴
🎇 Diwali Update 🪔 — Major UI & UX Enhancements
As Diwali brought new beginnings and renovations everywhere, YouTube Pro (YTPRO) also received a significant refresh.
This release introduces major user interface (UI) and user experience (UX) improvements, alongside several critical bug fixes and feature enhancements.
Changelog
-
Adaptive and Monochrome Icons
Introduced adaptive and monochrome icons in compliance with modern Android design standards. The YTPRO icon will now automatically adjust based on the system theme and settings. -
Updated Icon Set
Refined the Download, Picture-in-Picture (PIP), and Heart icons to align more closely with YouTube’s latest design language. -
Background Playback Stability
Resolved recurring issues affecting background playback for improved reliability and performance. -
Enhanced PIP Mode
Fixed Picture-in-Picture functionality by utilizing theonShowCustomView()method, ensuring smoother transitions and stability. -
Fitscreen Rendering Issue
Corrected the video flickering issue occurring during fitscreen mode transitions. -
Download with Captions
Fixed download-related issues when video captions were enabled. -
Optimized Network Requests
Removed redundant request parameters from the Innertube API to improve efficiency and reduce data overhead. -
Pinch-to-Zoom Gestures
Added support for pinch gestures directly on the video player, allowing users to seamlessly toggle between fit-to-screen and full-screen modes. -
Gesture Controls for Volume and Brightness
Implemented gesture-based controls for adjusting volume and brightness, as requested in issues #16 and #93.
This feature can be disabled in Settings if preferred. -
Deprecated Setting Removal
Removed the “Auto Fitscreen” option from Settings as it no longer served a functional purpose. -
Ad-Free Experience
Eliminated in-app advertisements by interceptingfetchandXHRrequests to exclude ad-related elements, ensuring a cleaner viewing experience. -
Gemini Model Updates
Updated to the latest Gemini models and removed deprecated versions to enhance performance and compatibility. -
URL Input and 60FPS Block Fixes
Addressed issues affecting URL input handling and the functionality of theblock_60fpsoption.
Notes
This version has undergone limited device testing. Users may encounter device-specific issues, and feedback is highly encouraged.
Please report any bugs or inconsistencies via the Issues section.
Thank you for your continued support, and enjoy this Diwali update. ✨
YTPro Update: Smoother Playback, Smarter Downloads & UI Fixes Galore!
This version includes major updates regarding PIP Mode and the Background Player, as this update may prevent them from breaking again. It also includes the shift of the download function to another API—youtubei.js—and addresses numerous minor UI bugs. The full changelog is as follows:
- Fixed PIP Mode and added a media session to it, enabling playback controls.
- Fixed the Background Player. It now works similarly to how it does in the Brave browser. Previously, it fetched the audio stream, but now it prevents the WebView itself from getting paused, thereby keeping the video playing as well.
- Added media session notifications for every video, allowing background playback control (this might be a bit unstable, as I haven't tested it extensively).
- The downloader now works perfectly. Since YouTube frequently updates, it tends to break. I’ve partially shifted to
youtubei.jsfor deciphering scripts. If it breaks again in the future, I’ll fully switch toyoutubei.js. You might ask, “Why not now?”—well,youtubei.jsrequires a proxy to work in browsers, and converting it to be YTPro-friendly would have been more of a hassle for me asfsik. We can handle that later if needed—because, as a legend once said, if it works, don’t touch it. - Audio files will now display the languages they contain, which is useful for YouTube videos with multiple dubbed languages.
- As requested, you can now
disable media codecsand 60fps in YTPro, which improves support for low-end devices. - Updated the list of models in Google Gemini and fixed image results. (I still haven’t added a feature to show generated images in the Gemini response—because let’s be honest, most people aren’t using YTPro to generate image responses.)
- After two years, you can finally rotate the app according to your screen orientation.
- Fixed the “fit screen” issue and patched various bugs.
- Hiding Shorts will now also remove them from search results.
- Fixed UI glitches in the Shorts feed and while adding SponsorBlock to video elements.
- Added a Developer Mode option in the settings menu, which enables eruda for debugging.
- Improved the downloader UI—changed it from pitch black to a softer grey.
That’s the list of updates I’ve pushed to YTPro. Let me know if anything breaks again via Issues, and enjoy the update!
v3.8
I always wanted to add an AI feature in YTPRO , and today i am glad to announce that it's there , well for now i have just used the Google Gemini to summarise/analyse the video , depends upon your prompt , this repo helped me a lot , lmao in short i just copied the entire code into YTPRO ,for now you can use 6 different Gemini models , custom prompt.
The Changelogs is as followed
- Added
Geminito YTPRO - Fixed the
FitScreenbug - Optimized the UI of settings and download menu
- Refactored some code
- Fixed the PIP mode , fullscreen issue
The things that are on the way
- Fix the known bugs
- Hide
Open Appbutton in every language - Improve Background Playback i.e removing the entire audio player and directly playing the video itself in background with media session notification
- Add Play/Pause , Next , Previous buttons on PIP mode
- Enhance video's audio
- Better workaround for downloading videos
- Publishing the app on F-Droid
Well it may take some time , but before these features i would like to fix the known bugs , i don't have several devices to test the code , i hope someone will help in that
Anyways enjoy the AI and lemme know what's working and what's not lol
Note
As only major releases are published here, to download the latest patch update, download it from nightly builds
https://nightly.link/prateek-chaubey/YTPro/workflows/gradle/main/Apk.zip
Patched a ton of things
There has been a ton of issues with the download feature , and it led to bugs in background play and minimize buttons as well , right now i have used the direct youtube-api which i got from a github repo , if still it stops working, then i may integrate NewPipeExtractor , the thing is i don't want to use any external lib
- It will increase the app's size
- I want it to be in pure vanilla
until n unless I don't have any other options left , i will stick to the above two options.
The repo is always open for contributions , there are a lot of things that can be added and a lot of things that have to be patched as well.
Changelogs:
- Shifted the YouTube extractor to java , for more flexibility in sending requests as there are few things that gets blocked by the browser
- Fixed the
Downloader,Background Play - Added
Adaptive Formatsin the downloader ( maybe in future we can add the functionality to merge audio and videos ) - Removed the
Minimizebutton , and added the swipe gesture
Swipe down on the video element to minimize it and surf the YouTube FYP in the background
- Remove the subtle page refresh in between the videos
- Fixed the heart button bug , where it wasn't getting called
- Fixed a few bugs ( sponsors indicator , unnecessary script injection etc )
A few things are still in the list to be fixed and to be added.
Enjoy this update and if anything breaks down in this update make sure to open an issue on github (with a patch , if possible lol )
Thanks ❤️
v3.45reborn
well well well , YouTube introduced Content-Security-Policy header to block all the external scripts and html which were being injected , lol lame developers of YT.
Currently this has been patched in this update , i hope YouTube doesn't play hard against this once again, as it's still playing with the nCode function making it hard to be extracted from the base.js. Well people will find a stable workaround for that as well , i hope that's soon. I am tired of updating the nCode script back and forth.
Enjoy this update and if anything breaks down again make sure to open an issue on github.
Thanks ❤️
v3.45
Change logs:
- Patched the video download/background play issue
- Updated the
EXTERNAL_STORAGE_ACCESSpermission - Reduced the app size
- Added a new feature of downloading the video directly by sharing the link to YTPRO
- Enhanced the code
v3.4
Change logs:
- Upgraded the background player with media session notifications
- Updated the code for mini player
- Fixed bugs and updated the app's code
- Added
WRITE_ENTERNAL_STORAGEpermission for android versions lower than 28 - Added a update block in the code , so that people can be notified for the next update.
New Update
Changelogs:
- Added the whole new hearts feature
- Improved the download feature
- Adjusted the ads blocker with YouTube's new code
- Now you can heart shorts videos too
- The full-screen orientation will be now based upon video's resolution
- Removed the
Open Appbutton from header - Removed Unwanted code blocks
- Fixed few bugs