Newpipe: Release 0.19.3

Created on 24 Apr 2020  路  22Comments  路  Source: TeamNewPipe/NewPipe

Changelog

App

New

  • Search on YouTube Music #3240
  • Basic Android TV support #2806, #3483

Improved

  • Improved checking for new version #3344
  • Avoid unnecessary changes to the upload date of saved streams #3370
  • Save and restore playback parameters into/from preferences #3288
  • Show message when content isn't supported yet instead of crashing #3300
  • Improved size handling of the drawer header title #3412
  • Improved popup player resize with pinch gestures #3075
  • Enqueue streams on long press on background and popup buttons in channel #3456
  • Added the ability to remove all watched videos from a local playlist #3065

Fixed

  • Fixed visibility of group sort button in the subscriptions fragment #3374
  • Fixed detection of network related exceptions #3294
  • Fixed age restricted content setting not working #3410
  • Fixed certain kinds of reCAPTCHAs #3414
  • Fixed crash when opening bookmarks while playlist is null #3345
  • Fixed escaping in JSON created by the crash reporter by using nanojson instead of org.json #3463

Development

  • Added Checkstyle to build scripts & code style improvements #3282, 3464
  • Fixed F-Droid build by ensuring the debug apk file name is used only in debug builds #3415
  • Force UTF-8 encoding for Gradle #3460

Extractor

New

  • Added support for YouTube Music search TeamNewPipe/NewPipeExtractor#291
  • Throw the new ContentNotSupportedException when the content is not yet supported TeamNewPipe/NewPipeExtractor#300
  • Added support for PeerTube's video channels TeamNewPipe/NewPipeExtractor#308

Improved

  • [SoundCloud] Added supported countries TeamNewPipe/NewPipeExtractor#299
  • Use our nanojson fork to support JS-like JSON TeamNewPipe/NewPipeExtractor#317

Fixed

  • Use media.ccc.de instead of api.media.ccc.de TeamNewPipe/NewPipeExtractor#301

APK for testing

NewPipe_v0.19.3_RC4.apk.zip

Corresponding pull request #3478

Most helpful comment

@opusforlife2 because I have fat fingers...

All 22 comments

Just tested this build, opening ended livestream seems to crash for some reason.
Crash Log: https://del.dog/pimecognan.txt
Example URL: https://www.youtube.com/watch?v=R3yCSo5-Sus

Exception

Crash log

java.lang.NullPointerException: Attempt to invoke virtual method 'com.grack.nanojson.JsonObject com.grack.nanojson.JsonObject.getObject(java.lang.String)' on a null object reference
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getErrorMessage(YoutubeStreamExtractor.java:580)
    at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:81)
    at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:62)
    at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:116)
    at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$5fJcha6Sq5APJBLdG6osaJby-mc.call(Unknown Source:4)
    at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
    at io.reactivex.Single.subscribe(Single.java:3438)
    at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
    at io.reactivex.Single.subscribe(Single.java:3438)
    at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
    at io.reactivex.Maybe.subscribe(Maybe.java:4154)
    at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
    at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
    at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
    at io.reactivex.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
    at io.reactivex.Flowable.subscribe(Flowable.java:14479)
    at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
    at io.reactivex.Maybe.subscribe(Maybe.java:4154)
    at io.reactivex.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
    at io.reactivex.Single.subscribe(Single.java:3438)
    at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
    at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
    at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
    at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:919)



@FireMasterK Thank you for the report. This crash happens on 0.19.1 and 0.19.2, too. However, error message will be different in the next RC due to @wb9688's changes in TeamNewPipe/NewPipeExtractor#317.

Ended live streams aren't handled correctly.

The release candidate package name is usually org.schabi.newpipe.debug.release. For this one it is just org.schabi.newpipe.debug like any testing apk before the branch name change. That naming fix for F-Droid might have introduced this?

rotating the screen in the feed section or in the playlists crashes the app.

