NewPipe 0.21.6 released: Deleted channels, SAF (for real!) and hashtags!

post image

Today brings you 0.21.6, and hopefully much joy. We made slight improvements to the UI of our app: You now get notified about deleted channels upon opening them, or when refreshing your feed, and you can instantly search hashtags given in video descriptions. NewPipe also properly supports the Storage Access Framework, which allows you to save your downloads to an external storage medium (such as an SD Card) if you so desire!

New

You can now tap on hashtags in the stream description, which will execute a search with that hashtag. This was added by @TiA4f8R.

@mauriciocolli introduced a new button which lets you hide videos you’ve already played within a feed! Simple in theory, but quite complex in execution. Eventually, @Stypox took over the PR and finished ironing out the kinks, so enjoy your neat feeds devoid of previously seen videos!

@Dakkaron added a new Appearance setting to manually enable or disable Tablet Mode. So if you have an Android TV which NewPipe mistakenly considers a phone or vice-versa, you can fiddle with this setting, so it works to your liking.

Improved

Full SAF (Storage Access Framework) support is finally here! This makes NewPipe future-proof with respect to data storage and retrieval. Why? In Android 10, Google introduced a security feature known as Scoped Storage, which only lets an app see the specific folder or folders in the filesystem which pertain to it, and nothing else (such as your private data from another app). This requires SAF to be enabled. If that wasn’t enough, SAF enables storing your downloads on external storage! This massive undertaking was initiated over a year ago by @wb9688, and was then taken on by @Stypox, who improved upon it. Thanks to both of them for getting this implemented! SAF will automatically be enabled for you if you have Android 6 and above, and is now the only option on Android 10 and above. Meanwhile, Kitkat users can only use the native file picker. Note: SAF is still disabled on Fire TV due to a Fire OS GUI bug.

NewPipe has learned to detect deleted channels, both upon opening them from the Subscriptions list, and when refreshing a feed containing such channels! Upon encountering such channels during a refresh, the app will notify you and prompt you to delete them. This functionality required a small addition to NewPipe Extractor as well. @TobiGr took care of both sides, with help from @Stypox regarding implementation. So no more snackbar errors every time you update a feed which has deleted channels! Moreover, opening a terminated channel will show you a proper error message explaining why the channel was terminated, instead of a generic error.

Everyone who enjoys reading software licenses (who doesn’t?!) and does this inside the NewPipe app can now explore the websites of these licenses using the new “Open website” button in the license pop-up easily, thanks to @Peyman-hme.

@TiA4f8R upgraded the Share Sheet on Android 10 and above to show the title of the media/channel/playlist being shared. Some Android variants don’t provide the “Copy to clipboard” option in the Share Sheet. So @Abanoub8 added the ability to long-press the Share button below the player, which copies the media URL directly into your clipboard.

@TiA4f8R also fixed video timestamps in the description so that they open in the popup player (just like timestamps in comments), instead of trying to open in another app entirely, or even in a restarted instance of NewPipe (which led to a loss of browsing session history/backstack).

@B0pol updated the list of Invidious instance URLs that can be opened by NewPipe. He also added Piped URLs to the same list. For those who don’t know, Piped is a great alternative YouTube front-end similar to Invidious, but based on the NewPipe Extractor instead! The biggest advantage to having this additional option is that if Invidious isn’t working for you, Piped probably will, and vice-versa! Piped is developed by the awesome @FireMasterK, who you might recognise from previous blog posts and contributions to NewPipe.

@Stypox slightly improved the layout of streams in the Play Queue.

Fixed

@B0pol fixed the extraction of some age-restricted videos on YouTube.

@evermind-zz plugged a memory leak by dismissing any user choice dialogues before exiting an activity.

@Redirion fixed a crash that occurred when NewPipe connected to certain Bluetooth devices, such as car audio systems.

Translation

@chr56 fixed Simplified Chinese plurals in the app. Thanks!

Also, a huge thanks to all the other translators who keep the many languages of this app up to date every release.

Nerd Talk

@TobiGr added the streamPosition attribute for comments. This isn’t meant for NewPipe, but for other users of the NewPipe Extractor library who might wish to implement timestamped comments for SoundCloud.

@FireMasterK added dependabot to the Extractor repo, which is a GitHub bot that automatically opens PRs to update dependencies one by one, saving the maintainers some manual work. It has already proven useful by updating a few dependencies:

  • Bump gson from 2.8.6 to 2.8.7
  • Bump rhino from 1.7.12 to 1.7.13
  • Bump spotbugs-annotations from 4.0.2 to 4.2.3

@TobiGr updated the hardcoded client ID for SoundCloud.

@XiangRongLin removed personal IPv4 addresses from the automatically generated mock tests and ensured that they won’t slip in again.

Since NewPipe uses Java 8 now, @Isira-Seneviratne went ahead and converted the abstract class DAOs (data access objects) to interfaces (Read: coder did some coding magic, now things are better somehow, don’t ask us why).

@Imericxu improved the app code by resolving some Checkstyle warnings related to Tabs (Trending, Subscriptions, etc.).

@Isira-Seneviratne updated the AndroidX Room library to v2.3.0. This also allowed him to migrate Converters (utility functions which provide easy conversion from one data type to another) to Kotlin.

@danielmbutler replaced the System.exit function calls used to close NewPipe with getActivity.finishAffinity(). Now instead of straight up killing the app process in one go, the OS will let the app close gracefully by allowing it to call all its functions to stop activities in the correct order, and free up memory gradually. This improvement was suggested by @Redirion.

@TacoTheDank updated the AndroidX Fragment library from version 1.2.4 to 1.3.4, and changed related app code accordingly. Because there were numerous breaking changes made to the library between these versions, this accidentally introduced a regression where NewPipe would crash upon tapping the Search button. This was eventually fixed by @Douile, who also added a null check to prevent similar crashes in the future.

@TacoTheDank also annotated some overridden methods and parameters as NonNull, as suggested by the code linter, improving the code quality.

@B0pol refactored a couple of lines of code, as suggested by Android Studio.

@XiangRongLin temporarily disabled the test-android GitHub CI job because it wasn’t working properly on macOS.

@opusforlife2 added a section for screenshots/screenrecords in the Pull Request template, to be used for easy before/after comparison if developers make UI changes. This improvement was suggested by @B0pol.

@TobiGr fixed the invalid CONSENT cookie value. This was causing parsing failures on YouTube.

Where to get this brand-new version

NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page.

If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.)

If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following:

Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page!

Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself.

If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts.

See also:  pinned  release

Let us know what you think!

Please read our rules before leaving a comment!