Newpipe: Release 0.20.3

Created on 10 Nov 2020  ·  30Comments  ·  Source: TeamNewPipe/NewPipe

Changelogs

App

New

  • Replace specific enqueue options with only one #4425
  • Two finger to close player gesture #4476
  • Add button in settings to clear reCAPTCHA cookies #4453
  • Add option to not colorize notification #4643

Improved

  • Do not show notification creation / update time #4410
  • Remove remember popup properties setting #4367
  • Ask for confirmation before replacing even single video queues #4463
  • Also delete stream state when deleting stream history #4413
  • Improve age restriction and yt restricted content strings #4354

Fixed

  • Fix crash when stream was paused and fast forward / rewind buttons were clicked #4410
  • Fix PlaylistAppendDialog showing when no local playlists exist #4345
  • Don't rearrange lists by dragging the thumbnails #4550
  • Fix opening VideoDetailFragment and more #4562

    • Fix infinite buffering

    • Better detect when to autoplay and when not to

    • Make sharing to NewPipe more consistent

  • Fix playlist select dialog and do some refactoring #4771
  • Change YouTube subscription import instructions to Google takeout #4759
  • Correct Gigaget's license from GPLv2 to GPLv3 #4892

Localization

  • Add Santali language #4749
  • Add Korean translation of the README #4845
  • Updated translations

Development

(huge thanks to @Isira-Seneviratne)

  • Use DisplayCutoutCompat in VideoPlayerImpl #4338
  • Use DrawableCompat. #4592
  • Use ContextCompat methods #4276
  • Use TextViewCompat.setCompoundDrawablesRelativeWithIntrinsicBounds(). #4594
  • Hide Leaks launcher icon #4436 #4450
  • Format all XML resources #4471
  • Disable Ktlint pending upstream update #4517
  • Use Core KTX functions #4547
  • Use multidex for all build types. #4557
  • Migrate AboutActivity to ViewPager2 #4553
  • Optimize and shrink app PNGs #4610
  • Convert notification actions to a custom preference #4652
  • Use Java 8 APIs #3817 #4556
  • Separate player gesture logic and UI #4587
  • Use RxJava instead of AsyncTask #4499
  • Change loop index from float to int #4784
  • More miscellaneous little fixes and improvements #4710
  • Fix NullPointerException in queue handling and improved performance #4555

Other

  • Pull request template reworked #4317
  • Issue templates reworked #4378 #4379 #4415 #4431 #4606
  • Add info on how to use a local NewPipe Extractor version #4528
  • Add Weblate widget to README #4530

Extractor

Breaking

NewPipe Extractor now requires at least Java 8!

New

Improvement

Fixed

Development

APK for testing

‼️Only report NEW issues here, not known ones‼️
0_20_3_RC5.zip
Corresponding PR: #4852

Most helpful comment

please, don't simplify the options!
remove this!
https://github.com/TeamNewPipe/NewPipe/pull/4367

why you're deleting the choice of using options!
the option should be workable!
who give you the right to choose for others ???
personally, i, and many others should have the option to not save popup positions!!! btw i used this option many years..

All 30 comments

@Stypox all your PR links for the extractor point to PRs from NewPipe, not the extractor. Same in #4852.

why does this say 0.20.2 when the app shows release_0.20.3. anyways this error popped up but video was playing behind it

Exception

  • __User Action:__ ui error
  • __Request:__ App crash, UI failure
  • __Content Country:__ PK
  • __Content Language:__ en-US
  • __App Language:__ en_US
  • __Service:__ none
  • __Version:__ 0.20.2
  • __OS:__ Linux Android 8.0.0 - 26
    Crash log

java.lang.RuntimeException: Error receiving broadcast Intent { act=org.schabi.newpipe.VideoDetailFragment.ACTION_PLAYER_STARTED flg=0x10 } in org.schabi.newpipe.MainActivity$3@329288f
    at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_52201(LoadedApk.java:1349)
    at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.$m$0(Unknown Source:4)
    at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.run(Unknown Source:0)
    at android.os.Handler.handleCallback(Handler.java:869)
    at android.os.Handler.dispatchMessage(Handler.java:101)
    at android.os.Looper.loop(Looper.java:206)
    at android.app.ActivityThread.main(ActivityThread.java:6784)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:852)
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
    at androidx.fragment.app.FragmentManager.checkStateLoss(FragmentManager.java:1691)
    at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:1731)
    at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:321)
    at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:286)
    at org.schabi.newpipe.util.NavigationHelper.showMiniPlayer(NavigationHelper.java:399)
    at org.schabi.newpipe.MainActivity$3.onReceive(MainActivity.java:822)
    at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_52201(LoadedApk.java:1338)
    ... 9 more