Exception

  • __User Action:__ ui error
  • __Request:__ App crash, UI failure
  • __Content Language:__ it_IT
  • __Service:__ none
  • __Version:__ 0.19.3
  • __OS:__ Linux Android 4.4.4 - 19

Crash log

java.lang.NullPointerException
    at org.schabi.newpipe.fragments.list.BaseListFragment.getFocusedPosition(BaseListFragment.java:134)
    at org.schabi.newpipe.fragments.list.BaseListFragment.writeTo(BaseListFragment.java:152)
    at org.schabi.newpipe.fragments.list.BaseListInfoFragment.writeTo(BaseListInfoFragment.java:79)
    at org.schabi.newpipe.util.StateSaver.tryToSave(StateSaver.java:219)
    at org.schabi.newpipe.util.StateSaver.tryToSave(StateSaver.java:177)
    at org.schabi.newpipe.fragments.list.BaseListFragment.onSaveInstanceState(BaseListFragment.java:187)
    at androidx.fragment.app.Fragment.performSaveInstanceState(Fragment.java:2766)
    at androidx.fragment.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManagerImpl.java:2289)
    at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2348)
    at androidx.fragment.app.Fragment.performSaveInstanceState(Fragment.java:2768)
    at androidx.fragment.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManagerImpl.java:2289)
    at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2348)
    at androidx.fragment.app.FragmentController.saveAllState(FragmentController.java:151)
    at androidx.fragment.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:513)
    at androidx.appcompat.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:533)
    at android.app.Activity.performSaveInstanceState(Activity.java:1147)
    at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1222)
    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3839)
    at android.app.ActivityThread.access$700(ActivityThread.java:156)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1346)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:153)
    at android.app.ActivityThread.main(ActivityThread.java:5297)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    at dalvik.system.NativeStart.main(Native Method)



Search music pop live, i have receive this

Exception

  • __User Action:__ searched
  • __Request:__ music pop live
  • __Content Language:__ it_IT
  • __Service:__ YouTube
  • __Version:__ 0.19.3
  • __OS:__ Linux Android 4.4.4 - 19

Crash log

org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get duration
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamInfoItemExtractor.getDuration(YoutubeStreamInfoItemExtractor.java:127)
    at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.extract(StreamInfoItemsCollector.java:54)
    at org.schabi.newpipe.extractor.search.InfoItemsSearchCollector.extract(InfoItemsSearchCollector.java:84)
    at org.schabi.newpipe.extractor.search.InfoItemsSearchCollector.extract(InfoItemsSearchCollector.java:50)
    at org.schabi.newpipe.extractor.InfoItemsCollector.commit(InfoItemsCollector.java:87)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSearchExtractor.collectStreamsFrom(YoutubeSearchExtractor.java:126)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSearchExtractor.getInitialPage(YoutubeSearchExtractor.java:87)
    at org.schabi.newpipe.extractor.utils.ExtractorHelper.getItemsPageOrLogError(ExtractorHelper.java:19)
    at org.schabi.newpipe.extractor.search.SearchInfo.getInfo(SearchInfo.java:50)
    at org.schabi.newpipe.extractor.search.SearchInfo.getInfo(SearchInfo.java:30)
    at org.schabi.newpipe.util.ExtractorHelper.lambda$searchFor$0(ExtractorHelper.java:80)
    at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$BBduYDeZ_vXMQYaemaggmTPtqvA.call(lambda)
    at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
    at io.reactivex.Single.subscribe(Single.java:3438)
    at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
    at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
    at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
    at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:153)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    at java.lang.Thread.run(Thread.java:838)

-------------------

