Releases: TeamNewPipe/NewPipe
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
v0.24.1
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
New
- Add monochrome icon #8987
- Add link to FAQ in the app #9164
- Add an "Open in browser" button on error panel #9180
- Add option to display channel groups as list instead of grid #9207 #9298
- Long-click on stream segment to share timestamped URLs (for YouTube only) #9203
- [YouTube] Support handles #9291 TeamNewPipe/NewPipeExtractor#964
Improved
- Add play queue button to video details fragment #8946 #9109
- Show "Hold to enqueue" tip in local playlists #9196
- [YouTube] Add support for attributed text description TeamNewPipe/NewPipeExtractor#953
- [YouTube] Support all channel usernames TeamNewPipe/NewPipeExtractor#964
Fixed
-
Fix potential cast exception in comments text #9065
-
Fix
DownloadDialog
crash on screen rotation #9079 -
Fix crash when clicking download and quitting the history fragment #9143
-
Fix job for removing watched streams from playlist not executing only once #8706
-
Fix duplicate videos in feed group "All" #9230
-
[YouTube] Fix extraction of videos in channels and in feeds when not using dedicated mode (RSS feeds) TeamNewPipe/NewPipeExtractor#944
⚠️ Due to the separation of shorts and livestreams (including VODs) of most channels into separate tabs, these contents will be not available until channel tabs support is added.However, you can use workarounds until this support is added:
- For feeds, use the dedicated method to fetch channels (a.k.a. RSS feeds);
- For channels: you can use the uploads playlist of a channel to get all its public videos: take a channel ID (not a username or a handle), replace
UC
byUU
at the beginning of the ID and use the resulting ID as a playlist ID (append this ID to a playlist URL likehttps://www.youtube.com/playlist?list=
and then open this URL in NewPipe). These playlists may be not available on some YouTube "system" channels.
-
[YouTube] Fix 403 HTTP errors when playing sometimes videos in some countries by using a workaround TeamNewPipe/NewPipeExtractor#960
⚠️ The workaround can break at any time. 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 theyoutubei.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.
-
[YouTube] Fix extraction of author and video count of playlists with their new metadata format TeamNewPipe/NewPipeExtractor#958
⚠️ With the new metadata format, no author thumbnail is returned anymore. -
[SoundCloud] Fix tracks in incorrect order on playlists TeamNewPipe/NewPipeExtractor#939
-
[SoundCloud] Fix getting more comments TeamNewPipe/NewPipeExtractor#943
Localization
- Add new localizations (Icelandic, Latvian, Malayalam) to language selector #9179
- Update translations #9092, #9179, #9256
- Remove empty localizations #9256
Development
- Use
LinkifyCompat
#8934 - Utilize
useSimpleSummaryProvider
attribute #9011 - Improve
FeedGroupDialogViewModel
factory #8734 - Update Android Gradle Plugin to 7.3.0 #8986
- Use range-limiting methods in more places #8747
- Use Okio's
ByteString
for download checksums #8767 - Calculate search score using streams #8739
- Use
TextViewCompat.setCompoundDrawableTintList()
#8655 - Update AppCompat to 1.5.1 and compileSdk to 32 #8768
- Update PrettyTime from 5.0.3 to 5.0.6 to include new localizations made by NewPipe contributors #9272
- Update NewPipe Extractor #9291
v0.24.0
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
New
⚠️ BumpminSdk
to 21 (Android 5 Lollipop) and drop support for Android 4.4 KitKat #7613- Add Download entry to long-press menu #8397
- Add option to hide future videos in feed #8545 #8966
- Add Share menu item to local playlists #8542
Improved
- Crop the notification thumbnail in 1:1 mode instead of stretching it #8533
- Make thumbnails'
scaleType
fitCenter
#8573 - Improve image placeholders #8530
- Removed the "(beta)"-tag from services #8637
- Refactor player and extract UI components #8170 #8661 #8678 #8731
- Sort tags case-insensitively #8709
Fixed
- Fix wrong image used as a placeholder for channels avatars #8676
- Fix various issues with player notification #8678 #8899
Localization
Development
- Run CI on all release branches #8565
- Clean up proguard file #8468
- Update ExoPlayer to 2.18.1 #8536 #8687
- Specify used ExoPlayer libraries #8469
- Use minimum required permissions for GitHub workflows #8569
- Checkstyle assign on same line #8601
- Use
ViewCompat.setBackgroundTintList()
#8633 - Update some misc libraries #8475
- Use stream sorting #8635
- Use Java 9 collection factories:
List.of()
,Set.of()
,Map.of()
#8631 #8679 - Use range-limiting method
MathUtils.clamp()
#8651 #8737 - Use Kotlin IO extensions #8648
- Remove some unnecessary methods #8663 #8740
- Remove deprecated method calls in
FocusAwareCoordinator
#8670 - Deduplicate SQL queries to get feed streams #8621
- Update OkHttp to 4.10.0 #8624
- Update Lifecycle to 2.5.1 #8683
- Update AndroidX Fragment to 1.4.1 #8691
- Update Google Material to 1.6.1 #8692
- Use
Throwable.stackTraceToString()
#8701 - Update AppCompat to 1.4.2 #8667
- Use
WindowMetrics
API #8656 - Update AndroidX Room to 2.4.3 #8716
- Remove uses of
setBottomSheetCallback()
#8669 - Refactor
LicenseFragmentHelper
#8682 - Make
OnClickGesture
an interface #8721 - Reduce
View.kt
size #8708 - Use
toArray()
with zero-length arrays #8724 - Use
Comparator
factory methods #8728 - Use
Collectors.joining()
#8738 - Update FilePicker to our custom fork and disable Jetifier #8666
- Add FAQ entry to the template checklists #8822
- Use
ListAdapter
for search predictions #8719 #8972 - Update Gradle to 7.5.1 #8751
- Remove extra whitespace from issue and PR templates #8755
- Clarify that span shouldn't be in translated READMEs #8754
- Keep strong references to Picasso notification icon loading targets #8677
- Create media session UI and fix player notification #8678