edit: every video that i click back on, it shows the page twice before the player falls down and a black screen when going from full screen

edit: every video that i click back on, it shows the page twice before the player falls down and a black screen when going from full screen

Saw this as well. Finished a video. Tapped back. It went from the player with the replay button to the thumbnail with red progress indicator. Tapped back again. Same page, without the indicator. Finally, the third tap back minimized the player.

Initiate a gesture such that once the video ends and exits full screen, your finger will not be in the embedded player area.

If the gesture icon (volume/brightness) is visible on screen when the video ends, the icon remains there indefinitely. If you tap the player area again, it gets replaced by the Replay button.

please, don't simplify the options!
remove this!
https://github.com/TeamNewPipe/NewPipe/pull/4367

why you're deleting the choice of using options!
the option should be workable!
who give you the right to choose for others ???
personally, i, and many others should have the option to not save popup positions!!! btw i used this option many years..

and skipping to java8 won't touch existent min_sdk_19/android4.4 of NP ?
api26 will be only the target_sdk(not the min_sdk), is it right?

upd
yes, all works on my all devices, it seems we still on min_sdk_19! Great!

it's not the dialog when just silently minimize the comment with a bunch of thumbups...
but #4367 it's not improvement , it is just anti-improvement((, for sorrow((

i dunno, may be it's a global...
but on yt stream translation there is no on-screen menu with choosing of video quality, but when you see yt stream by web page - the option to choose video quality exists.

it's not the dialog when just silently minimize the comment with a bunch of thumbups...

@DI555 You don't get to say this after triple posting the same comment, and I can't help notice that it's been 3 hours since I replied to you on the related PR and you haven't said anything there. Is it your intent to just complain or do you want to have a proper discussion?

oh, sorry..., i might posted it to different topics, i may delete others if it's needed!

It is alright. I have minimized them as 'Duplicate'. Now I'm waiting for your reply.

I had a problem when running multiple instances of newpipe that I didn't had before, somehow this version, hijacked the notification from the previous release. I don't know how to reproduce though as it happened only once...

@huckvrni Do you mean #4653?

Nope, it didn't crash, it just somehow merged the queued backgroud list so that both instances controlled it at the same time¯_(ツ)_/¯

oh, could i answer here, please.., and did read your answer either!

i might the one of some/many (as seems as were thumbups)... who used exactly this option.
logically i did this because the reason -
i may change popup size and position in time of using NP , but just doesn't want to get it remembered.., just was little cute option that don't want to lose.
and after all would suggest a little co-options 'popup default size' and 'popup default position' just to use with that i discribed upper!

the benefit is in that - i may variaty changing position and size during the session , but want it to be starting from one position and size what i want!
imho this concept with using optionable trigger switch to on/off is giving much more degrees of freedom!

and of course my appologize for @panoreak , huge work is done...
but things're always doing the way you think nobody use it, and suddenly appears some dudes that are using it for years((..
so i wanted to say that some thumbuped dudes and i will feel the lack of this option if it'll be cut out the app((..

Today, suddenly Newpipe PR 20.2 and this debug version/testing version 20.3 stopped playing videos. Yesterday, both 20.2 and debug 20.3 were working good.
Checked 20.2 and testing apk 20.3 in Android 6 and 20.2 in Android 9.

Error Report in Android 6, testing 20.3:

{"user_action":/equested stream","request":"https://www.youtube.com/watch?v=3arkYqvD5q4","content_language":"en-US","content_country":"US","app_language":"en_US","service":"YouTube","package":"org.schabi.newpipe.debug.release0203","version":"0.20.3","os":"Linux Android 6.0.1 - 23","time":"2020-11-12 01:01","exceptions":["java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference\n\tat java.io.StringReader.<init>(StringReader.java:47)\n\tat com.grack.nanojson.JsonParser$JsonParserContext.from(Unknown Source)\n\tat org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.fetchVideoInfoPage(YoutubeStreamExtractor.java:737)\n\tat org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.onFetchPage(YoutubeStreamExtractor.java:717)\n\tat org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:56)\n\tat org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:68)\n\tat org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:64)\n\tat org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:116)\n\tat org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$YTHJjScxCJNO1LTCqs3IKy35iyY.call(lambda)\n\tat io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)\n\tat io.reactivex.Single.subscribe(Single.java:3666)\n\tat io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)\n\tat io.reactivex.Single.subscribe(Single.java:3666)\n\tat io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)\n\tat io.reactivex.Maybe.subscribe(Maybe.java:4290)\n\tat io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)\n\tat io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)\n\tat io.reactivex.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)\n\tat io.reactivex.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)\n\tat io.reactivex.Flowable.subscribe(Flowable.java:14935)\n\tat io.reactivex.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)\n\tat io.reactivex.Maybe.subscribe(Maybe.java:4290)\n\tat io.reactivex.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)\n\tat io.reactivex.Single.subscribe(Single.java:3666)\n\tat io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)\n\tat io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)\n\tat io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)\n\tat io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:237)\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\n\tat java.lang.Thread.run(Thread.java:818)\n"],"user_comment":""}

Yeah

Today, suddenly Newpipe PR 20.2 and this debug version/testing version 20.3 stopped playing videos. Yesterday, both 20.2 and debug 20.3 were working good.
Checked 20.2 and testing apk 20.3 in Android 6 and 20.2 in Android 9.

Yeah, was just about to post an issue for that before seeing your comment. Looks like youtube's changed some stuff around again, getting this on most videos, infinite loading on others. Was completely fine a couple hours ago though.

Exception

org.schabi.newpipe.extractor.exceptions.ParsingException: Could not parse yt player response
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getPlayerResponse(YoutubeStreamExtractor.java:735)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.onFetchPage(YoutubeStreamExtractor.java:679)
    at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:56)
    at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:68)
    at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:64)
    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:3666)
    at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
    at io.reactivex.Single.subscribe(Single.java:3666)
    at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
    at io.reactivex.Maybe.subscribe(Maybe.java:4290)
    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:14935)
    at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
    at io.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io.reactivex.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
    at io.reactivex.Single.subscribe(Single.java:3666)
    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:1162)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
    at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
    at java.io.StringReader.<init>(StringReader.java:50)
    at com.grack.nanojson.JsonParser$JsonParserContext.from(Unknown Source:6)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getPlayerResponse(YoutubeStreamExtractor.java:733)
    ... 30 more



Yeah, was just about to post an issue for that before seeing your comment. Looks like youtube's changed some stuff around again, getting this on most videos, infinite loading on others. Was completely fine a couple hours ago though.

It seems that the issue was on YouTube's part and they've fixed it. So, NewPipe works fine now. :)

Does this thing have the landscape mode?

oh, could i answer here, please

@DI555 No. As you can see in the top comment,

‼️Only report NEW issues here, not known ones‼️

We shouldn't clutter the RC thread with off-topic conversation. You should reply to my comment on the relevant PR. Minimizing your comment here as off-topic.

Does this thing have the landscape mode?

@nikhilCad What does this comment have to do with finding bugs in the release candidate?

The two finger swipe to close player: sometimes it makes the player swipe down to the bottom as it closes, but sometimes, the moment your fingers leave the screen, the player instantly vanishes without completing the animation. I can reproduce this fairly consistently if one of my fingers travels farther down than the other during the swipe action.

Every video that i click back on, it shows the page twice before the player falls down and a black screen when going from full screen

Fixed in RC2: 0_20_3_RC2.zip

Relevant commit: https://github.com/TeamNewPipe/NewPipe/pull/4852/commits/838b488880c8e95730b68ac291b68deae56a0cb2

@opusforlife2 That's a bug from the beginning of the unified player with its collapse ability. It will need some more proper multi-touch-handling.
You can reproduce it well, when you start dragging the player from the bottom a little bit, then press with another finger on the screen and finally swipe up with the first finger while releasing it.

  • Merged PR #4771
  • Added 81c24510a87609daf75a41583b9ac384398e6f41 to dev to allow Weblate translators to translate the fastlane changelog before release (@B0pol could you sync?)

RC3: 0_20_3_RC3.zip

* Merged PR #4771
* Added [81c2451] to `dev`

Merged and added to dev', but RC3 is built fromrelease_0.20.3'?

Yes, but Weblate does not allow fetching files to translate from other branches (as far as we know), so I had to put the changelog on dev. The RC3 is built upon release_0.20.3 after merging #4771 and rebasing onto dev

Another release candidate, hopefully the last one:

  • #4892
  • Revert #4367 in 7476498823105e1d52ae55f7eb02f0735962d115 @DI555

RC4: 0_20_3_RC4.zip

  • Add Uzbek language (O'zbek) and remove Neapolitan 7a6e0d651f3b3b7033bb5a9221afcb8cf4bcca8b
    Neapolitan only has 43 translated strings, so it should not appear as a possible language

RC5: 0_20_3_RC5.zip

Was this page helpful?
0 / 5 - 0 ratings

Related issues

mouarfff picture mouarfff  ·  3Comments

fnadde42 picture fnadde42  ·  3Comments

danialbehzadi picture danialbehzadi  ·  3Comments

android1973 picture android1973  ·  3Comments

Hunter9888x picture Hunter9888x  ·  3Comments