org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get duration
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamInfoItemExtractor.getDuration(YoutubeStreamInfoItemExtractor.java:127)
    at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.extract(StreamInfoItemsCollector.java:54)
    at org.schabi.newpipe.extractor.search.InfoItemsSearchCollector.extract(InfoItemsSearchCollector.java:84)
    at org.schabi.newpipe.extractor.search.InfoItemsSearchCollector.extract(InfoItemsSearchCollector.java:50)
    at org.schabi.newpipe.extractor.InfoItemsCollector.commit(InfoItemsCollector.java:87)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSearchExtractor.collectStreamsFrom(YoutubeSearchExtractor.java:126)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSearchExtractor.getInitialPage(YoutubeSearchExtractor.java:87)
    at org.schabi.newpipe.extractor.utils.ExtractorHelper.getItemsPageOrLogError(ExtractorHelper.java:19)
    at org.schabi.newpipe.extractor.search.SearchInfo.getInfo(SearchInfo.java:50)
    at org.schabi.newpipe.extractor.search.SearchInfo.getInfo(SearchInfo.java:30)
    at org.schabi.newpipe.util.ExtractorHelper.lambda$searchFor$0(ExtractorHelper.java:80)
    at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$BBduYDeZ_vXMQYaemaggmTPtqvA.call(lambda)
    at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
    at io.reactivex.Single.subscribe(Single.java:3438)
    at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
    at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
    at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
    at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:153)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    at java.lang.Thread.run(Thread.java:838)

-------------------

org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get duration
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamInfoItemExtractor.getDuration(YoutubeStreamInfoItemExtractor.java:127)
    at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.extract(StreamInfoItemsCollector.java:54)
    at org.schabi.newpipe.extractor.search.InfoItemsSearchCollector.extract(InfoItemsSearchCollector.java:84)
    at org.schabi.newpipe.extractor.search.InfoItemsSearchCollector.extract(InfoItemsSearchCollector.java:50)
    at org.schabi.newpipe.extractor.InfoItemsCollector.commit(InfoItemsCollector.java:87)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSearchExtractor.collectStreamsFrom(YoutubeSearchExtractor.java:126)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSearchExtractor.getInitialPage(YoutubeSearchExtractor.java:87)
    at org.schabi.newpipe.extractor.utils.ExtractorHelper.getItemsPageOrLogError(ExtractorHelper.java:19)
    at org.schabi.newpipe.extractor.search.SearchInfo.getInfo(SearchInfo.java:50)
    at org.schabi.newpipe.extractor.search.SearchInfo.getInfo(SearchInfo.java:30)
    at org.schabi.newpipe.util.ExtractorHelper.lambda$searchFor$0(ExtractorHelper.java:80)
    at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$BBduYDeZ_vXMQYaemaggmTPtqvA.call(lambda)
    at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
    at io.reactivex.Single.subscribe(Single.java:3438)
    at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
    at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
    at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
    at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:153)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    at java.lang.Thread.run(Thread.java:838)



@Domiuns: I can't reproduce your first issue. The latter isn't a regression. Those items just don't seem to have an indicator that they're live streams, thus causing us to try to get the duration of the video, which fails. Here is an example videoInfo:

