Skip to content

Releases: prateek-chaubey/YTPro

Fixed Downloader and other minor bugs

Choose a tag to compare

@prateek-chaubey prateek-chaubey released this 01 May 16:07
87db46e

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

  1. Fixed the downloader and introduced the SABR downloader
  2. It can now mux video and audio itself, so you can download every adaptive format with audio
  3. Fixed the CSP issue that blocked onclick in HTML elements and refactored it using onClickEventListener
  4. Updated the Gemini models
  5. Refactored the entire Java code and separated it into classes (a few parts are still pending)
  6. Extended the video playbackRate up to 10x
  7. Fixed the gesture control overlay over the video controls
  8. Fixed the UI glitch in Shorts buttons
  9. Minor UI tweaks

Things which will be updated soon

  1. Gemini bugs
  2. Features like Skip Silence and Enhance Audio
  3. Other minor bugs which are left behind

This update fixes the issues #172, #165, #160, #159, #154, #145 and more lol.


📌 Full Changelog

v3.95...v3.98

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

Choose a tag to compare

@prateek-chaubey prateek-chaubey released this 14 Nov 11:21
adbdffb

🚀 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

  1. Fixed the settings icon bug
  2. Resolved the CSP-related script blocking issue
  3. Repaired the download function and used the same CSP-bypass method to fetch deciphering modules for downloadable URLs
  4. Fixed volume & brightness gestures in the Shorts tab (they overlapped with UI buttons) by removing gesture overlays entirely in that tab
  5. Added an option to enable/disable the Miniplayer gesture

📌 Full Changelog

v3.92...v3.95

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

Choose a tag to compare

@prateek-chaubey prateek-chaubey released this 25 Oct 08:18
434dddb

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

  1. 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.

  2. Updated Icon Set
    Refined the Download, Picture-in-Picture (PIP), and Heart icons to align more closely with YouTube’s latest design language.

  3. Background Playback Stability
    Resolved recurring issues affecting background playback for improved reliability and performance.

  4. Enhanced PIP Mode
    Fixed Picture-in-Picture functionality by utilizing the onShowCustomView() method, ensuring smoother transitions and stability.

  5. Fitscreen Rendering Issue
    Corrected the video flickering issue occurring during fitscreen mode transitions.

  6. Download with Captions
    Fixed download-related issues when video captions were enabled.

  7. Optimized Network Requests
    Removed redundant request parameters from the Innertube API to improve efficiency and reduce data overhead.

  8. 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.

  9. 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.

  10. Deprecated Setting Removal
    Removed the “Auto Fitscreen” option from Settings as it no longer served a functional purpose.

  11. Ad-Free Experience
    Eliminated in-app advertisements by intercepting fetch and XHR requests to exclude ad-related elements, ensuring a cleaner viewing experience.

  12. Gemini Model Updates
    Updated to the latest Gemini models and removed deprecated versions to enhance performance and compatibility.

  13. URL Input and 60FPS Block Fixes
    Addressed issues affecting URL input handling and the functionality of the block_60fps option.


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!

Choose a tag to compare

@prateek-chaubey prateek-chaubey released this 23 May 03:58
955dad2

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:

  1. Fixed PIP Mode and added a media session to it, enabling playback controls.
  2. 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.
  3. Added media session notifications for every video, allowing background playback control (this might be a bit unstable, as I haven't tested it extensively).
  4. The downloader now works perfectly. Since YouTube frequently updates, it tends to break. I’ve partially shifted to youtubei.js for deciphering scripts. If it breaks again in the future, I’ll fully switch to youtubei.js. You might ask, “Why not now?”—well, youtubei.js requires 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.
  5. Audio files will now display the languages they contain, which is useful for YouTube videos with multiple dubbed languages.
  6. As requested, you can now disable media codecs and 60fps in YTPro, which improves support for low-end devices.
  7. 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.)
  8. After two years, you can finally rotate the app according to your screen orientation.
  9. Fixed the “fit screen” issue and patched various bugs.
  10. Hiding Shorts will now also remove them from search results.
  11. Fixed UI glitches in the Shorts feed and while adding SponsorBlock to video elements.
  12. Added a Developer Mode option in the settings menu, which enables eruda for debugging.
  13. 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

Choose a tag to compare

@prateek-chaubey prateek-chaubey released this 21 Mar 18:17
587926a

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

  1. Added Gemini to YTPRO
  2. Fixed the FitScreen bug
  3. Optimized the UI of settings and download menu
  4. Refactored some code
  5. Fixed the PIP mode , fullscreen issue

The things that are on the way

  1. Fix the known bugs
  2. Hide Open App button in every language
  3. Improve Background Playback i.e removing the entire audio player and directly playing the video itself in background with media session notification
  4. Add Play/Pause , Next , Previous buttons on PIP mode
  5. Enhance video's audio
  6. Better workaround for downloading videos
  7. 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

Choose a tag to compare

@prateek-chaubey prateek-chaubey released this 04 Feb 12:23
4033add

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:

  1. Shifted the YouTube extractor to java , for more flexibility in sending requests as there are few things that gets blocked by the browser
  2. Fixed the Downloader , Background Play
  3. Added Adaptive Formats in the downloader ( maybe in future we can add the functionality to merge audio and videos )
  4. Removed the Minimize button , and added the swipe gesture

Swipe down on the video element to minimize it and surf the YouTube FYP in the background

  1. Remove the subtle page refresh in between the videos
  2. Fixed the heart button bug , where it wasn't getting called
  3. 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

Choose a tag to compare

@prateek-chaubey prateek-chaubey released this 09 Aug 18:35
de3500b

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

Choose a tag to compare

@prateek-chaubey prateek-chaubey released this 14 Jul 08:43
c1398a3

Change logs:

  • Patched the video download/background play issue
  • Updated the EXTERNAL_STORAGE_ACCESS permission
  • Reduced the app size
  • Added a new feature of downloading the video directly by sharing the link to YTPRO
  • Enhanced the code

v3.4

Choose a tag to compare

@prateek-chaubey prateek-chaubey released this 24 Jun 10:09
a19afe9

Change logs:

  1. Upgraded the background player with media session notifications
  2. Updated the code for mini player
  3. Fixed bugs and updated the app's code
  4. Added WRITE_ENTERNAL_STORAGE permission for android versions lower than 28
  5. Added a update block in the code , so that people can be notified for the next update.

New Update

Choose a tag to compare

@prateek-chaubey prateek-chaubey released this 26 Oct 21:04
1b3276f

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 App button from header
  • Removed Unwanted code blocks
  • Fixed few bugs