Releases: TeamNewPipe/NewPipe
v0.27.4
This is a minor release made to allow the new APK to be reproducible for F-Droid, see #11754, and see v0.27.3 for the previous release notes
Improved
- Always allow changing player notification preferences on Android 13+ #11738
Fixed
- Fix exporting database/subscriptions would not truncate an already existing file, possibly leading to a corrupted export #11745
- Fix player resuming from start when clicking on a timestamp #11734
Development
- Add workflow to build unsigned release APKs reliably #11765
v0.27.3
⚠️ Known issues/regressions which are not fixed with this update ⚠️
- [YouTube] "Sign in to confirm..."/"Watch on the latest version..." error messages are difficult to fix, but we are working on it. See #11139 for more details.
- [PeerTube] No audio is played in videos with a separated audio file. See #11601 for more details.
- [YouTube] Age-restricted content will not be available anymore, because YouTube removed all known ways to bypass age-restrictions without login. See #11382 for more details.
Some updates on development
It's been some time since the last release, due to team members being very busy with real life things, and we apologize for that. However, there has been some progress on the rewrite (see the refactor
branch) and the NewPipe e.V. started hiring people with the money from donations, which led to the creation of NewPlayer. More details on this will follow in a blogpost on https://newpipe.net. If you want to help out with future releases or with the rewrite, please join our Matrix chat!
Changelog
This version also includes the changes from NewPipe Extractor version v0.24.3.
New
- Add support for secondary audio track type #11714
Improved
- Make playlist description clickable to show more / less content #11112
- [PeerTube] Handle
subscribeto.me
instance links automatically #11110 - Only start playing single item in history screen #11696
- [YouTube] Throttle feed loading to avoid rate limits #11743
Fixed
- Fix RSS button visibility #11067
- Fix seekbar preview crashes #11584
- Fix crash after adding item to a playlist caused by null thumbnail URL #11651
- Fix seekbar crashing on drag with faulty frameset #11596
- Fix UI crash when user navigates away before the download dialog appears #11621
- Fix related items list enqueue popup crash #11614
- Fix playlist order in add to playlist dialog #11566
- Adjust the playlist bookmark item layout for RTL languages #11024 #11711
Localization and Documentation
- Update backup and restore explanation in README #11003
- Remove Kotlin code restriction from contribution guidelines #11209
- Update README.pt_BR.md #11275
- Fixing the 404 page not found, when clicking on "contribution notes" in multiple README.md's translated into different languages #11487
- Adding Hash of Signing Key to README #11140 #11694
- Fix a typo in README #11694
- Use Android's elapsed time formatting #11244
- Update French README.fr.md #10892
- Readme translation to arabic #10969
- Update backup and restore explanation & improve hindi, punjabi and assamese READMEs #11243
Development
- Fix GitHub workflow for Android tests #11014
- Migrate to non-transitive R classes #10918
- Update PrettyTime to 5.0.8 #11094
- Convert
CommentTextOnTouchListener
to a lambda #11075 - Add NewPipe icon to Android Studio's new UI #11230
- Remove outdated returnActivity test code #11428
- Replaced IcePick with Bridge and Android-State #11636
- Update Java version used in CI from 17 to 21 #11636
- Update Gradle Wrapper from 8.2 to 8.9 #11636
- Update AGP from 8.2.0 to 8.7.1 #11636
- Replace symlink
list_stream_card_item.xml
by a copy of the pointed file to fix compilation on a default Windows setup #11636 - Remove deprecated
android.defaults.buildfeatures.buildconfig
Gradle property #11636 - Fix and update NewPipeExtractor dependency #11636
- Make it possible to control the version code and name #11656
- Add null-safe
SharedPreferences.getStringSafe
#11629 - Update user agent to Firefox ESR 128 #11268
v0.27.2
This hotfix release fixes HTTP 403 errors in the middle of YouTube videos.
New
- [SoundCloud] Add support for on.soundcloud.com URLs TeamNewPipe/NewPipeExtractor#1179
Improved
- [Bandcamp] Show additional info in radio kiosk TeamNewPipe/NewPipeExtractor#1201
Fixed
- [YouTube] Fix occasional HTTP 403 errors at the beginning or in the middle of videos TeamNewPipe/NewPipeExtractor#1197
- [YouTube] Extract avatar and banner from more channel header types TeamNewPipe/NewPipeExtractor#1203
- [Bandcamp] Fix various bugs and always use HTTPS TeamNewPipe/NewPipeExtractor#1199 TeamNewPipe/NewPipeExtractor#1200 TeamNewPipe/NewPipeExtractor#1177
v0.27.1
Fixed
- [YouTube] Fix for HTTP error 403 when starting videos: TeamNewPipe/NewPipeExtractor#1191
- Fix crash in
MediaSessionPlayerUi
while destroying player #11261
Note that this does not fix 403 errors in the middle of YouTube videos, i.e. #11191. That issue will be addressed in another hotfix release as soon as possible.
v0.27.0
⚠️ Important fixes ⚠️
-
[YouTube] Fix extraction of comments TeamNewPipe/NewPipeExtractor#1163
The issue happened because YouTube changed the response of comments. Note that this response doesn't return an exact like count for comments for comments with more than 999 likes, only approximate like counts.
ℹ️ Third-party social links in descriptions and comments are now showing the accessibility text of YouTube, which is in the form
Social media name: YouTube preview text
instead of just YouTube's preview text. -
[YouTube] Restore access to some streams TeamNewPipe/NewPipeExtractor#1168
These streams are the audio streams with an average bitrate around 32 and 48 kbps (itags 139, 599, 600) and the 720p MPEG-4 muxed (video + audio) video stream on videos with musical contents (itag 22, on other contents it was still available). Note that they are not returned by YouTube on every video depending on multiple factors and they currently come from the Android YouTube app client that we use.
Unfortunately, this client has now several integrity checks very hard or almost impossible to implement as a third-party client that we used to workaround before. The workaround shipped until 0.26.1 has been disabled by YouTube (the same one used previously by reVanced for non-root users), and the one shipped in this release is being disabled (A/B test or rollout).
These streams should become completely unavailable in the future and may be fully or partially restored in a future NewPipe update.
-
Fix vulnerability when importing backups GHSA-wxrm-jhpf-vp6v
There is now a new format for settings stored in backups.
The old patched format is still supported alongside the new format for backwards compatibility, but will soon be removed completely. NewPipe will show a warning when importing settings in the old format.Avoid importing any backup from an untrusted source (e.g. a GitHub issue) if it shows this warning!
⚠️ Known issues/regressions which are not fixed with this update ⚠️
DO NOT OPEN NEW ISSUES FOR THEM BUT FOLLOW THE LINKED ONES INSTEAD!
- [YouTube] Avatars, banners and subscriber count are unavailable on channels sometimes: a YouTube A/B test or rollout changes the channel header UI, which is currently unsupported by the extractor. See #10826 for more details.
Changelog
This version also includes the changes from NewPipe Extractor version v0.24.0.
New
- Add support for comment replies #10018
- Add playlist description to playlist fragment #10091
- Add option to reset settings #9236
- Show overall duration of items in a playlist #6045 #10952
- Allow ordering bookmarked playlists #8221
Improved
- [Android 13+] Restore support of custom notification actions #10712
⚠️ The first three notification actions (play/pause, previous and next) cannot be customized anymore on these Android versions, as they are set by the system⚠️ - Allow playing/pausing from the notification when the player is buffering #10712
- Added "free memory" check before downloading #10505 #10896 #10992
- Change the landscape layout of list card item #9975
- Ask for consent before checking for updates #10790
- Moved player notification setting to notification section #9580
Fixed
- Don't write defaultFormat setting, use default value #10732
- Calculate cache key based on info type instead of item type #10717
- Fix not considering nullability when comparing
getAudioTrackType
#10909 - Trim search string and remove duplicate records from the database #8242
- Various download fixes #10912
- Fix error if there is no avatar when reloading feed #10957
Localization and Documentation
Development
- Update some AndroidX libraries and
compileSdk
to 34 #10086 - Update miscellaneous libraries #10530
- Update Matrix chat URL to new link #10795
- Update jsoup to 1.17.2 #10817
- Update GitHub Actions dependencies in workflows #10740
- Fix typo in TextLinkifier.java #10889
- Improve app signature check #10618
- Update workflows to use Node 20 #10908
BaseDescriptionFragment
: Assert member is initialized #10781
v0.26.1
v0.26.0
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
This version also includes the changes from NewPipe Extractor v0.23.0 and v0.23.1, which fix the recurring "Could not get like count" error on YouTube streams.
New
-
Access more content provided by channels which is grouped in different tabs (TeamNewPipe/NewPipeExtractor#1082 #9182 #10645 #10670 #10671 #10673). The content of the channel tabs can vary by service:
- YouTube: videos, shorts, live, playlists, about
- Note that YouTube does not provide upload date and duration for shorts, so they won't show up in the feed
- PeerTube: videos, playlists, channels (for accounts), about
- SoundCloud: tracks, playlists, albums, about
- Bandcamp: albums, tracks, about
- media.ccc.de: videos, about
- YouTube: videos, shorts, live, playlists, about
-
Allow selecting image quality among multiple images #10062 #10482
NewPipe supports selecting the image quality among multiple image versions. This comes with three different presets which can be selected from within the settings (low, medium and high quality). This is most noticeable in the recently introduced card style for stream lists which is now able to show thumbnails in higher resolutions. Some services (e.g. YouTube) do not always provide the highest quality thumbnails for those lists.
Improved
- Adjust empty state message for
ListInfoFragment
s depending onInfo
stream type #10304 - Show loading indicator before opening the download dialog from the share menu #10407
- Improved accessibility of player interfaces #10199
- Include a high-resolution option in the default resolution settings #9987
- Show play queue button in main player when there is one stream #10396
- Add option to add playlist name and video name to playlist sharing content #10427
- Improve audio stream selection for video-only streams in the downloader #10446
Localization and Documentation
- Make capitalization of "Night theme" setting consistent with others #10313
- Update Weblate & fix string formats #10376
- Fix selection of wrong languages in language picker #10406
- Make "latest release" link more obvious to bug reporters #10331
- [Readme] Remove Bitcoin and Bountysource donation options #10491
- [Readme] Add Matrix room link #10632
Fixed
- Fix player audio focus not respecting mute #10275
- Fix downloads of streams with missing
MediaFormat
#10165 - [YouTube] Fix extraction of age-restricted music videos TeamNewPipe/NewPipeExtractor#1108 #10440
- Fix restoring software license dialog #10436
- Fix inconsistency between user interaction and database commit order when re-adding videos to a playlist #8248
- Fix playing SoundCloud songs under some conditions: now OPUS HLS streams are considered as unplayable, and thus other streams are preferred #10579
- Fix app not responding, background app crashes and issues with starting the player #10578
- Fix some null pointer exceptions #10576 #10577
- Fix custom filename replacement character being interpreted as regex and crashing the app #10489
- Fix notifying about old "new" streams #10494
- Fix channel avatar not loading correctly sometimes #10581
Development
- Simplify
MainActivity.tabSelected(MenuItem)
#10360 - Image minimizer: replace
Number.toFixed(0)
withMath.floor()
#10377 - Update miscellaneous libraries #10234 #10244
- Improve the download helpers using the Java 7 NIO API. #10248
- Fix memory leaks and add documentation #10394
- Replace
MathUtils.clamp
with KotlincoerceIn
#10224 - Bump AGP to 8.1.1 #10428
- Improve codequality #10435
- Update extractor and remove
DeobfuscateException
handling #10440 - Add workflow "PR size labeler" to label PRs based on the number of changed lines #10170 #10447
v0.25.2
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
⚠️ Important fixes ⚠️
-
[YouTube] Fixed the recent issue where videos would abort playing because of HTTP 403 errors TeamNewPipe/NewPipeExtractor#1084
The issue happened because YouTube is removing the effectiveness of the previous workaround (i.e. using player parameters of Stories and the start of the Shorts ones) used to get streams from the Android client.
⚠️ Like for the previous workaround, the new one used (which, at the moment of publishing the release, is the only known one) to fix the issue can break at any time.As stated in the changelog of 0.24.1, if you see this error again and you have the ability to block network requests to specific domains for apps on your device, you can block the
youtubei.googleapis.com
domain to work around this issue.However, this has a few downsides:
- the 720p video stream with audio (used for external players) will be not available on musical contents;
- the 48kbps M4A audio stream and the 144p 3GPP video stream will be not available;
- the rewind duration of livestreams will be limited to 30 seconds at most, instead of 1 hour.
-
Some users reported player crashes or black screen on some devices, especially Android TVs. In some cases this was caused by media tunneling not being properly implemented by the manufacturer.
- Such feature now is disabled by default on more known unsupported devices! #10122
- In case you still experience similar issues, try to manually disable media tunneling from
Settings -> Video and audio -> ExoPlayer settings -> Disable media tunneling
, and report to us if your device needs to be blacklisted automatically. You may want to try the otherExoPlayer settings
switches, too.
⚠️ Known issues/regressions which are not fixed with this update ⚠️
DO NOT OPEN NEW ISSUES FOR THEM BUT FOLLOW THE LINKED ONES INSTEAD!
- [YouTube] No streams are returned in some playlists: YouTube returns an unsupported UI by the extractor when there are only shorts in a playlists: see TeamNewPipe/NewPipeExtractor#1077 more details.
- Player notification actions set from app player notification settings are not used on Android 13 and above: this is related to targeting Android 13/API 33 or higher: apps cannot completely personalize media notifications: see #9764 for more details.
Changelog
This version also includes the changes from NewPipe Extractor version v0.22.7.
New
- Allow setting volume and brightness gestures on any side of the screen #9708
- Add an ExoPlayer settings page #8875 #10122
- Add support for multiple audio tracks #9937 #10230
- Add support for displaying main-tabs at the bottom of the screen #9719
Improved
- Add whitelist to only retrieve supported YouTube itags/streams #9748
- [YouTube] Improve download speed #9948
- [PeerTube] Handle links to the instance “peertube.stream” #10141
- Fix a memory leak in the player #10232
- Disable media tunneling by default on more known unsupported devices #10122
Fixed
- [PeerTube] Fix uploader and subchannel avatars being swapped and disable loading thumbnail message failure on content details page #10066
- Fix crash after feed update #10229
- Fix no video in player when switching to main player from playlist view #10195
Localization
- Update translations #10074
- Add new language ߒߞߏ / N'Ko (nqo) to the language chooser #10042
- Translate README into new languages and update a few translations #9421 #9897 #10240 #10250
- Add Uchinaguchi translation #10250
Development
- Remove jsoup files from APK #10004
- Update to Kotlin to 1.8.20 and AndroidX Core to 1.10 and switch to AndroidX's
PendingIntentCompat
#10021 - Upgrade Gradle and AGP from 7.x to 8.x and use Java 17 #10035 #10067
- Update ACRA to 5.10.1 and Checkstyle to 10.12.1 to fix a dependency vulnerability #10200
- Update screenshots #10213
- Add support for new GitHub assets URLs in image minimizer workflow & minimize images in PR descriptions #10166 #10233
- Add link to wiki page for APK download #10219
- Clean up
AlertDialog
s #10223 - Update LeakCanary library #10085 #10232
- Add database test for
SubscriptionManager
#8456 - Update AndroidX Room library #10235
- Use Okio 3.4.0 explicitly to fix a vulnerability #10281
v0.25.1
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
⚠️ Known issues/regressions which are not fixed with this update ⚠️
DO NOT OPEN NEW ISSUES FOR THEM BUT FOLLOW THE LINKED ONES INSTEAD!
- Player notification actions set from app player notification settings are not used on Android 13 and above: this is related to targeting Android 13/API 33 or higher: apps cannot completely personalize media notifications: see #9764 for more details.
- Crash when playing content in fullscreen on some devices: our usage of the ExoPlayer library does not correctly handle rendering to a different surface than the starting one and crashes when trying to switch to fullscreen. See #9023 for more details and workarounds.
- [YouTube] Trends are not shown sometimes and
No videos
are shown in this case: YouTube is A/B testing a new trends UI which completely reworks what data is sent and how it is displayed. This new structure is currently not supported by the extractor. See TeamNewPipe/NewPipeExtractor#1046 for more details.
Changelog
This version also includes the changes from NewPipe Extractor version v0.22.6.
New
- Handle duplicate streams in the "Add to playlist" dialog #9538
- Larger channel cards in search results #9728
- Add an option to ignore hardware media button events #9746
- Add option to remove partially watched videos from the 'Whats new' feed #9747
- Add button to remove duplicates from playlist #9707
Improved
- Reduce the size of thumbnails on big screens to fit more grid columns #9858
- Make UI behavior for playback information display more consistent #8180
Fixed
- Orientation is locked if there is no sensor for it #9693
- Fix crash when clicking on an empty comment #9777
- [Android 11+] Correctly open URLs in browser and fix opening downloads and external players #9850
- Fix playlist streams progress bar size in card mode #9769
- Fix erroneous updates of playlist thumbnails #9755
- Revert "Use
WindowCompat
" #9812
Localization
Development
v0.25.0
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
New
- Show toast when no updates are available #8668
- Show subscriber count on video details page #9173
- Download items from the long press menu of queue items #9502
- Allow permanently setting a playlist thumbnail #9523
- Add long press action on hashtags and web links in descriptions #7725
- New card view mode with full width thumbnails #9310
Improved
- Remove the redundant/overlapping toast "Copied to clipboard" for Android 13+ #8961
- Make mini-player close button area larger #8743
- Use smoother bitmap downscaling for thumbnails #8686 #9479
- Rename "Help" to "Fast mode" #9500
- Add hint to improve discoverability of subscription import #9501
- Disable night theme selection if auto theme is not used #9488
- Set
compileSdk
andtargetSdk
to 33 (Android 13) #9306 #9671 #9696 #9726 #9758 - Seeking no longer pauses the played stream #9496
- Add icon for "Play All" #9568
- Add language suffix to downloaded subtitle filenames #9499
- Check availability of Samsung DeX only on Samsung devices #9619
- Add "What's New" to the default main page tabs #9664
- Change "What's New" icon #9678
- Make channel images in grid lists bigger #9555
- Change "Chapters" icon #9691
- [YouTube] Add support for live links #9725
Fixed
- Fix persistent hover overlay when in desktop/DeX mode or using a mouse/non-touch input #8316
- Only show "Enqueue next" when in the middle of the queue #8883
- [PeerTube] Remove dead Privacy Tools instance #9504
- Fix crash when click "Add to playlist" while the current list is still loading #9521
- Allow using background player when there are no separate audio streams #9562
- Improve screen rotation handling in Open action menu #9135
- Ask for permission when enqueuing in a popup #9653
- Fix removing watched videos from playlist includes currently playing #9445
- Fix displaying multiple empty playlists #9642
- Fix background player stops working when enqueueing playlist at different index #9706
- Fix link clicking and ellipsizing of comments #9631
Localization
Development
- Make
PendingIntent
s immutable on Android 6.0 and later #9333 - Use
Locale.forLanguageTag()
#8870 - Forbid wrong
@Nullable
and@NotNull
annotation imports #9474 - Set image-minimizer to specify image width #9471
- Update Sonarqube to 3.5 #9480
- Use
Math.floorDiv()
#8810 - Use
SparseArrayCompat
#8895 - Update LeakCanary to 2.9.1 #9306
- Update Desugaring to 1.1.8, ACRA to 5.9.7 and Android Gradle Plugin to 7.3.1 #9481
- Refactor
VideoDetailFragment
#8847 - Refactor
VideoPlayerUi
#9159 - Update RxJava to 3.1.5 and RxAndroid to 3.0.2 #9520
- Use
ListAdapter
inNotificationModeConfigAdapter
#8841 - Use new NPE UTF8 Utils methods #8769
- Clean up
Optional
-related code #9285 #9663 - Remove Runnable variables for Handlers #8886
- Use
WindowCompat
#8894- If you encounter any issue with system UI not behaving properly, this PR will be reverted
- Update
desugar_jdk_libs
to 2.0.2 and Android Gradle Plugin to 7.4.0 (which requires Android Studio Electric Eel) #9686 #9743 - Fix reproducible builds #9709