NewPipe Versions Save

A libre lightweight streaming front-end for Android.

v0.27.0

1 day ago

:warning: Important fixes :warning:

  • [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.

    :information_source: 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!

:warning: Known issues/regressions which are not fixed with this update :warning:

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 :warning: 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 :warning:
  • 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

  • Update translations #10890
  • Use GitHub markdown to emphasise warning in README #10724

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 action 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.0

4 months ago

:arrow_right: :arrow_right: :arrow_right: Read the blog post :arrow_left: :arrow_left: :arrow_left:

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
  • 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 ListInfoFragments depending on Info 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) with Math.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 Kotlin coerceIn #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

8 months ago

:arrow_right: :arrow_right: :arrow_right: Read the blog post :arrow_left: :arrow_left: :arrow_left:

:warning: Important fixes :warning:

  • [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.

    :warning: 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 other ExoPlayer settings switches, too.

:warning: Known issues/regressions which are not fixed with this update :warning:

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 AlertDialogs #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

1 year ago

:arrow_right: :arrow_right: :arrow_right: Read the blog post :arrow_left: :arrow_left: :arrow_left:

:warning: Known issues/regressions which are not fixed with this update :warning:

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

  • Update translations bb57f9cc9dda7fe080c653926819e6f2b09279b9 03fd2869564dfd7cc5832dde438696add0dd153b ec974a2b3da128354d1c608a107a4cd9122ac4c5

Development

  • Update to ExoPlayer 2.18.5 #9847 #9890

v0.25.0

1 year ago

:arrow_right: :arrow_right: :arrow_right: Read the blog post :arrow_left: :arrow_left: :arrow_left:

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 and targetSdk 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

  • Update translations 1d53389ca9a2cdf3eff152d7118bc8152e25aaac, #9522, #9596, #9688
  • Add Odia language to language selector #9651

Development

  • Make PendingIntents 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 in NotificationModeConfigAdapter #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

1 year ago

:arrow_right: :arrow_right: :arrow_right: Read the blog post :arrow_left: :arrow_left: :arrow_left:

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 by UU at the beginning of the ID and use the resulting ID as a playlist ID (append this ID to a playlist URL like https://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 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.
  • [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

1 year ago

:arrow_right: :arrow_right: :arrow_right: Read the blog post :arrow_left: :arrow_left: :arrow_left:

New

  • :warning: Bump minSdk 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

  • Make some much needed changes to the README #8372
  • Fix lang code for Chinese Simplified #8549

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

v0.23.3

1 year ago

Fixed

  • [YouTube] Fix infinite loading when trying to play any video TeamNewPipe/NewPipeExtractor#912
  • [YouTube] Fix throttling on some videos TeamNewPipe/NewPipeExtractor#882

Development

  • Upgrade the jsoup library to 1.15.3, which includes a security fix #8880 TeamNewPipe/NewPipeExtractor#911

v0.23.2

1 year ago

Fixed

  • [YouTube] Fix "Could not get any stream" error when trying to play any video, thanks to @Theta-Dev! TeamNewPipe/NewPipeExtractor#891
  • [YouTube] Fix replacement of video and audio streams by a video saying The following content is not available on this app TeamNewPipe/NewPipeExtractor#890