{"thumbnail":{"thumbnails":[{"width":168,"url":"https://i.ytimg.com/vi/WawwqrfvnWE/hqdefault.jpg?sqp=-oaymwEYCKgBEF5IVfKriqkDCwgBFQAAiEIYAXAB&rs=AOn4CLDLLOQFShmbPkXmjWmV4FLJ5_XszQ","height":94},{"width":196,"url":"https://i.ytimg.com/vi/WawwqrfvnWE/hqdefault.jpg?sqp=-oaymwEYCMQBEG5IVfKriqkDCwgBFQAAiEIYAXAB&rs=AOn4CLAJ712vpJABxY1-lrMqRKGAuQSoPg","height":110},{"width":246,"url":"https://i.ytimg.com/vi/WawwqrfvnWE/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLBWuoR3WcHE8Pme0yaUjQDCKBfAjw","height":138},{"width":336,"url":"https://i.ytimg.com/vi/WawwqrfvnWE/hqdefault.jpg?sqp=-oaymwEZCNACELwBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLCCVqEfAHTsR88Upg17Z0XrigSufA","height":188}]},"videoId":"WawwqrfvnWE","title":{"accessibility":{"accessibilityData":{"label":"Pal Station Live Radio  - New Popular Music 2019 Best English Songs Of All Time &  Pop Music 2020 by Pal Media 11 months ago 2,251,505 views"}},"runs":[{"text":"Pal Station Live Radio  - New Popular Music 2019 Best English Songs Of All Time &  Pop Music 2020"}]},"shortBylineText":{"runs":[{"text":"Pal Media","navigationEndpoint":{"commandMetadata":{"webCommandMetadata":{"rootVe":3611,"webPageType":"WEB_PAGE_TYPE_BROWSE","url":"/channel/UCRsMXFxsTElLUSkX0hMjn9A"}},"clickTrackingParams":"CF0Q3DAYAyITCP2PkvKVhOkCFRvFVQodqGwKOA==","browseEndpoint":{"browseId":"UCRsMXFxsTElLUSkX0hMjn9A"}}}]},"menu":{"menuRenderer":{"trackingParams":"CF0Q3DAYAyITCP2PkvKVhOkCFRvFVQodqGwKOA==","accessibility":{"accessibilityData":{"label":"Action menu"}},"items":[{"menuServiceItemRenderer":{"trackingParams":"CGAQ_pgEGAMiEwj9j5LylYTpAhUbxVUKHahsCjg=","icon":{"iconType":"ADD_TO_QUEUE_TAIL"},"text":{"runs":[{"text":"Add to queue"}]},"serviceEndpoint":{"commandMetadata":{"webCommandMetadata":{"sendPost":true,"url":"/service_ajax"}},"clickTrackingParams":"CGAQ_pgEGAMiEwj9j5LylYTpAhUbxVUKHahsCjg=","signalServiceEndpoint":{"signal":"CLIENT_SIGNAL","actions":[{"commandMetadata":{"webCommandMetadata":{}},"clickTrackingParams":"CGAQ_pgEGAMiEwj9j5LylYTpAhUbxVUKHahsCjg=","addToPlaylistCommand":{"onCreateListCommand":{"commandMetadata":{"webCommandMetadata":{"sendPost":true,"apiUrl":"/youtubei/v1/playlist/create","url":"/service_ajax"}},"createPlaylistServiceEndpoint":{"params":"CAQ%3D","videoIds":["WawwqrfvnWE"]},"clickTrackingParams":"CGAQ_pgEGAMiEwj9j5LylYTpAhUbxVUKHahsCjg="},"openMiniplayer":true,"listType":"PLAYLIST_EDIT_LIST_TYPE_QUEUE","videoIds":["WawwqrfvnWE"]}}]}}}}]}},"thumbnailOverlays":[{"thumbnailOverlayToggleButtonRenderer":{"untoggledIcon":{"iconType":"WATCH_LATER"},"toggledIcon":{"iconType":"CHECK"},"toggledTooltip":"Added","trackingParams":"CF8Q-ecDGAAiEwj9j5LylYTpAhUbxVUKHahsCjg=","toggledAccessibility":{"accessibilityData":{"label":"Added"}},"untoggledTooltip":"Watch later","untoggledAccessibility":{"accessibilityData":{"label":"Watch later"}},"untoggledServiceEndpoint":{"commandMetadata":{"webCommandMetadata":{"sendPost":true,"apiUrl":"/youtubei/v1/browse/edit_playlist","url":"/service_ajax"}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"addedVideoId":"WawwqrfvnWE","action":"ACTION_ADD_VIDEO"}]},"clickTrackingParams":"CF8Q-ecDGAAiEwj9j5LylYTpAhUbxVUKHahsCjg="},"toggledServiceEndpoint":{"commandMetadata":{"webCommandMetadata":{"sendPost":true,"apiUrl":"/youtubei/v1/browse/edit_playlist","url":"/service_ajax"}},"playlistEditEndpoint":{"playlistId":"WL","actions":[{"removedVideoId":"WawwqrfvnWE","action":"ACTION_REMOVE_VIDEO_BY_VIDEO_ID"}]},"clickTrackingParams":"CF8Q-ecDGAAiEwj9j5LylYTpAhUbxVUKHahsCjg="},"isToggled":false}},{"thumbnailOverlayToggleButtonRenderer":{"untoggledIcon":{"iconType":"ADD_TO_QUEUE_TAIL"},"toggledIcon":{"iconType":"PLAYLIST_ADD_CHECK"},"toggledTooltip":"Added","trackingParams":"CF4Qx-wEGAEiEwj9j5LylYTpAhUbxVUKHahsCjg=","toggledAccessibility":{"accessibilityData":{"label":"Added"}},"untoggledTooltip":"Add to queue","untoggledAccessibility":{"accessibilityData":{"label":"Add to queue"}},"untoggledServiceEndpoint":{"commandMetadata":{"webCommandMetadata":{"sendPost":true,"url":"/service_ajax"}},"clickTrackingParams":"CF4Qx-wEGAEiEwj9j5LylYTpAhUbxVUKHahsCjg=","signalServiceEndpoint":{"signal":"CLIENT_SIGNAL","actions":[{"commandMetadata":{"webCommandMetadata":{}},"clickTrackingParams":"CF4Qx-wEGAEiEwj9j5LylYTpAhUbxVUKHahsCjg=","addToPlaylistCommand":{"onCreateListCommand":{"commandMetadata":{"webCommandMetadata":{"sendPost":true,"apiUrl":"/youtubei/v1/playlist/create","url":"/service_ajax"}},"createPlaylistServiceEndpoint":{"params":"CAQ%3D","videoIds":["WawwqrfvnWE"]},"clickTrackingParams":"CF4Qx-wEGAEiEwj9j5LylYTpAhUbxVUKHahsCjg="},"openMiniplayer":true,"listType":"PLAYLIST_EDIT_LIST_TYPE_QUEUE","videoIds":["WawwqrfvnWE"]}}]}}}},{"thumbnailOverlayNowPlayingRenderer":{"text":{"runs":[{"text":"Now playing"}]}}}],"ownerText":{"runs":[{"text":"Pal Media","navigationEndpoint":{"commandMetadata":{"webCommandMetadata":{"rootVe":3611,"webPageType":"WEB_PAGE_TYPE_BROWSE","url":"/channel/UCRsMXFxsTElLUSkX0hMjn9A"}},"clickTrackingParams":"CF0Q3DAYAyITCP2PkvKVhOkCFRvFVQodqGwKOA==","browseEndpoint":{"browseId":"UCRsMXFxsTElLUSkX0hMjn9A"}}}]},"longBylineText":{"runs":[{"text":"Pal Media","navigationEndpoint":{"commandMetadata":{"webCommandMetadata":{"rootVe":3611,"webPageType":"WEB_PAGE_TYPE_BROWSE","url":"/channel/UCRsMXFxsTElLUSkX0hMjn9A"}},"clickTrackingParams":"CF0Q3DAYAyITCP2PkvKVhOkCFRvFVQodqGwKOA==","browseEndpoint":{"browseId":"UCRsMXFxsTElLUSkX0hMjn9A"}}}]},"trackingParams":"CF0Q3DAYAyITCP2PkvKVhOkCFRvFVQodqGwKOEDhur6_q5WM1lk=","showActionMenu":false,"publishedTimeText":{"simpleText":"11 months ago"},"viewCountText":{"simpleText":"2,251,505 views"},"shortViewCountText":{"simpleText":"2.2M views"},"channelThumbnailSupportedRenderers":{"channelThumbnailWithLinkRenderer":{"thumbnail":{"thumbnails":[{"width":68,"url":"https://yt3.ggpht.com/a-/AOh14Ggf8zXNijRH4gxT096Dt6WbrFNFLlreNVSZlw=s68-c-k-c0x00ffffff-no-rj-mo","height":68}]},"accessibility":{"accessibilityData":{"label":"Go to channel"}},"navigationEndpoint":{"commandMetadata":{"webCommandMetadata":{"rootVe":3611,"webPageType":"WEB_PAGE_TYPE_BROWSE","url":"/channel/UCRsMXFxsTElLUSkX0hMjn9A"}},"clickTrackingParams":"CF0Q3DAYAyITCP2PkvKVhOkCFRvFVQodqGwKOA==","browseEndpoint":{"browseId":"UCRsMXFxsTElLUSkX0hMjn9A"}}}},"descriptionSnippet":{"runs":[{"text":"Pal Station Radio "},{"text":"Live Music","bold":true},{"text":" Radio - New Popular "},{"text":"Music","bold":true},{"text":" 2019 Best English Songs Of All Time & "},{"text":"Pop Music","bold":true},{"text":" 2020 Pal Media聽..."}]},"navigationEndpoint":{"commandMetadata":{"webCommandMetadata":{"rootVe":3832,"webPageType":"WEB_PAGE_TYPE_WATCH","url":"/watch?v=WawwqrfvnWE"}},"clickTrackingParams":"CF0Q3DAYAyITCP2PkvKVhOkCFRvFVQodqGwKODIGc2VhcmNoUg5tdXNpYyBwb3AgbGl2ZZoBAxD0JA==","watchEndpoint":{"videoId":"WawwqrfvnWE"}}}

