infinityloop1308 / pipepipe Goto Github PK
View Code? Open in Web Editor NEWA FLOSS Android app to let you browse YouTube, NicoNico and BiliBili freely. Better NewPipe.
License: GNU General Public License v3.0
A FLOSS Android app to let you browse YouTube, NicoNico and BiliBili freely. Better NewPipe.
License: GNU General Public License v3.0
Replace the current weak discovering mechanism to an enhanced stream discovery.
Some points:
Currently I can do nothing as the problem seems to be NewPipe's downloader doesn't support BiliBili's format, though I remember it worked before.
If you have related skills about video processing, please help me!
Logs:
java.util.NoSuchElementException: expected trun found sbgp
at org.schabi.newpipe.streams.Mp4DashReader.readBox(Mp4DashReader.java:282)
at org.schabi.newpipe.streams.Mp4DashReader.parseTraf(Mp4DashReader.java:386)
at org.schabi.newpipe.streams.Mp4DashReader.parseMoof(Mp4DashReader.java:351)
at org.schabi.newpipe.streams.Mp4DashReader.getNextChunk(Mp4DashReader.java:197)
at org.schabi.newpipe.streams.Mp4FromDashWriter.build(Mp4FromDashWriter.java:186)
at us.shandian.giga.postprocessing.M4aNoDash.process(M4aNoDash.java:37)
at us.shandian.giga.postprocessing.Postprocessing.run(Postprocessing.java:174)
at us.shandian.giga.get.DownloadMission.doPostprocessing(DownloadMission.java:704)
at us.shandian.giga.get.DownloadMission.$r8$lambda$J0GR1urTFneOp2O30GpOM3TNG0I(Unknown Source:0)
at us.shandian.giga.get.DownloadMission$$ExternalSyntheticLambda1.run(Unknown Source:2)
at java.lang.Thread.run(Thread.java:923)
List:
merging-search-client
and meging-search-extractor
to continue work on this. RecycleView
inside another RecycleView
. If you have knowledge about android UI, please help me fix this. Check branch merging-comment-replies
.Support 360p & 480p for BiliBili service
I am not good at English so I use machine translation.
The application crashes when I finish playing a NicoNico video to the end with comments displayed.
It works fine when comments are hidden.
App Version v2.0.1
Android 10
I don't know why it happened
Appearance: Black
other settings default
Video
不买错亿!神作集体骨折价!【steam夏促】
https://m.bilibili.com/video/BV1va411W7yY?p=1
{"user_action":"ui error","request":"ACRA report","content_language":"en-US","content_country":"US","app_language":"en_US","service":"none","package":"org.schabi.newpipe","version":"0.23.0","os":"Linux Android 12 - 32","time":"2022-06-28 14:24","exceptions":["java.lang.RuntimeException: Canvas: trying to draw too large(228985130bytes) bitmap.\n\tat android.graphics.RecordingCanvas.throwIfCannotDraw(RecordingCanvas.java:266)\n\tat android.graphics.BaseRecordingCanvas.drawBitmap(BaseRecordingCanvas.java:94)\n\tat android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:549)\n\tat com.squareup.picasso.PicassoDrawable.draw(PicassoDrawable.java:109)\n\tat android.widget.ImageView.onDraw(ImageView.java:1442)\n\tat android.view.View.draw(View.java:22704)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21579)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994)\n\tat android.view.View.draw(View.java:22707)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21579)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat androidx.recyclerview.widget.RecyclerView.drawChild(RecyclerView.java:5204)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.draw(View.java:22707)\n\tat androidx.recyclerview.widget.RecyclerView.draw(RecyclerView.java:4603)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21579)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21570)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.draw(View.java:22707)\n\tat androidx.viewpager.widget.ViewPager.draw(ViewPager.java:2426)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21579)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1277)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21570)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.draw(View.java:22707)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21579)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.java:268)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.java:256)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21570)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1277)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21570)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1478)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21570)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21570)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21570)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21570)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21570)\n\tat android.view.View.draw(View.java:22435)\n\tat android.view.ViewGroup.drawChild(ViewGroup.java:4528)\n\tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)\n\tat android.view.View.draw(View.java:22707)\n\tat com.android.internal.policy.DecorView.draw(DecorView.java:819)\n\tat android.view.View.updateDisplayListIfDirty(View.java:21579)\n\tat android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:534)\n\tat android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:540)\n\tat android.view.ThreadedRenderer.draw(ThreadedRenderer.java:616)\n\tat android.view.ViewRootImpl.draw(ViewRootImpl.java:4525)\n\tat android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4245)\n\tat android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3374)\n\tat android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2179)\n\tat android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8787)\n\tat android.view.Choreographer$CallbackRecord.run(Choreographer.java:1037)\n\tat android.view.Choreographer.doCallbacks(Choreographer.java:845)\n\tat android.view.Choreographer.doFrame(Choreographer.java:780)\n\tat android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022)\n\tat android.os.Handler.handleCallback(Handler.java:938)\n\tat android.os.Handler.dispatchMessage(Handler.java:99)\n\tat android.os.Looper.loopOnce(Looper.java:201)\n\tat android.os.Looper.loop(Looper.java:288)\n\tat android.app.ActivityThread.main(ActivityThread.java:7870)\n\tat java.lang.reflect.Method.invoke(Native Method)\n\tat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)\n\tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)\n"],"user_comment":""}
Add an icon to the player to support sleep mode
java.lang.ArithmeticException
at j$.time.a.d(Unknown Source:67)
at j$.time.Duration.toMillis(Unknown Source:4)
at org.schabi.newpipe.player.bulletComments.MovieBulletCommentsPlayer.drawComments(MovieBulletCommentsPlayer.java:105)
at org.schabi.newpipe.player.bulletComments.MovieBulletCommentsPlayer.complete(MovieBulletCommentsPlayer.java:168)
at org.schabi.newpipe.player.Player.completeBCPlayer(Player.java:2300)
at org.schabi.newpipe.player.Player.changeState(Player.java:2204)
at org.schabi.newpipe.player.Player.updatePlaybackState(Player.java:2117)
at org.schabi.newpipe.player.Player.onPlaybackStateChanged(Player.java:2083)
at com.google.android.exoplayer2.ExoPlayerImpl.lambda$updatePlaybackInfo$22(ExoPlayerImpl.java:1916)
at com.google.android.exoplayer2.ExoPlayerImpl.$r8$lambda$JgXP2uBTbbt6JFsjC-TSVgxOYeo(Unknown Source:0)
at com.google.android.exoplayer2.ExoPlayerImpl$$ExternalSyntheticLambda10.invoke(Unknown Source:4)
at com.google.android.exoplayer2.util.ListenerSet$ListenerHolder.invoke(ListenerSet.java:281)
at com.google.android.exoplayer2.util.ListenerSet.lambda$queueEvent$0(ListenerSet.java:190)
at com.google.android.exoplayer2.util.ListenerSet.$r8$lambda$NbKDn9xtItiyMgYZmjIx_Sv1FFQ(Unknown Source:0)
at com.google.android.exoplayer2.util.ListenerSet$$ExternalSyntheticLambda1.run(Unknown Source:6)
at com.google.android.exoplayer2.util.ListenerSet.flushEvents(ListenerSet.java:211)
at com.google.android.exoplayer2.ExoPlayerImpl.updatePlaybackInfo(ExoPlayerImpl.java:1947)
at com.google.android.exoplayer2.ExoPlayerImpl.handlePlaybackInfo(ExoPlayerImpl.java:1774)
at com.google.android.exoplayer2.ExoPlayerImpl.lambda$new$1(ExoPlayerImpl.java:306)
at com.google.android.exoplayer2.ExoPlayerImpl.$r8$lambda$nOBJYkeEQ2uz3sBKLToLWmzrgZk(Unknown Source:0)
at com.google.android.exoplayer2.ExoPlayerImpl$$ExternalSyntheticLambda5.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6698)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:495)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:859)
This is an known issue.
Cause: I use the api link to represent video url rather than the origin video link. It also results in failing to "open in app" at a BiliBili website.
I will not fix it since the fix needs a large amount of code to be rewrote, but PR of this issue is welcomed.
when pasting search string in yt, press enter, - process is going, but no results at all, just clear result place :(
The color of the current player feels very bright. I hope you can consider changing other colors, such as white, black and dark. Or other colors. Thank you very much for your work. It's really hard. I hope you can think about it. I really need this. Please!
On version 1.9.5, minimum SDK is 19 (4.4) and target SDK is 29 (10)
But in version 2.0.0, minimum SDK is 28 (9) and target SDK is 29 (10)
Could you consider changing min SDK to 19 again?
If you update target SDK to higher android version its ok. but because you change minimum SDK i can't update app
I really don't understand why many developers keep change the minimum SDK to be higher, when some users like me are stuck on the latest android version which is out of date and won't be able to update anymore, even though the condition of the phone is still good. and before getting an update, the same apps could still be used and worked well
It feels like app developers are now forcing people to have to buy a new phone just so they can update their apps.
This does not only happen to closed source apps but open source apps too. without considering that the people being coerced were in a dire financial situation and had other more important things in their lives as priority
It's really sad
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at org.schabi.newpipe.extractor.services.bilibili.utils.getRecordApiUrl(utils.java:74)
at org.schabi.newpipe.extractor.services.bilibili.extractors.BilibiliChannelExtractor.onFetchPage(BilibiliChannelExtractor.java:46)
at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:60)
at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:54)
at org.schabi.newpipe.util.ExtractorHelper.lambda$getChannelInfo$4(ExtractorHelper.java:128)
at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$BOLWstv98dC8pFAG_uir5gPXYwY(Unknown Source:0)
at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda3.call(Unknown Source:4)
at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
That is a known issue. Currently, it seems a bug of ExoPlayer2, and they haven't figured out how to fix it yet.
Seems there is more subdomains for NicoNico and BiliBili link, and sometimes it cannot recognize the URL when opened.
Every Bilibili livestream does not play properly, can you fix it if possible?
com.google.android.exoplayer2.ExoPlaybackException: Source error
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:641)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:613)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 403
at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:396)
at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:258)
at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
at com.google.android.exoplayer2.upstream.DataSourceInputStream.checkOpened(DataSourceInputStream.java:99)
at com.google.android.exoplayer2.upstream.DataSourceInputStream.open(DataSourceInputStream.java:62)
at com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:174)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
First of all, I want to thank you for all your work.
I don't know, maybe you are working on this but I decided to open a new issue.
5 days ago, I opened a issue about timestamps in description. #64 (comment)
And a day later, you released 2.4.0.
In this version, you fixed what i said. Thanks.
But now, the main problem is;
You fixed timestamps in description but this update/fix broke timestamps in comments.
I want to divide this issue into two topics. Comments and Description
••••••••••••••••
----Timestamps in COMMENTS (main problem now)
When i click it ,goes to beginning of the video. Video player or PopUp. Same problem for all videos. (It started in 2.4.0)
••••••••••••••••
--Timestamps in DESCRIPTION
You fixed this and works well. But except very small issue (less important )
https://www.youtube.com/watch?v=sKA6o_B0lNs
When I open this video in PopUp player, timestamps in description dont work, not responding.
https://www.youtube.com/watch?v=ED7sZbfiP_k
But in this video, there is no problem with description Timestamps on popup player
••••••••••••••••••
--- If you are going to work on this issue, I think you should check app especially with this two videos after fix. With comment/description timestamps and with main player /popup player seperataly.
https://www.youtube.com/watch?v=sKA6o_B0lNs
https://www.youtube.com/watch?v=ED7sZbfiP_k
---If fixing timestamps in description brakes timestamps in comments and if there is no way to fix together , it is too hard to do or it takes long time, I think you should undo all this fix and go back to 2.3.3 codes about timestamps for now/temporarily.
All videos failed to play
com.google.android.exoplayer2.ExoPlaybackException: Source error
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:641)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:613)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:244)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: java.net.UnknownHostException: Unable to resolve host "xy115x223x29x70xy.mcdn.bilivideo.cn": No address associated with hostname
at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:365)
at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:258)
at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1009)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
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)
Caused by: java.net.UnknownHostException: Unable to resolve host "xy115x223x29x70xy.mcdn.bilivideo.cn": No address associated with hostname
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:156)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
at java.net.InetAddress.getAllByName(InetAddress.java:1152)
at com.android.okhttp.Dns$1.lookup(Dns.java:41)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:178)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:144)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:86)
at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:176)
at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:90)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:30)
at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:636)
at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:517)
at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:359)
... 7 more
Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
at libcore.io.Linux.android_getaddrinfo(Native Method)
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:74)
at libcore.io.BlockGuardOs.android_getaddrinfo(BlockGuardOs.java:200)
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:74)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:135)
... 25 more
配音演员高全胜 and others - bili_user - sorry, something went wrong
channel bug since 1.7.2
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.replace(java.lang.CharSequence, java.lang.CharSequence)' on a null object reference
at org.schabi.newpipe.extractor.services.bilibili.extractors.BilibiliLiveInfoItemExtractor.getName(BilibiliLiveInfoItemExtractor.java:26)
at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.extract(StreamInfoItemsCollector.java:48)
at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.commit(StreamInfoItemsCollector.java:108)
at org.schabi.newpipe.extractor.services.bilibili.extractors.BilibiliChannelExtractor.getInitialPage(BilibiliChannelExtractor.java:97)
at org.schabi.newpipe.extractor.utils.ExtractorHelper.getItemsPageOrLogError(ExtractorHelper.java:21)
at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:94)
at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:55)
at org.schabi.newpipe.util.ExtractorHelper.lambda$getChannelInfo$4(ExtractorHelper.java:126)
at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$BOLWstv98dC8pFAG_uir5gPXYwY(Unknown Source:0)
at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda3.call(Unknown Source:4)
at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
at io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15868)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
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:920)
having the ability to see comment repiles is that one thing missing for me to get the full youtube feel, it would be amazing to make a PR to newpipe or newpipe sponserblock to add this feature to version 0.24
When i click timestamps in video description, always responds me with "open with..." notification and shows other apps in my phone. Always i have to choose animepipe app and it works fine but wasting my time.
But there is no problem with timestamps in comments. it opens as soon as i click.
Hello, can you add SponsorBlock feature if possible? Not sure if AnimePipeExtractor would be compatible with SponsorBlock but I would like to see if that's possible.
Sort order
to ascending.Sort by
to different one.search
.
java.lang.ClassCastException: org.schabi.newpipe.extractor.services.niconico.search.filter.NiconicoFilters$NiconicoSortOrderFilterItem cannot be cast to org.schabi.newpipe.extractor.services.niconico.search.filter.NiconicoFilters$NiconicoSortFilterItem
at org.schabi.newpipe.extractor.services.niconico.search.filter.NiconicoFilters.evaluateSelectedFilters(NiconicoFilters.java:44)
at org.schabi.newpipe.extractor.services.niconico.linkHandler.NiconicoSearchQueryHandlerFactory.getUrl(NiconicoSearchQueryHandlerFactory.java:31)
at org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory.fromQuery(ListLinkHandlerFactory.java:61)
at org.schabi.newpipe.extractor.linkhandler.SearchQueryHandlerFactory.fromQuery(SearchQueryHandlerFactory.java:38)
at org.schabi.newpipe.util.ExtractorHelper.lambda$searchFor$0(ExtractorHelper.java:88)
at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda1.call(Unknown Source:8)
at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
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)
When watching youtube live videos, the danmaku goes slightly faster than video itself, keep adding time gaps between danmaku and video over time.
As in a video lasting 4 hours, it will end up with a roughly 20-30 seconds offset.
This also happens when directly jump through seekbar, so it's likely not a issue of rendering.
Something along the lines of the NPSB fork would be nice to know when an update is available.
I know that this app is not only for YouTube also not your primary focus but as in latest version of newpipe, they implemented new card layout. So, can we also add this to animepipe?
At first I thought this app supports bilibili.tv, but it turns out it's only bilibili.com. Is it possible in the future?
This feature is used to get some account-related videos. Login breaks the anonymity, but a dedicated throw-away account can minimize the downside and make it a universal player.
This project will make every effort to avoid sending unnecessary user data, if this feature is implemented, a list will be provided to show actions which need account data
Hello, I just tried out your fork (I am surprised that Bilibili was rejected from upstream because of censorship, when YouTube is also full of censorship) in order to view a few videos about the Sapphire Nitro+ B550i, however the app just fails to parse even the video details. Opening the page in an external browser works.
Here is the report:
org.schabi.newpipe.extractor.exceptions.ExtractionException: Some important stream information was not given.
at org.schabi.newpipe.extractor.stream.StreamInfo.extractImportantData(StreamInfo.java:124)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:81)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:73)
at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:118)
at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(Unknown Source:0)
at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda6.call(Unknown Source:4)
at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
at io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15868)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
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:764)
The same exact thing also happens with any other video.
I can only choose 360p for the image quality of niconico video.
Issue
App crashes twice when launched.
First when launched, once the notice is closed after a while another notice pops up.
How to reproduce
Install app
Run the app
Device
Samsung Galaxy Tab 4 7.0
Android 4.4.2
1.5GB RAM
Logcat:
animepipestopstwice.txt
In Bilibili, vedios only show 360p and 480p, not so clear. If video quality can reach 1080p, or al least 720p, it will bring us a better experience。
If either "Auto-enqueue next stream" or "Turn on YouTube's Restricted Mode" is enabled, YouTube Live Chat will not appear.
You should be able to reproduce this by enabling either "Auto-enqueue next stream" or "Turn on YouTube's Restricted Mode" and restarting AnimePipe.
This is an important feature which can be used to improve user experience significantly.
Needs UI change: a separated tab
Extractor change: a new module to enable long connect and extract live chats
Channel list is empty for some reason... Maybe related with this issue: TeamNewPipe/NewPipe#9038
org.schabi.newpipe.extractor.exceptions.ExtractionException: Some important stream information was not given.
at org.schabi.newpipe.extractor.stream.StreamInfo.extractImportantData(StreamInfo.java:124)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:81)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:73)
at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:118)
at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(Unknown Source:0)
at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda6.call(Unknown Source:4)
at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
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:920)
Reproduce:
Log:
java.lang.RuntimeException: Canvas: trying to draw too large(128000000bytes) bitmap. at android.graphics.RecordingCanvas.throwIfCannotDraw(RecordingCanvas.java:280) at android.graphics.BaseRecordingCanvas.drawBitmap(BaseRecordingCanvas.java:88) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:548) at com.squareup.picasso.PicassoDrawable.draw(PicassoDrawable.java:109) at android.widget.ImageView.onDraw(ImageView.java:1436) at com.google.android.material.imageview.ShapeableImageView.onDraw(ShapeableImageView.java:198) at android.view.View.draw(View.java:21979) at android.view.View.updateDisplayListIfDirty(View.java:20856) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.draw(View.java:21982) at android.view.View.updateDisplayListIfDirty(View.java:20856) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at androidx.recyclerview.widget.RecyclerView.drawChild(RecyclerView.java:5204) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.draw(View.java:21982) at androidx.recyclerview.widget.RecyclerView.draw(RecyclerView.java:4603) at android.view.View.updateDisplayListIfDirty(View.java:20856) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.updateDisplayListIfDirty(View.java:20847) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.draw(View.java:21982) at androidx.viewpager.widget.ViewPager.draw(ViewPager.java:2426) at android.view.View.updateDisplayListIfDirty(View.java:20856) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1277) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.updateDisplayListIfDirty(View.java:20847) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.draw(View.java:21982) at android.view.View.updateDisplayListIfDirty(View.java:20856) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.java:268) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.java:256) at android.view.View.updateDisplayListIfDirty(View.java:20847) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1277) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.updateDisplayListIfDirty(View.java:20847) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1478) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.updateDisplayListIfDirty(View.java:20847) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.updateDisplayListIfDirty(View.java:20847) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.updateDisplayListIfDirty(View.java:20847) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.updateDisplayListIfDirty(View.java:20847) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.updateDisplayListIfDirty(View.java:20847) at android.view.View.draw(View.java:21711) at android.view.ViewGroup.drawChild(ViewGroup.java:4432) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193) at android.view.View.draw(View.java:21982) at com.android.internal.policy.DecorView.draw(DecorView.java:808) at android.view.View.updateDisplayListIfDirty(View.java:20856) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:581) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:587) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:664) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3767) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3495) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2779) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1745) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7781) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1041) at android.view.Choreographer.doCallbacks(Choreographer.java:864) at android.view.Choreographer.doFrame(Choreographer.java:798) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1026) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) 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:940)
pull request
InfinityLoop1308/PipePipeExtractor#11
org.schabi.newpipe.extractor.stream.StreamInfo$StreamExtractException: Could not get any stream. See error variable to get further details.
at org.schabi.newpipe.extractor.stream.StreamInfo.extractStreams(StreamInfo.java:188)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:82)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:73)
at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:118)
at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(Unknown Source:0)
at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda6.call(Unknown Source:4)
at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
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:920)
I appreciate the effort but to get the full experience of improvements we have a problem in the future with forks
https://github.com/polymorphicshade/NewPipe has the option to skip segments that are marked as sponsored, summary and other categories.
https://github.com/bravenewpipe also offers additional services.
Wouldn't it make sense to contribute to the latter?
I am planing to push this app into F-Droid.
Although some features are still missing, the current version is stable enough to be released. Therefore, the main issue comes to be the appearance - it is not good to have exact the same logo as NewPipe and named with enhanced, since it will confuse new users and kind of aggressive.
If you have any ideas, please comment here! Thanks for your contribution.
default resolution
default popup resolution
limit resolution when using mobile data
360P and 480P for Bilibili and Niconico if there're more than 2 resolution options
240p=360p
144p=360p
720p=480p no account
1080p=480p no account
Beacause That's upstream repo's already maintained Min Sdk "21" NO BUGS, 28 is too high leaves out too many devices. Ready to test with Android 6 device, Android 5 has also similar to 6 not many BIG changes vis-a -vis Kitkat to Lollypop Changes. Thank You, Consider the Request.
I don't know how to reproduce it, but this problem occurs really often.
Temp solution: Play background and then return to foreground
If anyone finds how to reproduce it, please reply in this issue, and I will fix it ASAP.
Constant error while watching stream, and it is very annoying
org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get like count
at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getLikeCount(YoutubeStreamExtractor.java:452)
at org.schabi.newpipe.extractor.stream.StreamInfo.extractOptionalData(StreamInfo.java:280)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:83)
at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:73)
at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:121)
at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(Unknown Source:0)
at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda6.call(Unknown Source:4)
at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
at io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15868)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: org.schabi.newpipe.extractor.exceptions.ParsingException: Ratings are enabled even though the like button is missing
at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getLikeCount(YoutubeStreamExtractor.java:436)
... 30 more
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.