2
I Use This!
High Activity

News

Analyzed 1 day ago. based on code collected 1 day ago.
Posted over 3 years ago
By now, most of you must be aware of the youtube-dl repo on Github being suspended because of a DMCA notice. Team NewPipe member @TheAssassin has written a detailed analysis of the situation. You can find the article on his blog! Update ... [More] (2020-11-24): youtube-dl’s repository has been restored, thanks to the EFF. @TheAssassin posted an update, explaining what happened in the meantime, and reviewing the situation again. [Less]
Posted over 3 years ago
By now, most of you must be aware of the youtube-dl repo on Github being suspended because of a DMCA notice. Team NewPipe member @TheAssassin has written a detailed analysis of the situation. You can find the article on his blog! Update ... [More] (2020-11-24): youtube-dl’s repository has been restored, thanks to the EFF. @TheAssassin posted an update, explaining what happened in the meantime, and reviewing the situation again. [Less]
Posted over 3 years ago
So this is a “hot” fix, as they say. Since the previous post was so long (too long) this will be positively tiny in comparison. Let’s dive right into it. YouTube Decryption error (“Could not load decryption code for the Youtube service.”): ... [More] When you try to open video details for any video, you could randomly encounter this error, because YouTube doesn’t send over the relevant data. (YouTube is a bit moody like that.) We haven’t caught the culprit yet, so for now we just retry a few times to bypass this error. Search error (“Could not get ytInitialData”): When you enter a search term and tap enter, sometimes no search results are shown, and an error snackbar is shown at the bottom instead. (Maybe not moody, but shy?) YouTube sometimes provides data in a slightly different form, which NewPipe can now understand and process correctly. SoundCloud Failing SoundCloud test: A reference account that NewPipe runs internal tests on changed its name at some point (sneaky sneaky!), causing those tests to fail. The name has been updated. Parsing of trailing slash: URLs which have a forward slash at the end are not supported consistently by SoundCloud, so NewPipe now removes it before using the URL for further processing. That’s it! Enjoy your day. [Less]
Posted over 3 years ago
So this is a “hot” fix, as they say. Since the previous post was so long (too long) this will be positively tiny in comparison. Let’s dive right into it. YouTube Decryption error (“Could not load decryption code for the Youtube service.”): ... [More] When you try to open video details for any video, you could randomly encounter this error, because YouTube doesn’t send over the relevant data. (YouTube is a bit moody like that.) We haven’t caught the culprit yet, so for now we just retry a few times to bypass this error. Search error (“Could not get ytInitialData”): When you enter a search term and tap enter, sometimes no search results are shown, and an error snackbar is shown at the bottom instead. (Maybe not moody, but shy?) YouTube sometimes provides data in a slightly different form, which NewPipe can now understand and process correctly. SoundCloud Failing SoundCloud test: A reference account that NewPipe runs internal tests on changed its name at some point (sneaky sneaky!), causing those tests to fail. The name has been updated. Parsing of trailing slash: URLs which have a forward slash at the end are not supported consistently by SoundCloud, so NewPipe now removes it before using the URL for further processing. That’s it! Enjoy your day. [Less]
Posted over 3 years ago
Hey there, NewPipers! It’s been quite long since the last release. But for good reason: This release comes with quite major changes to the way NewPipe works, visibly as well as under the hood. Reworked UI Embedded Playback in Portrait orientation ... [More] Videos will now play in the details page when in portrait orientation. By default, playback will start automatically upon opening. To accommodate this change and make it more palatable for users who prefer to initiate video playback themselves (“How dare you start the video without asking me!” shakes fist), there is a new ‘Autoplay’ setting to control playback. Autoplay will be turned on by default for Wi-Fi, but you can always turn it off completely if you want. Correct Video Orientation The gist: The player now automatically assumes the correct orientation when you enter full screen. The details: In the previous version, if auto-rotate was off, the main video player would just play videos in whatever orientation you last used. You would have to manually rotate the screen if you encountered a video with the opposite orientation. No more! There is now a full-screen button which replaces the orientation switch button, and it is smart. It will detect if the video is landscape or portrait, and will ensure the player is in the correct orientation right when you enter full-screen! How’s that for convenience and usability? Not just that; if auto-rotate is enabled, rotating the device to landscape will automatically play the video in fullscreen. Minimized Player The gist: A minimized player that lets you browse NewPipe during playback, and stores your opened videos in a temporary queue. The details: In the previous version, you could either watch a video in the main player or browse NewPipe. No browsing while watching. And you sort of had to keep track of where you were in terms of navigation in the app. (We’ve all been down the “Related Videos” rabbit hole.) Now you can swipe down on the video in the embedded player, or swipe down from the title area when in full screen, to collapse the video to a ‘mini player’. You can pause and resume the video from the mini player, or close the video entirely. Moreover, if you open, say, ten video pages in a row, the mini player will keep all of those pages in memory until you close it (kind of like a browser tab). So you can pause a video, browse Newpipe, queue up a few more, and resume the video, all without losing your place. No more having to finish a video before browsing mindlessly – yay distractions! Thumbnail progress bar Look at this screenshot! Nice, isn’t it? You get this shiny new progress bar underneath the thumbnail when you play a video in the background or pop-up players. It updates in real time, gets a little counter and is coloured red - it’s great, really. The Unified Player The gist: The three players (main, pop-up, and audio), which were completely separate earlier, have been welded on top of one common player service so they can share the current stream state. The details: Up until now, NewPipe had three separate players: main, pop-up and audio. All three had separate stream states and separate playing queues. When you switched from one player to another, the old player and its queue closed in the background, while a new player and queue were created, after which they took over playback. If that sounds complicated and cumbersome, that’s because it is. Now, the code has been rewritten so that all players run using one common service. When you switch from one player to another, this service remains running, preserving the stream state, and the new player just picks up from where the old one left off. Less work for the app, which means faster switching between players! Some side effects of this change: There is only one common queue now. So no matter how you enqueue a video, it will be added to the same queue instead of creating a new one. We would like feedback on whether this change is welcome or not. The app will always show a notification when a stream is playing. This is so that Android doesn’t kill playback whenever it feels like it. All of what you’ve read above was made possible by the lean and mean coding machine, the one and only - (drumroll) - @avently! Seriously, you should all sacrifice your first born child in his name. Or just say thank you. Whatever works out for you, you boring people. Try to be more adventurous in life. On a serious note, this was a massive, massive change to not only the code, but also the app’s workflow, so this PR was tested, reviewed and modified lots of times, over a long period of time, before it was allowed to see the light of day with this release. A huge thank you to you, @avently, for having the patience and dedication to keep adding features and bug fixes until everyone was satisfied! A different person probably would have gone insane. And a big thank you to the maintainers for doggedly reviewing this gigantic PR repeatedly. Those ~6600 additions and ~5600 removals must have felt intimidating! Naturally, since this was such a massive change, several bugs also slipped through. But @avently, with the help of @blackbox87, @Stypox and @TobiGr fixed a large number of them. More will be addressed by further point releases. The Notification is dead, long live the Notification! The gist: New notification! Very colour-y! Very button-y! The details: The old notification was based on a very old API (‘RemoteView’, which was pre-Lollipop!). Now we have a new one, which should be familiar to you if you’ve used other popular media apps. Does the cover art - based theming ring a bell? Enter the Age of the MediaStyle notification: Pros: 5 action buttons, customisable from the new Notification menu 3 customisable action buttons for the compact notification Android 8 and above: Theme matches the cover art Android 10 and above: Seekbar right in the notification Android 11 support! The code is easier to maintain Con: Android 9 and below: Loss of the progress bar. Do the pros outweigh the con? (Hint: This is a rhetorical question.) Some background: The old notification API doesn’t work on Android 11. Users don’t see a notification at all. So the newer API had to be used no matter what. Since maintaining the code for two notification styles would double the burden, the old one has been removed entirely. This cool contribution was brought to us in its original form by @cool-student. Sadly, we couldn’t get in touch with them when we were ready to focus on this PR, so @wb9688 and @Stypox swooped in to save the day! @wb9688 updated the code to conform to our standards and coding style, and @Stypox did the (painstaking!) work of rebasing the code after the unified player PR was merged into the development branch. Ultimately, @Stypox took over the responsibility for this PR. He updated and polished the UI, fixed bugs, got everyone and their grandfather to test the changes, and pulled us to the finish line! Improvements We are not done yet with what this release brings you (you may want to take a few sips of that beverage now): If you use an environment where resizing an app is possible, NewPipe can do this now as well. @TobiGr If you have ever encountered the “Unsupported URL” toast when sharing to NewPipe, it is handled better now. You can choose to further share to another app, or open it in a browser. @Stypox NewPipe doesn’t generate a timestamped link when sharing a live stream anymore. @nmurali94 The playlist header layout has been improved: the alignment on the sides is consistent now and longer headings can fit themselves on two lines instead of just one. @Stypox Typing in the search bar now works even when internet connection is lost or turned off. Earlier, NewPipe would interrupt by closing the keyboard on every letter/word input and try to send the search query to the service, showing a useless network error each time. Now it waits until you tap the search button. @Stypox In order to save some of that valuable mobile data, you were already able to turn off video thumbnails and profile pictures for comments. Now even the black placeholders which replaced them are gone and comments can comfortably take up the space left behind. @4D17Y4 The ‘Minimize on app switch’ setting has been changed to switch to the background player by default, to accompany the unified player changes above. @TobiGr The ‘Remember popup size and position’ setting has a less redundant name now. @TobiGr It is 2020, everyone. Really, the only good change that came about this year is higher resolution. The default video resolution has been set to 720p at 60FPS, and 480p for the pop-up player. @B0pol NewPipe now remembers what kind of media you downloaded the last time, and will auto-select it when you hit download on a new video. @vmazoyer “Autoplay” has been changed to “Auto-queue” in the video page. This is to prevent confusion with the new “Autoplay” setting which controls whether videos automatically start in the embedded player. @opusforlife2 Translations Apart from the language improvements mentioned above, some other interesting localization changes happened in this release. @comradekingu, a frequent contributor to and language checker of NewPipe and other open source projects, has once again taken a close look at our strings. There was, as always, a lot of room for improvement. Our wonderful translators rushed to help and immediately implemented his suggestions. We are also happy to provide new localizations in this release: Sardinian, Bengali, Portuguese (Portugal), Neapolitan and Berber. If you are missing a translation or think a phrase needs adjustment, head over to Weblate and help us improve NewPipe’s translation even more! Fixes “Did you mean” and “Showing results for” now have a dark text colour in the light theme, so they can be seen without squinting. @TobiGr Sometimes error reports did not contain the actual code that caused the error. This is now fixed. @Stypox NewPipe would crash if it encountered an empty comment. No more! (Why would anyone leave empty comments, though?) @Stypox If you added a local playlist as a main page tab, playing any video in it would cause a crash. Fixed now. @wb9688 If you open the app in the Taqbaylit language, its called Taqbaylit now and not Tamaziɣt Taqbaylit. @BoFFire The license pop-up doesn’t disappear anymore upon rotation. @nmurali94 If you download a file, delete it from your file explorer, then redownload it without restarting NewPipe, it doesn’t cause a crash anymore. @budde92 Some redundant code related to subtitles was removed. @mhmdanas When auto-queue is enabled, NewPipe tries to add a stream to the queue the moment you open a video. But if there happen to be no video suggestions on that page, it causes a crash. This has been fixed. @wb9688 Development Development. Where all the magic which keeps this app running happens. It saw some improvements in this release (Warning: Nerd talk ahead) : YouTube serves several stream types: progressive HTTP, OTF and DASH. The app can only play the first, but the extractor can fetch both progressive HTTP and OTF. So the extractor will now ignore OTF streams instead of showing them but not being able to play them (endlessly spinning loading indicator, know that you are hated by one and all). This has been a major point of inconvenience for a lot of users (and us, too!) so we’re eager to mitigate the problem until a proper fix sometime later, which will add DASH support. (@wb9688) A Checkstyle rule was added so it would show an error when a local variable which could be final wasn’t declared as such. (@XiangRongLin) A library we use, PrettyTime, has been updated to a newer version so that a workaround can be removed from NewPipe’s code. We get a performance improvement as a bonus! (@B0pol) Numbers and uppercase letters are now allowed in the application ID. (@Stypox) Contributors need to discuss their contributions now prior to opening a PR. (@gkeegan) Some deprecations as well as a lot of code cleanup happened. (@TacoTheDank) The code now prevents the YouTube website from accessing the available Java packages from NewPipe’s parser. This removes a possible attack surface. (@wb9688) 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 release 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 you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Content settings menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post 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. Now that you’ve 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 send them in the comments here and someone will reply to you. [Less]
Posted over 3 years ago
Hey there, NewPipers! It’s been quite long since the last release. But for good reason: This release comes with quite major changes to the way NewPipe works, visibly as well as under the hood. Reworked UI Embedded Playback in Portrait orientation ... [More] Videos will now play in the details page when in portrait orientation. By default, playback will start automatically upon opening. To accommodate this change and make it more palatable for users who prefer to initiate video playback themselves (“How dare you start the video without asking me!” shakes fist), there is a new ‘Autoplay’ setting to control playback. Autoplay will be turned on by default for Wi-Fi, but you can always turn it off completely if you want. Correct Video Orientation The gist: The player now automatically assumes the correct orientation when you enter full screen. The details: In the previous version, if auto-rotate was off, the main video player would just play videos in whatever orientation you last used. You would have to manually rotate the screen if you encountered a video with the opposite orientation. No more! There is now a full-screen button which replaces the orientation switch button, and it is smart. It will detect if the video is landscape or portrait, and will ensure the player is in the correct orientation right when you enter full-screen! How’s that for convenience and usability? Not just that; if auto-rotate is enabled, rotating the device to landscape will automatically play the video in fullscreen. Minimized Player The gist: A minimized player that lets you browse NewPipe during playback, and stores your opened videos in a temporary queue. The details: In the previous version, you could either watch a video in the main player or browse NewPipe. No browsing while watching. And you sort of had to keep track of where you were in terms of navigation in the app. (We’ve all been down the “Related Videos” rabbit hole.) Now you can swipe down on the video in the embedded player, or swipe down from the title area when in full screen, to collapse the video to a ‘mini player’. You can pause and resume the video from the mini player, or close the video entirely. Moreover, if you open, say, ten video pages in a row, the mini player will keep all of those pages in memory until you close it (kind of like a browser tab). So you can pause a video, browse Newpipe, queue up a few more, and resume the video, all without losing your place. No more having to finish a video before browsing mindlessly – yay distractions! Thumbnail progress bar Look at this screenshot! Nice, isn’t it? You get this shiny new progress bar underneath the thumbnail when you play a video in the background or pop-up players. It updates in real time, gets a little counter and is coloured red - it’s great, really. The Unified Player The gist: The three players (main, pop-up, and audio), which were completely separate earlier, have been welded on top of one common player service so they can share the current stream state. The details: Up until now, NewPipe had three separate players: main, pop-up and audio. All three had separate stream states and separate playing queues. When you switched from one player to another, the old player and its queue closed in the background, while a new player and queue were created, after which they took over playback. If that sounds complicated and cumbersome, that’s because it is. Now, the code has been rewritten so that all players run using one common service. When you switch from one player to another, this service remains running, preserving the stream state, and the new player just picks up from where the old one left off. Less work for the app, which means faster switching between players! Some side effects of this change: There is only one common queue now. So no matter how you enqueue a video, it will be added to the same queue instead of creating a new one. We would like feedback on whether this change is welcome or not. The app will always show a notification when a stream is playing. This is so that Android doesn’t kill playback whenever it feels like it. All of what you’ve read above was made possible by the lean and mean coding machine, the one and only - (drumroll) - @avently! Seriously, you should all sacrifice your first born child in his name. Or just say thank you. Whatever works out for you, you boring people. Try to be more adventurous in life. On a serious note, this was a massive, massive change to not only the code, but also the app’s workflow, so this PR was tested, reviewed and modified lots of times, over a long period of time, before it was allowed to see the light of day with this release. A huge thank you to you, @avently, for having the patience and dedication to keep adding features and bug fixes until everyone was satisfied! A different person probably would have gone insane. And a big thank you to the maintainers for doggedly reviewing this gigantic PR repeatedly. Those ~6600 additions and ~5600 removals must have felt intimidating! Naturally, since this was such a massive change, several bugs also slipped through. But @avently, with the help of @blackbox87, @Stypox and @TobiGr fixed a large number of them. More will be addressed by further point releases. The Notification is dead, long live the Notification! The gist: New notification! Very colour-y! Very button-y! The details: The old notification was based on a very old API (‘RemoteView’, which was pre-Lollipop!). Now we have a new one, which should be familiar to you if you’ve used other popular media apps. Does the cover art - based theming ring a bell? Enter the Age of the MediaStyle notification: Pros: 5 action buttons, customisable from the new Notification menu 3 customisable action buttons for the compact notification Android 8 and above: Theme matches the cover art Android 10 and above: Seekbar right in the notification Android 11 support! The code is easier to maintain Con: Android 9 and below: Loss of the progress bar. Do the pros outweigh the con? (Hint: This is a rhetorical question.) Some background: The old notification API doesn’t work on Android 11. Users don’t see a notification at all. So the newer API had to be used no matter what. Since maintaining the code for two notification styles would double the burden, the old one has been removed entirely. This cool contribution was brought to us in its original form by @cool-student. Sadly, we couldn’t get in touch with them when we were ready to focus on this PR, so @wb9688 and @Stypox swooped in to save the day! @wb9688 updated the code to conform to our standards and coding style, and @Stypox did the (painstaking!) work of rebasing the code after the unified player PR was merged into the development branch. Ultimately, @Stypox took over the responsibility for this PR. He updated and polished the UI, fixed bugs, got everyone and their grandfather to test the changes, and pulled us to the finish line! Improvements We are not done yet with what this release brings you (you may want to take a few sips of that beverage now): If you use an environment where resizing an app is possible, NewPipe can do this now as well. @TobiGr If you have ever encountered the “Unsupported URL” toast when sharing to NewPipe, it is handled better now. You can choose to further share to another app, or open it in a browser. @Stypox NewPipe doesn’t generate a timestamped link when sharing a live stream anymore. @nmurali94 The playlist header layout has been improved: the alignment on the sides is consistent now and longer headings can fit themselves on two lines instead of just one. @Stypox Typing in the search bar now works even when internet connection is lost or turned off. Earlier, NewPipe would interrupt by closing the keyboard on every letter/word input and try to send the search query to the service, showing a useless network error each time. Now it waits until you tap the search button. @Stypox In order to save some of that valuable mobile data, you were already able to turn off video thumbnails and profile pictures for comments. Now even the black placeholders which replaced them are gone and comments can comfortably take up the space left behind. @4D17Y4 The ‘Minimize on app switch’ setting has been changed to switch to the background player by default, to accompany the unified player changes above. @TobiGr The ‘Remember popup size and position’ setting has a less redundant name now. @TobiGr It is 2020, everyone. Really, the only good change that came about this year is higher resolution. The default video resolution has been set to 720p at 60FPS, and 480p for the pop-up player. @B0pol NewPipe now remembers what kind of media you downloaded the last time, and will auto-select it when you hit download on a new video. @vmazoyer “Autoplay” has been changed to “Auto-queue” in the video page. This is to prevent confusion with the new “Autoplay” setting which controls whether videos automatically start in the embedded player. @opusforlife2 Translations Apart from the language improvements mentioned above, some other interesting localization changes happened in this release. @comradekingu, a frequent contributor to and language checker of NewPipe and other open source projects, has once again taken a close look at our strings. There was, as always, a lot of room for improvement. Our wonderful translators rushed to help and immediately implemented his suggestions. We are also happy to provide new localizations in this release: Sardinian, Bengali, Portuguese (Portugal), Neapolitan and Berber. If you are missing a translation or think a phrase needs adjustment, head over to Weblate and help us improve NewPipe’s translation even more! Fixes “Did you mean” and “Showing results for” now have a dark text colour in the light theme, so they can be seen without squinting. @TobiGr Sometimes error reports did not contain the actual code that caused the error. This is now fixed. @Stypox NewPipe would crash if it encountered an empty comment. No more! (Why would anyone leave empty comments, though?) @Stypox If you added a local playlist as a main page tab, playing any video in it would cause a crash. Fixed now. @wb9688 If you open the app in the Taqbaylit language, its called Taqbaylit now and not Tamaziɣt Taqbaylit. @BoFFire The license pop-up doesn’t disappear anymore upon rotation. @nmurali94 If you download a file, delete it from your file explorer, then redownload it without restarting NewPipe, it doesn’t cause a crash anymore. @budde92 Some redundant code related to subtitles was removed. @mhmdanas When auto-queue is enabled, NewPipe tries to add a stream to the queue the moment you open a video. But if there happen to be no video suggestions on that page, it causes a crash. This has been fixed. @wb9688 Development Development. Where all the magic which keeps this app running happens. It saw some improvements in this release (Warning: Nerd talk ahead) : YouTube serves several stream types: progressive HTTP, OTF and DASH. The app can only play the first, but the extractor can fetch both progressive HTTP and OTF. So the extractor will now ignore OTF streams instead of showing them but not being able to play them (endlessly spinning loading indicator, know that you are hated by one and all). This has been a major point of inconvenience for a lot of users (and us, too!) so we’re eager to mitigate the problem until a proper fix sometime later, which will add DASH support. (@wb9688) A Checkstyle rule was added so it would show an error when a local variable which could be final wasn’t declared as such. (@XiangRongLin) A library we use, PrettyTime, has been updated to a newer version so that a workaround can be removed from NewPipe’s code. We get a performance improvement as a bonus! (@B0pol) Numbers and uppercase letters are now allowed in the application ID. (@Stypox) Contributors need to discuss their contributions now prior to opening a PR. (@gkeegan) Some deprecations as well as a lot of code cleanup happened. (@TacoTheDank) The code now prevents the YouTube website from accessing the available Java packages from NewPipe’s parser. This removes a possible attack surface. (@wb9688) 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 release 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 you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Content settings menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post 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. Now that you’ve 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 send them in the comments here and someone will reply to you. [Less]
Posted over 3 years ago
Hey there, NewPipers! It’s been quite long since the last release. But for good reason: This release comes with quite major changes to the way NewPipe works, visibly as well as under the hood. Reworked UI Embedded Playback in Portrait orientation ... [More] Videos will now play in the details page when in portrait orientation. By default, playback will start automatically upon opening. To accommodate this change and make it more palatable for users who prefer to initiate video playback themselves (“How dare you start the video without asking me!” shakes fist), there is a new ‘Autoplay’ setting to control playback. Autoplay will be turned on by default for Wi-Fi, but you can always turn it off completely if you want. Correct Video Orientation The gist: The player now automatically assumes the correct orientation when you enter full screen. The details: In the previous version, if auto-rotate was off, the main video player would just play videos in whatever orientation you last used. You would have to manually rotate the screen if you encountered a video with the opposite orientation. No more! There is now a full-screen button which replaces the orientation switch button, and it is smart. It will detect if the video is landscape or portrait, and will ensure the player is in the correct orientation right when you enter full-screen! How’s that for convenience and usability? Not just that; if auto-rotate is enabled, rotating the device to landscape will automatically play the video in fullscreen. Minimized Player The gist: A minimized player that lets you browse NewPipe during playback, and stores your opened videos in a temporary queue. The details: In the previous version, you could either watch a video in the main player or browse NewPipe. No browsing while watching. And you sort of had to keep track of where you were in terms of navigation in the app. (We’ve all been down the “Related Videos” rabbit hole.) Now you can swipe down on the video in the embedded player, or swipe down from the title area when in full screen, to collapse the video to a ‘mini player’. You can pause and resume the video from the mini player, or close the video entirely. Moreover, if you open, say, ten video pages in a row, the mini player will keep all of those pages in memory until you close it (kind of like a browser tab). So you can pause a video, browse Newpipe, queue up a few more, and resume the video, all without losing your place. No more having to finish a video before browsing mindlessly – yay distractions! Thumbnail progress bar Look at this screenshot! Nice, isn’t it? You get this shiny new progress bar underneath the thumbnail when you play a video in the background or pop-up players. It updates in real time, gets a little counter and is coloured red - it’s great, really. The Unified Player The gist: The three players (main, pop-up, and audio), which were completely separate earlier, have been welded on top of one common player service so they can share the current stream state. The details: Up until now, NewPipe had three separate players: main, pop-up and audio. All three had separate stream states and separate playing queues. When you switched from one player to another, the old player and its queue closed in the background, while a new player and queue were created, after which they took over playback. If that sounds complicated and cumbersome, that’s because it is. Now, the code has been rewritten so that all players run using one common service. When you switch from one player to another, this service remains running, preserving the stream state, and the new player just picks up from where the old one left off. Less work for the app, which means faster switching between players! Some side effects of this change: There is only one common queue now. So no matter how you enqueue a video, it will be added to the same queue instead of creating a new one. We would like feedback on whether this change is welcome or not. The app will always show a notification when a stream is playing. This is so that Android doesn’t kill playback whenever it feels like it. All of what you’ve read above was made possible by the lean and mean coding machine, the one and only - (drumroll) - @avently! Seriously, you should all sacrifice your first born child in his name. Or just say thank you. Whatever works out for you, you boring people. Try to be more adventurous in life. On a serious note, this was a massive, massive change to not only the code, but also the app’s workflow, so this PR was tested, reviewed and modified lots of times, over a long period of time, before it was allowed to see the light of day with this release. A huge thank you to you, @avently, for having the patience and dedication to keep adding features and bug fixes until everyone was satisfied! A different person probably would have gone insane. And a big thank you to the maintainers for doggedly reviewing this gigantic PR repeatedly. Those ~6600 additions and ~5600 removals must have felt intimidating! Naturally, since this was such a massive change, several bugs also slipped through. But @avently, with the help of @blackbox87, @Stypox and @TobiGr fixed a large number of them. More will be addressed by further point releases. The Notification is dead, long live the Notification! The gist: New notification! Very colour-y! Very button-y! The details: The old notification was based on a very old API (‘RemoteView’, which was pre-Lollipop!). Now we have a new one, which should be familiar to you if you’ve used other popular media apps. Does the cover art - based theming ring a bell? Enter the Age of the MediaStyle notification: Pros: 5 action buttons, customisable from the new Notification menu 3 customisable action buttons for the compact notification Android 8 and above: Theme matches the cover art Android 10 and above: Seekbar right in the notification Android 11 support! The code is easier to maintain Con: Android 9 and below: Loss of the progress bar. Do the pros outweigh the con? (Hint: This is a rhetorical question.) Some background: The old notification API doesn’t work on Android 11. Users don’t see a notification at all. So the newer API had to be used no matter what. Since maintaining the code for two notification styles would double the burden, the old one has been removed entirely. This cool contribution was brought to us in its original form by @cool-student. Sadly, we couldn’t get in touch with them when we were ready to focus on this PR, so @wb9688 and @Stypox swooped in to save the day! @wb9688 updated the code to conform to our standards and coding style, and @Stypox did the (painstaking!) work of rebasing the code after the unified player PR was merged into the development branch. Ultimately, @Stypox took over the responsibility for this PR. He updated and polished the UI, fixed bugs, got everyone and their grandfather to test the changes, and pulled us to the finish line! Improvements We are not done yet with what this release brings you (you may want to take a few sips of that beverage now): If you use an environment where resizing an app is possible, NewPipe can do this now as well. @TobiGr If you have ever encountered the “Unsupported URL” toast when sharing to NewPipe, it is handled better now. You can choose to further share to another app, or open it in a browser. @Stypox NewPipe doesn’t generate a timestamped link when sharing a live stream anymore. @nmurali94 The playlist header layout has been improved: the alignment on the sides is consistent now and longer headings can fit themselves on two lines instead of just one. @Stypox Typing in the search bar now works even when internet connection is lost or turned off. Earlier, NewPipe would interrupt by closing the keyboard on every letter/word input and try to send the search query to the service, showing a useless network error each time. Now it waits until you tap the search button. @Stypox In order to save some of that valuable mobile data, you were already able to turn off video thumbnails and profile pictures for comments. Now even the black placeholders which replaced them are gone and comments can comfortably take up the space left behind. @4D17Y4 The ‘Minimize on app switch’ setting has been changed to switch to the background player by default, to accompany the unified player changes above. @TobiGr The ‘Remember popup size and position’ setting has a less redundant name now. @TobiGr It is 2020, everyone. Really, the only good change that came about this year is higher resolution. The default video resolution has been set to 720p at 60FPS, and 480p for the pop-up player. @B0pol NewPipe now remembers what kind of media you downloaded the last time, and will auto-select it when you hit download on a new video. @vmazoyer “Autoplay” has been changed to “Auto-queue” in the video page. This is to prevent confusion with the new “Autoplay” setting which controls whether videos automatically start in the embedded player. @opusforlife2 Translations Apart from the language improvements mentioned above, some other interesting localization changes happened in this release. @comradekingu, a frequent contributor to and language checker of NewPipe and other open source projects, has once again taken a close look at our strings. There was, as always, a lot of room for improvement. Our wonderful translators rushed to help and immediately implemented his suggestions. We are also happy to provide new localizations in this release: Sardinian, Bengali, Portuguese (Portugal), Neapolitan and Berber. If you are missing a translation or think a phrase needs adjustment, head over to Weblate and help us improve NewPipe’s translation even more! Fixes “Did you mean” and “Showing results for” now have a dark text colour in the light theme, so they can be seen without squinting. @TobiGr Sometimes error reports did not contain the actual code that caused the error. This is now fixed. @Stypox NewPipe would crash if it encountered an empty comment. No more! (Why would anyone leave empty comments, though?) @Stypox If you added a local playlist as a main page tab, playing any video in it would cause a crash. Fixed now. @wb9688 If you open the app in the Taqbaylit language, its called Taqbaylit now and not Tamaziɣt Taqbaylit. @BoFFire The license pop-up doesn’t disappear anymore upon rotation. @nmurali94 If you download a file, delete it from your file explorer, then redownload it without restarting NewPipe, it doesn’t cause a crash anymore. @budde92 Some redundant code related to subtitles was removed. @mhmdanas When auto-queue is enabled, NewPipe tries to add a stream to the queue the moment you open a video. But if there happen to be no video suggestions on that page, it causes a crash. This has been fixed. @wb9688 Development Development. Where all the magic which keeps this app running happens. It saw some improvements in this release (Warning: Nerd talk ahead) : YouTube serves several stream types: progressive HTTP, OTF and DASH. The app can only play the first, but the extractor can fetch both progressive HTTP and OTF. So the extractor will now ignore OTF streams instead of showing them but not being able to play them (endlessly spinning loading indicator, know that you are hated by one and all). This has been a major point of inconvenience for a lot of users (and us, too!) so we’re eager to mitigate the problem until a proper fix sometime later, which will add DASH support. (@wb9688) A Checkstyle rule was added so it would show an error when a local variable which could be final wasn’t declared as such. (@XiangRongLin) A library we use, PrettyTime, has been updated to a newer version so that a workaround can be removed from NewPipe’s code. We get a performance improvement as a bonus! (@B0pol) Numbers and uppercase letters are now allowed in the application ID. (@Stypox) Contributors need to discuss their contributions now prior to opening a PR. (@gkeegan) Some deprecations as well as a lot of code cleanup happened. (@TacoTheDank) The code now prevents the YouTube website from accessing the available Java packages from NewPipe’s parser. This removes a possible attack surface. (@wb9688) 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 release 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 you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Content settings menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post 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. Now that you’ve 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 freenode), 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 send them in the comments here and someone will reply to you. [Less]
Posted over 3 years ago
Hey there! Guess who is back? We are. Admittedly, we’re quite a bit late with this release. But there is a very good reason for that. Are you ready for it? Sit down, grab some popcorn and a beverage of your choice. This is going to be long. A new ... [More] unified player “What in the name of the coronavirus is the unified player?” you ask. Well, first of all, that’s a very weird expression. Where did you even get that one from… - you know what? Save it. We don’t want to know. You just keep on using that, we’ll keep on talking about the new player. A new player it indeed is. Up until now, NewPipe had three different players bundled in its code: the main, pop-up and background players. All three had separate code and separate playing queues. When you switched from one player to another, in the background, the old player and its queue closed itself, while a new player was created, along with a new queue, which took over then. If that sounds complicated and cumbersome, that’s because it is. Moreover, if you accidentally switched using the player buttons below the thumbnail instead of the ones in the drop down menu inside the player, the stream would start from the beginning instead of carrying on from where you left, and you would lose your (possibly carefully built) queue. Well, no more! The buttons in the player drop down menu have been removed and the action buttons below the thumbnail work like they’re supposed to, so now you’re at no risk whatsoever of losing your playing position or queue. Whew! This was made possible by rewriting the code so that all players run on one common service. When you switch from one player to another, this service remains running, preserving the stream data, and the new player just picks up from where the old one left off. Everything remains the same, including the queue. Ah, serendipity. Video details page A more unified experience is not the only feature this change brought you. There is one which is immediately noticeable once you open a video in the new version: the video details page. Earlier, when you opened the video details, you were shown a thumbnail, video description, comments, etc. Tapping the thumbnail would open the player in full-screen, hiding the rest of these elements. Now, when you’re in portrait mode, the video plays right in the video details page - just like YouTube! There is even a new ‘Autoplay’ setting which plays the video automatically when you open video details - also just like YouTube! This setting will be turned on by default for Wi-Fi. Of course, you can turn it off if you prefer the behaviour of the previous versions. Video orientation Previously, the main video player would always play videos in full-screen regardless of your selected orientation. This was fine for landscape videos in landscape mode and portrait videos in portrait mode, but it resulted in a lot of wasted space if the video’s orientation didn’t match the player’s. No more! There is now a full-screen button which replaces the orientation switch button, and it is smart. It will detect if the video is landscape or portrait, and will ensure the player is in the correct orientation when you enter full-screen! How’s that for convenience and usability? Not only that, but if auto-rotate is enabled, and the video is a landscape one, the button will disappear because you don’t need it! (In portrait mode, you still need the button to go into full-screen from the video details.) Minimized player You can now swipe down on the video in the video details page to minimize it - just like YouTu… wait no. It’s better. You get a minimized player at the bottom, and you can play/pause or even close it from there. How cool is that? The video will keep playing (or stay paused, if you prefer that) while you browse NewPipe at your leisure! No more having to finish a video before browsing mindlessly! Yay distractions! (In landscape mode, you can swipe down on the title to minimize as well. The swipe area is confined to that region because the rest is used for the existing volume and brightness gestures, as you know.) Since the player can now be minimized instead of closed, this means you get to retain your opened video queue! Let us go through an example: You watch a video, minimize it, then browse the trending page (you insane person), watch a video from there, quickly minimize it, browse for some calming music, and finally watch a video about pandas. As long as the minimized player isn’t closed (by using the cross button or swiping down on it), you can tap back to go through those videos in reverse order! This allows you to browse a whole bunch of videos and quickly build up a video queue before you start watching them. You were able do this earlier, but you had to use the background or popup player queues as a workaround, since the main player’s queue isn’t accessible outside of the player. Thumbnail progress bar You can only see this when you play the video in the background or pop-up, but there is now a shiny new progress bar underneath the thumbnail! It updates in real time, gets a little counter and a red bar - it’s great, really. All of what you’ve read above was made possible by the lean and mean coding machine, the one and only - (drumroll) - @avently! Seriously, you should all sacrifice your first born child in his name. Or just say thank you, whatever works out for ya (that would be kind of boring, though). On a serious note, this was a massive, massive change to not only the code, but also the app’s workflow, so this PR was tested, reviewed and modified lots of times, over a long period of time, before it was allowed to see the light of day with this release. A huge thank you to you, @avently, for having the patience and dedication to keep adding features and bug fixes until everyone was satisfied! A different person probably would have gone insane. And a big thank you to the maintainers for doggedly reviewing this gigantic PR repeatedly. Those ~6600 additions and ~5600 removals must have felt intimidating! Naturally, since this was such a massive change, several bugs also slipped through. But @avently, with the help of @blackbox87, @Stypox and @TobiGr fixed them rapidly as they were reported. The Notification is dead, long live the Notification! If you care about such things, you have likely noticed that NewPipe’s notification looks quite different from most media player apps these days. It has a progress bar, buttons in odd places, and a permanent grey colour. This is because NewPipe uses an old API for notifications called RemoteView. This allowed for a lot of customisation, and that was good at the time it was in vogue. However, it has been deprecated and superseded by a more modern API. Enter the Age of MediaStyle notification: This is a special notification type which has been available for media apps to use since Android Lollipop. In Oreo, it gained the ability to be coloured to match the colour theme of the cover art of the music playing. And since Android 10, it has a seekbar built right into it! It is a powerful API that removes the need to use a whole bunch of custom code to achieve what we had so far. This will make it far easier to maintain and improve NewPipe’s notification. Win for development! So let’s get on with what is new and what has changed. Android 9 First of all, we say “sorry” to our users on Android 9 and below. The progress bar is gone. As we’ve said above, it will only be shown on Android 10 and above. We’re a small team and can’t maintain code for the old and new types of notifications simultaneously, so the old one has to go. And not just that; the old notification isn’t even supported Android 11 onwards. Bye-bye RemoteView notifications. We shall miss you! :’( But you get a lot in exchange for that sacrifice! New features You get five CUSTOMISABLE - you read it right! - CUSTOMISABLE action buttons to control playback. There is a new notification category in the app settings, and you can choose which button should perform which player action. Play/pause, forward/rewind, previous/next, shuffle, repeat, close, or even nothing! Then, you can choose which three of these five buttons show in the compact notification (remember that little arrow you use to expand/contract the notification?). For users on Android 8+: Colours! Warm colours. Cool colours. All the colours! As we’ve noted above, MediaStyle notifications adapt to the colours of the cover art, which looks just plain awesome. For users on Android 10+: Seekbar! The old notification had a progress bar, but that was just a visual indicator. Now you can actually seek from the notification itself. Marvel at the massive boost in convenience, and have fun seeking! For users on Android 11: Congratulations! You get a notification now! NewPipe’s media session will show up in the notification shade and in Quick Settings just as advertised. This cool contribution was brought to us in its original form by @cool-student. Sadly, we couldn’t get in touch with them when we were ready to focus on this PR, so @wb9688 and @Stypox swooped in to save the day! @wb9688 updated the code to conform to our standards and coding style, and @Stypox did the (painstaking!) work of rebasing the code after the unified player PR was merged into the development branch. Ultimately, he took over the responsibility for this PR. He updated and polished the UI, fixed bugs, got everyone and their grandfather to test the changes, and pulled us to the finish line! Improvements We are not done yet with what this release brings you (you may want to take a few sips of that beverage now). If you use an environment where resizing an app is possible, NewPipe can do this now as well, thanks to @TobiGr. Have you ever shared a URL to NewPipe, just to be greeted with a little “Unsupported URL” toast? Well, the app still doesn’t support those kinds of URLs with this release, but at least we show you a way better error message now! It allows you to reshare the URL or just offers to open it in a browser instead. All this, thanks to @Stypox and to @webber-naut for bringing our attention to this in the first place. Talking about sharing, when you share a live stream with someone, NewPipe doesn’t add a timestamp to the URL any more. This was done by @nmurali94. Thanks. The header layout has been improved: the alignment on the sides is consistent now and longer headings can fit themselves on two lines instead of just one. If you ever tried to search something and then lost connection to the internet, or just tried to search while being offline, you would have noticed that NewPipe didn’t let you type your search term. Instead it kept on rudely interrupting you with a network error. That is fixed now. You can type all you want, and it will only fail if you actually hit enter or press the search button. Both of these changes were brought to you by @Stypox. Thanks! In order to save some of that valuable mobile data, you were already able to turn off video thumbnails and profile pictures for comments. Now even the black placeholders which replaced them are gone and comments can comfortably take up the space left behind. Thanks, @4D17Y4! @TobiGr brought two more improvements into this release: the setting to remember pop-up size and position has a less redundant description, and when you switch to another app, the main player now minimizes to background audio by default to allow for a more seamless transition. Swoosh. It’s 2020, and our default resolutions also realized this. Instead of having 360p everywhere, main player videos are opened in 720p at 60FPS now, and pop-up ones in 480p. Thank you, @B0pol. NewPipe now also remembers what kind of media you downloaded the last time, and will auto-select it when you hit download on a new video. This was done by @vmazoyer. Since ‘Autoplay’ is a new configurable setting in this release, @opusforlife2 changed the ‘Autoplay’ toggle in the video details to say “Auto-queue” instead. Now it’s clearer what that toggle does without leaving room for any confusion. More Translation updates and improvements Apart from the language improvements mentioned above, some other interesting localization changes happened in this release. @comradekingu, a frequent contributor to and language checker of NewPipe and other open source projects, has once again taken a close look at our strings. There was, as always, a lot of room for improvement. Our wonderful translators rushed to help and immediately implemented his suggestions. We are also happy to provide new localizations in this release: Sardinian, Bengali, Portuguese (Portugal), Neapolitan and Berber. If you are missing a translation or think a phrase needs adjustment, head over to Weblate and help us improve NewPipe’s translation even more! Fixes If you noticed that next to offline search input now working, the actual text of the suggestions look better now, you are correct. @TobiGr changed the colours used to the default ones. An empty error report in certain kinds of crashes is not empty anymore, since @Stypox took care of properly calling code. Yay, code! He also fixed a crash when NewPipe encounters an empty comment. Now it will be displayed just as empty as it is. Thanks to @wb9688, you can open a video in the local playlist tab (and potentially other locations), whereas earlier, the app would crash. And thanks to @BoFFire, if you open the app in the Taqbaylit language, its called Taqbaylit now and not Tamaziɣt Taqbaylit. The license pop-up doesn’t disappear when you change orientation now. This was introduced by @nmurali94. And @budde92 ensured that you can now delete a file you just downloaded and then try to re-download it without the app crashing. We are not sure why you’d want to do this, but now you can do so without any worries. @mhmdanas changed a code call because its origin was redundant. Yay for less redundancy. When auto-queue is enabled, Newpipe wants to add a stream to the queue the moment you open a video. But if there are no video suggestions on that page, it causes a crash. This has been fixed by @wb9688. Development Development. Where all the magic which keeps this app running happens. It saw some improvements in this release: (Warning: Nerd talk ahead) The extractor will ignore OTF streams now, since they don’t work with progressive HTTP, and the extractor can’t work with DASH just yet. This has been a major point of inconvenience for a lot of users (and us, too!) so we’re eager to mitigate the problem until the proper fix sometime later. (@wb9688) A Checkstyle rule was added so it would show an error when a local variable which could be final wasn’t declared as such. (@XiangRongLin) A library we use, PrettyTime, has been updated to a newer version so that a workaround can be removed from NewPipe’s code. We get a performance improvement as a bonus! (@B0pol) Numbers and uppercase letters are now allowed in the application ID. (@Stypox) Contributors need to discuss their contributions now prior to opening a PR. (@gkeegan) Some deprecations as well as a lot of code cleanup happened. (@TacoTheDank) The code now prevents the YouTube website from accessing the available Java packages from NewPipe’s parser. This removes a possible attack surface. (@wb9688) Where to get this brand-new version NewPipe notifies you about new versions. You can download them when you press the notification. An alternative is the GitHub release page. If you use the F-Droid app, it notifies you as well about an update for NewPipe - please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing you may need to uninstall NewPipe then reinstall (make sure to backup data). If you already had NewPipe installed through F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update or Switch to the NewPipe repository by following the directions in the announcement (if you had previously installed NewPipe from GitHub releases you will not have to uninstall NewPipe to switch) Now that you’ve 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 freenode), 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 send them in the comments here and someone will reply to you. [Less]
Posted over 3 years ago
Hey there, NewPipers! It’s been quite long since the last release. But for good reason: This release comes with quite major changes to the way NewPipe works, visibly as well as under the hood. Reworked UI Embedded Playback in Portrait orientation ... [More] Videos will now play in the details page when in portrait orientation. By default, playback will start automatically upon opening. To accommodate this change and make it more palatable for users who prefer to initiate video playback themselves (“How dare you start the video without asking me!” shakes fist), there is a new ‘Autoplay’ setting to control playback. Autoplay will be turned on by default for Wi-Fi, but you can always turn it off completely if you want. Correct Video Orientation The gist: The player now automatically assumes the correct orientation when you enter full screen. The details: In the previous version, if auto-rotate was off, the main video player would just play videos in whatever orientation you last used. You would have to manually rotate the screen if you encountered a video with the opposite orientation. No more! There is now a full-screen button which replaces the orientation switch button, and it is smart. It will detect if the video is landscape or portrait, and will ensure the player is in the correct orientation right when you enter full-screen! How’s that for convenience and usability? Not just that; if auto-rotate is enabled, rotating the device to landscape will automatically play the video in fullscreen. Minimized Player The gist: A minimized player that lets you browse NewPipe during playback, and stores your opened videos in a temporary queue. The details: In the previous version, you could either watch a video in the main player or browse NewPipe. No browsing while watching. And you sort of had to keep track of where you were in terms of navigation in the app. (We’ve all been down the “Related Videos” rabbit hole.) Now you can swipe down on the video in the embedded player, or swipe down from the title area when in full screen, to collapse the video to a ‘mini player’. You can pause and resume the video from the mini player, or close the video entirely. Moreover, if you open, say, ten video pages in a row, the mini player will keep all of those pages in memory until you close it (kind of like a browser tab). So you can pause a video, browse Newpipe, queue up a few more, and resume the video, all without losing your place. No more having to finish a video before browsing mindlessly – yay distractions! Thumbnail progress bar Look at this screenshot! Nice, isn’t it? You get this shiny new progress bar underneath the thumbnail when you play a video in the background or pop-up players. It updates in real time, gets a little counter and is coloured red - it’s great, really. The Unified Player The gist: The three players (main, pop-up, and audio), which were completely separate earlier, have been welded on top of one common player service so they can share the current stream state. The details: Up until now, NewPipe had three separate players: main, pop-up and audio. All three had separate stream states and separate playing queues. When you switched from one player to another, the old player and its queue closed in the background, while a new player and queue were created, after which they took over playback. If that sounds complicated and cumbersome, that’s because it is. Now, the code has been rewritten so that all players run using one common service. When you switch from one player to another, this service remains running, preserving the stream state, and the new player just picks up from where the old one left off. Less work for the app, which means faster switching between players! Some side effects of this change: There is only one common queue now. So no matter how you enqueue a video, it will be added to the same queue instead of creating a new one. We would like feedback on whether this change is welcome or not. The app will always show a notification when a stream is playing. This is so that Android doesn’t kill playback whenever it feels like it. All of what you’ve read above was made possible by the lean and mean coding machine, the one and only - (drumroll) - @avently! Seriously, you should all sacrifice your first born child in his name. Or just say thank you. Whatever works out for you, you boring people. Try to be more adventurous in life. On a serious note, this was a massive, massive change to not only the code, but also the app’s workflow, so this PR was tested, reviewed and modified lots of times, over a long period of time, before it was allowed to see the light of day with this release. A huge thank you to you, @avently, for having the patience and dedication to keep adding features and bug fixes until everyone was satisfied! A different person probably would have gone insane. And a big thank you to the maintainers for doggedly reviewing this gigantic PR repeatedly. Those ~6600 additions and ~5600 removals must have felt intimidating! Naturally, since this was such a massive change, several bugs also slipped through. But @avently, with the help of @blackbox87, @Stypox and @TobiGr fixed a large number of them. More will be addressed by further point releases. The Notification is dead, long live the Notification! The gist: New notification! Very colour-y! Very button-y! The details: The old notification was based on a very old API (‘RemoteView’, which was pre-Lollipop!). Now we have a new one, which should be familiar to you if you’ve used other popular media apps. Does the cover art - based theming ring a bell? Enter the Age of the MediaStyle notification: Pros: 5 action buttons, customisable from the new Notification menu 3 customisable action buttons for the compact notification Android 8 and above: Theme matches the cover art Android 10 and above: Seekbar right in the notification Android 11 support! The code is easier to maintain Con: Android 9 and below: Loss of the progress bar. Do the pros outweigh the con? (Hint: This is a rhetorical question.) Some background: The old notification API doesn’t work on Android 11. Users don’t see a notification at all. So the newer API had to be used no matter what. Since maintaining the code for two notification styles would double the burden, the old one has been removed entirely. This cool contribution was brought to us in its original form by @cool-student. Sadly, we couldn’t get in touch with them when we were ready to focus on this PR, so @wb9688 and @Stypox swooped in to save the day! @wb9688 updated the code to conform to our standards and coding style, and @Stypox did the (painstaking!) work of rebasing the code after the unified player PR was merged into the development branch. Ultimately, @Stypox took over the responsibility for this PR. He updated and polished the UI, fixed bugs, got everyone and their grandfather to test the changes, and pulled us to the finish line! Improvements We are not done yet with what this release brings you (you may want to take a few sips of that beverage now): If you use an environment where resizing an app is possible, NewPipe can do this now as well. @TobiGr If you have ever encountered the “Unsupported URL” toast when sharing to NewPipe, it is handled better now. You can choose to further share to another app, or open it in a browser. @Stypox NewPipe doesn’t generate a timestamped link when sharing a live stream anymore. @nmurali94 The playlist header layout has been improved: the alignment on the sides is consistent now and longer headings can fit themselves on two lines instead of just one. @Stypox Typing in the search bar now works even when internet connection is lost or turned off. Earlier, NewPipe would interrupt by closing the keyboard on every letter/word input and try to send the search query to the service, showing a useless network error each time. Now it waits until you tap the search button. @Stypox In order to save some of that valuable mobile data, you were already able to turn off video thumbnails and profile pictures for comments. Now even the black placeholders which replaced them are gone and comments can comfortably take up the space left behind. @4D17Y4 The ‘Minimize on app switch’ setting has been changed to switch to the background player by default, to accompany the unified player changes above. @TobiGr The ‘Remember popup size and position’ setting has a less redundant name now. @TobiGr It is 2020, everyone. Really, the only good change that came about this year is higher resolution. The default video resolution has been set to 720p at 60FPS, and 480p for the pop-up player. @B0pol NewPipe now remembers what kind of media you downloaded the last time, and will auto-select it when you hit download on a new video. @vmazoyer “Autoplay” has been changed to “Auto-queue” in the video page. This is to prevent confusion with the new “Autoplay” setting which controls whether videos automatically start in the embedded player. @opusforlife2 Translations Apart from the language improvements mentioned above, some other interesting localization changes happened in this release. @comradekingu, a frequent contributor to and language checker of NewPipe and other open source projects, has once again taken a close look at our strings. There was, as always, a lot of room for improvement. Our wonderful translators rushed to help and immediately implemented his suggestions. We are also happy to provide new localizations in this release: Sardinian, Bengali, Portuguese (Portugal), Neapolitan and Berber. If you are missing a translation or think a phrase needs adjustment, head over to Weblate and help us improve NewPipe’s translation even more! Fixes “Did you mean” and “Showing results for” now have a dark text colour in the light theme, so they can be seen without squinting. @TobiGr Sometimes error reports did not contain the actual code that caused the error. This is now fixed. @Stypox NewPipe would crash if it encountered an empty comment. No more! (Why would anyone leave empty comments, though?) @Stypox If you added a local playlist as a main page tab, playing any video in it would cause a crash. Fixed now. @wb9688 If you open the app in the Taqbaylit language, its called Taqbaylit now and not Tamaziɣt Taqbaylit. @BoFFire The license pop-up doesn’t disappear anymore upon rotation. @nmurali94 If you download a file, delete it from your file explorer, then redownload it without restarting NewPipe, it doesn’t cause a crash anymore. @budde92 Some redundant code related to subtitles was removed. @mhmdanas When auto-queue is enabled, NewPipe tries to add a stream to the queue the moment you open a video. But if there happen to be no video suggestions on that page, it causes a crash. This has been fixed. @wb9688 Development Development. Where all the magic which keeps this app running happens. It saw some improvements in this release (Warning: Nerd talk ahead) : YouTube serves several stream types: progressive HTTP, OTF and DASH. The app can only play the first, but the extractor can fetch both progressive HTTP and OTF. So the extractor will now ignore OTF streams instead of showing them but not being able to play them (endlessly spinning loading indicator, know that you are hated by one and all). This has been a major point of inconvenience for a lot of users (and us, too!) so we’re eager to mitigate the problem until a proper fix sometime later, which will add DASH support. (@wb9688) A Checkstyle rule was added so it would show an error when a local variable which could be final wasn’t declared as such. (@XiangRongLin) A library we use, PrettyTime, has been updated to a newer version so that a workaround can be removed from NewPipe’s code. We get a performance improvement as a bonus! (@B0pol) Numbers and uppercase letters are now allowed in the application ID. (@Stypox) Contributors need to discuss their contributions now prior to opening a PR. (@gkeegan) Some deprecations as well as a lot of code cleanup happened. (@TacoTheDank) The code now prevents the YouTube website from accessing the available Java packages from NewPipe’s parser. This removes a possible attack surface. (@wb9688) 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 release 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 you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Content settings menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post 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. Now that you’ve 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 send them in the comments here and someone will reply to you. [Less]
Posted over 3 years ago
Hey there, NewPipers! It’s been quite long since the last release. But for good reason: This release comes with quite major changes to the way NewPipe works, visibly as well as under the hood. Reworked UI Embedded Playback in Portrait orientation ... [More] Videos will now play in the details page when in portrait orientation. By default, playback will start automatically upon opening. To accommodate this change and make it more palatable for users who prefer to initiate video playback themselves (“How dare you start the video without asking me!” shakes fist), there is a new ‘Autoplay’ setting to control playback. Autoplay will be turned on by default for Wi-Fi, but you can always turn it off completely if you want. Correct Video Orientation The gist: The player now automatically assumes the correct orientation when you enter full screen. The details: In the previous version, if auto-rotate was off, the main video player would just play videos in whatever orientation you last used. You would have to manually rotate the screen if you encountered a video with the opposite orientation. No more! There is now a full-screen button which replaces the orientation switch button, and it is smart. It will detect if the video is landscape or portrait, and will ensure the player is in the correct orientation right when you enter full-screen! How’s that for convenience and usability? Not just that; if auto-rotate is enabled, rotating the device to landscape will automatically play the video in fullscreen. Minimized Player The gist: A minimized player that lets you browse NewPipe during playback, and stores your opened videos in a temporary queue. The details: In the previous version, you could either watch a video in the main player or browse NewPipe. No browsing while watching. And you sort of had to keep track of where you were in terms of navigation in the app. (We’ve all been down the “Related Videos” rabbit hole.) Now you can swipe down on the video in the embedded player, or swipe down from the title area when in full screen, to collapse the video to a ‘mini player’. You can pause and resume the video from the mini player, or close the video entirely. Moreover, if you open, say, ten video pages in a row, the mini player will keep all of those pages in memory until you close it (kind of like a browser tab). So you can pause a video, browse Newpipe, queue up a few more, and resume the video, all without losing your place. No more having to finish a video before browsing mindlessly – yay distractions! Thumbnail progress bar Look at this screenshot! Nice, isn’t it? You get this shiny new progress bar underneath the thumbnail when you play a video in the background or pop-up players. It updates in real time, gets a little counter and is coloured red - it’s great, really. The Unified Player The gist: The three players (main, pop-up, and audio), which were completely separate earlier, have been welded on top of one common player service so they can share the current stream state. The details: Up until now, NewPipe had three separate players: main, pop-up and audio. All three had separate stream states and separate playing queues. When you switched from one player to another, the old player and its queue closed in the background, while a new player and queue were created, after which they took over playback. If that sounds complicated and cumbersome, that’s because it is. Now, the code has been rewritten so that all players run using one common service. When you switch from one player to another, this service remains running, preserving the stream state, and the new player just picks up from where the old one left off. Less work for the app, which means faster switching between players! Some side effects of this change: There is only one common queue now. So no matter how you enqueue a video, it will be added to the same queue instead of creating a new one. We would like feedback on whether this change is welcome or not. The app will always show a notification when a stream is playing. This is so that Android doesn’t kill playback whenever it feels like it. All of what you’ve read above was made possible by the lean and mean coding machine, the one and only - (drumroll) - @avently! Seriously, you should all sacrifice your first born child in his name. Or just say thank you. Whatever works out for you, you boring people. Try to be more adventurous in life. On a serious note, this was a massive, massive change to not only the code, but also the app’s workflow, so this PR was tested, reviewed and modified lots of times, over a long period of time, before it was allowed to see the light of day with this release. A huge thank you to you, @avently, for having the patience and dedication to keep adding features and bug fixes until everyone was satisfied! A different person probably would have gone insane. And a big thank you to the maintainers for doggedly reviewing this gigantic PR repeatedly. Those ~6600 additions and ~5600 removals must have felt intimidating! Naturally, since this was such a massive change, several bugs also slipped through. But @avently, with the help of @blackbox87, @Stypox and @TobiGr fixed a large number of them. More will be addressed by further point releases. The Notification is dead, long live the Notification! The gist: New notification! Very colour-y! Very button-y! The details: The old notification was based on a very old API (‘RemoteView’, which was pre-Lollipop!). Now we have a new one, which should be familiar to you if you’ve used other popular media apps. Does the cover art - based theming ring a bell? Enter the Age of the MediaStyle notification: Pros: 5 action buttons, customisable from the new Notification menu 3 customisable action buttons for the compact notification Android 8 and above: Theme matches the cover art Android 10 and above: Seekbar right in the notification Android 11 support! The code is easier to maintain Con: Android 9 and below: Loss of the progress bar. Do the pros outweigh the con? (Hint: This is a rhetorical question.) Some background: The old notification API doesn’t work on Android 11. Users don’t see a notification at all. So the newer API had to be used no matter what. Since maintaining the code for two notification styles would double the burden, the old one has been removed entirely. This cool contribution was brought to us in its original form by @cool-student. Sadly, we couldn’t get in touch with them when we were ready to focus on this PR, so @wb9688 and @Stypox swooped in to save the day! @wb9688 updated the code to conform to our standards and coding style, and @Stypox did the (painstaking!) work of rebasing the code after the unified player PR was merged into the development branch. Ultimately, @Stypox took over the responsibility for this PR. He updated and polished the UI, fixed bugs, got everyone and their grandfather to test the changes, and pulled us to the finish line! Improvements We are not done yet with what this release brings you (you may want to take a few sips of that beverage now): If you use an environment where resizing an app is possible, NewPipe can do this now as well. @TobiGr If you have ever encountered the “Unsupported URL” toast when sharing to NewPipe, it is handled better now. You can choose to further share to another app, or open it in a browser. @Stypox NewPipe doesn’t generate a timestamped link when sharing a live stream anymore. @nmurali94 The playlist header layout has been improved: the alignment on the sides is consistent now and longer headings can fit themselves on two lines instead of just one. @Stypox Typing in the search bar now works even when internet connection is lost or turned off. Earlier, NewPipe would interrupt by closing the keyboard on every letter/word input and try to send the search query to the service, showing a useless network error each time. Now it waits until you tap the search button. @Stypox In order to save some of that valuable mobile data, you were already able to turn off video thumbnails and profile pictures for comments. Now even the black placeholders which replaced them are gone and comments can comfortably take up the space left behind. @4D17Y4 The ‘Minimize on app switch’ setting has been changed to switch to the background player by default, to accompany the unified player changes above. @TobiGr The ‘Remember popup size and position’ setting has a less redundant name now. @TobiGr It is 2020, everyone. Really, the only good change that came about this year is higher resolution. The default video resolution has been set to 720p at 60FPS, and 480p for the pop-up player. @B0pol NewPipe now remembers what kind of media you downloaded the last time, and will auto-select it when you hit download on a new video. @vmazoyer “Autoplay” has been changed to “Auto-queue” in the video page. This is to prevent confusion with the new “Autoplay” setting which controls whether videos automatically start in the embedded player. @opusforlife2 Translations Apart from the language improvements mentioned above, some other interesting localization changes happened in this release. @comradekingu, a frequent contributor to and language checker of NewPipe and other open source projects, has once again taken a close look at our strings. There was, as always, a lot of room for improvement. Our wonderful translators rushed to help and immediately implemented his suggestions. We are also happy to provide new localizations in this release: Sardinian, Bengali, Portuguese (Portugal), Neapolitan and Berber. If you are missing a translation or think a phrase needs adjustment, head over to Weblate and help us improve NewPipe’s translation even more! Fixes “Did you mean” and “Showing results for” now have a dark text colour in the light theme, so they can be seen without squinting. @TobiGr Sometimes error reports did not contain the actual code that caused the error. This is now fixed. @Stypox NewPipe would crash if it encountered an empty comment. No more! (Why would anyone leave empty comments, though?) @Stypox If you added a local playlist as a main page tab, playing any video in it would cause a crash. Fixed now. @wb9688 If you open the app in the Taqbaylit language, its called Taqbaylit now and not Tamaziɣt Taqbaylit. @BoFFire The license pop-up doesn’t disappear anymore upon rotation. @nmurali94 If you download a file, delete it from your file explorer, then redownload it without restarting NewPipe, it doesn’t cause a crash anymore. @budde92 Some redundant code related to subtitles was removed. @mhmdanas When auto-queue is enabled, NewPipe tries to add a stream to the queue the moment you open a video. But if there happen to be no video suggestions on that page, it causes a crash. This has been fixed. @wb9688 Development Development. Where all the magic which keeps this app running happens. It saw some improvements in this release (Warning: Nerd talk ahead) : YouTube serves several stream types: progressive HTTP, OTF and DASH. The app can only play the first, but the extractor can fetch both progressive HTTP and OTF. So the extractor will now ignore OTF streams instead of showing them but not being able to play them (endlessly spinning loading indicator, know that you are hated by one and all). This has been a major point of inconvenience for a lot of users (and us, too!) so we’re eager to mitigate the problem until a proper fix sometime later, which will add DASH support. (@wb9688) A Checkstyle rule was added so it would show an error when a local variable which could be final wasn’t declared as such. (@XiangRongLin) A library we use, PrettyTime, has been updated to a newer version so that a workaround can be removed from NewPipe’s code. We get a performance improvement as a bonus! (@B0pol) Numbers and uppercase letters are now allowed in the application ID. (@Stypox) Contributors need to discuss their contributions now prior to opening a PR. (@gkeegan) Some deprecations as well as a lot of code cleanup happened. (@TacoTheDank) The code now prevents the YouTube website from accessing the available Java packages from NewPipe’s parser. This removes a possible attack surface. (@wb9688) 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 release 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 you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Content settings menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post 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. Now that you’ve 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 freenode), 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 send them in the comments here and someone will reply to you. [Less]