Crash with auto-rotation enabled : Newpipe 19.3 RC1 debug version

Hello Newpipe team,

Thank you for the wonderful work creating and maintaining Newpipe.

Steps to produce problem/crash:

  1. Auto-rotation must be enabled on the device used for testing.
  2. Open Newpipe 19.3 RC1 debug version.
  3. Find and select any video.
  4. Click Popup icon. Video should start playing.
  5. Rotate device 90 degrees. Video continues to play.
  6. Rotate device 90 degrees back to starting orientation. Newpipe crashes.

This does not occur with Newpipe 19.2.

Please let me know if you have any questions or need more information.

Exception

  • __User Action:__ ui error
  • __Request:__ App crash, UI failure
  • __Content Language:__ US
  • __Service:__ none
  • __Version:__ 0.19.3
  • __OS:__ Linux Android 7.1.1 - 25

Crash log

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.ViewGroup.getFocusedChild()' on a null object reference
    at org.schabi.newpipe.fragments.list.BaseListFragment.getFocusedPosition(BaseListFragment.java:134)
    at org.schabi.newpipe.fragments.list.BaseListFragment.writeTo(BaseListFragment.java:152)
    at org.schabi.newpipe.fragments.list.BaseListInfoFragment.writeTo(BaseListInfoFragment.java:79)
    at org.schabi.newpipe.util.StateSaver.tryToSave(StateSaver.java:219)
    at org.schabi.newpipe.util.StateSaver.tryToSave(StateSaver.java:177)
    at org.schabi.newpipe.fragments.list.BaseListFragment.onSaveInstanceState(BaseListFragment.java:187)
    at androidx.fragment.app.Fragment.performSaveInstanceState(Fragment.java:2766)
    at androidx.fragment.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManagerImpl.java:2289)
    at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2348)
    at androidx.fragment.app.Fragment.performSaveInstanceState(Fragment.java:2768)
    at androidx.fragment.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManagerImpl.java:2289)
    at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2348)
    at androidx.fragment.app.FragmentController.saveAllState(FragmentController.java:151)
    at androidx.fragment.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:513)
    at androidx.appcompat.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:533)
    at android.app.Activity.performSaveInstanceState(Activity.java:1507)
    at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1308)
    at android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:5045)
    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4968)
    at android.app.ActivityThread.-wrap21(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1665)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6823)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1557)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)



Crash with auto-rotation enabled : Newpipe 19.3 RC1 debug version - more different ways to produce crashes.

Steps to produce problem/crash:

  1. Auto-rotation must be enabled on the device used for testing.
  2. Open Newpipe 19.3 RC1 debug version.
  3. From the main screen, click on hamburger icon/3-line icon on top left side. Select any of the following (crash occurs for any after following additional steps below):
    Trending, Subscriptions, What's New, Bookmarked Playlists, or History.
  4. Rotate device 90 degrees until display orientation updates.
  5. Rotate device 90 degrees back to starting orientation. Newpipe will crash.

This does not occur with Newpipe 19.2.

From crash after selecting Trending above:

Exception

  • __User Action:__ ui error
  • __Request:__ App crash, UI failure
  • __Content Language:__ en_US
  • __Service:__ none
  • __Version:__ 0.19.3
  • __OS:__ Linux Android 9 - 28

Crash log

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View androidx.recyclerview.widget.RecyclerView.getFocusedChild()' on a null object reference
    at org.schabi.newpipe.fragments.list.BaseListFragment.getFocusedPosition(BaseListFragment.java:134)
    at org.schabi.newpipe.fragments.list.BaseListFragment.writeTo(BaseListFragment.java:152)
    at org.schabi.newpipe.fragments.list.BaseListInfoFragment.writeTo(BaseListInfoFragment.java:79)
    at org.schabi.newpipe.util.StateSaver.tryToSave(StateSaver.java:219)
    at org.schabi.newpipe.util.StateSaver.tryToSave(StateSaver.java:177)
    at org.schabi.newpipe.fragments.list.BaseListFragment.onSaveInstanceState(BaseListFragment.java:187)
    at androidx.fragment.app.Fragment.performSaveInstanceState(Fragment.java:2766)
    at androidx.fragment.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManagerImpl.java:2289)
    at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2348)
    at androidx.fragment.app.Fragment.performSaveInstanceState(Fragment.java:2768)
    at androidx.fragment.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManagerImpl.java:2289)
    at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2348)
    at androidx.fragment.app.FragmentController.saveAllState(FragmentController.java:151)
    at androidx.fragment.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:513)
    at androidx.appcompat.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:533)
    at android.app.Activity.performSaveInstanceState(Activity.java:1550)
    at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1444)
    at android.app.ActivityThread.callActivityOnSaveInstanceState(ActivityThread.java:5003)
    at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:4325)
    at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4951)
    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4888)
    at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1864)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:205)
    at android.app.ActivityThread.main(ActivityThread.java:6996)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:884)



I pushed a fix for the rotation bug at #3495. Could you test it out? Here is a debug apk: app-debug.zip

I pushed a fix for the rotation bug at #3495. Could you test it out? Here is a debug apk: app-debug.zip

Appears to be fixed for the cases I reported. Awesome :+1:

Here is RC2: NewPipe_0.19.3_RC2.apk.zip

Fixed: rotation bug
Improved: detect more tv devices

It also fixed the package name. Thanks!

Any news fixes since RC2?

Last RC: NewPipe_v0.19.3_RC3.apk.zip

@androidSwDev099: Yes, TeamNewPipe/nanojson#3 and some more translations

i get a crash report when searching for albums in YouTube music

Is youtube music a dedicated option or a part of yt?

@MD77MD: What search term are you using? And could you post the crash report here (using the markdown converter)?

@surrodox2001: It's a search filter, i.e. if you have YouTube as active service, press the vertical ellipsis when searching and you have that option.

I think the issue is not when searching, but when using results: YouTube Music albums cause crashes because of an unhandled banner

See https://github.com/TeamNewPipe/NewPipe/issues/3218 https://github.com/TeamNewPipe/NewPipe/issues/3317, and the fix but not ready https://github.com/TeamNewPipe/NewPipeExtractor/pull/285

NewPipe_v0.19.3_RC4.apk.zip fixes the crash when searching for YouTube Music albums.

@TobiGr @wb9688 Why is extractor version 0.19.4 and not 0.19.3?

https://github.com/TeamNewPipe/NewPipeExtractor/commit/8a79b14077c59d17b2aea7cffe93feb3ce6f2ed4

@opusforlife2 because I have fat fingers...

Was this page helpful?
0 / 5 - 0 ratings