PipePipe icon indicating copy to clipboard operation
PipePipe copied to clipboard

[Bug] NicoNico livestreams not working

Open DatabaseWhoa opened this issue 9 months ago • 3 comments

Checklist (Your issue will be automatically closed if you delete this part)

  • [x] I make sure that there are no existing issues - open or closed - which I could contribute my information to.
  • [x] I understand that issues with limited impact, such as those occurring on specific devices or under specific network conditions, will not be fixed.
  • [x] I am able to reproduce the bug with the latest version given here: CLICK THIS LINK.
  • [x] I have attached the error report in the issue.

Describe the bug NNL won't work or show thumbnails when LIVE videos are searched for.

Frequency 💯 Percent

Steps to reproduce the bug Search for videos on NN but select live videos specifically.

Device (e.g. Pixel 9 Pro) Seems to fail across every device I've tried so far.

Error report

Exception

  • User Action: requested stream
  • Request: https://live.nicovideo.jp/watch/lv347266644
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: NicoNico (Anonymous)
  • Version: 4.2.1
  • OS: Linux TCL/T601DL/Bremen_TF:11/RKQ1.210614.002/vA6G:user/release-keys 11 - 30
Crash log

java.lang.RuntimeException: com.grack.nanojson.JsonParserException: Unexpected token 'error' on line 1, char 1
	at org.schabi.newpipe.extractor.services.niconico.extractors.NiconicoStreamExtractor.getRelatedItems(NiconicoStreamExtractor.java:336)
	at org.schabi.newpipe.extractor.utils.ExtractorHelper.getRelatedItemsOrLogError(ExtractorHelper.java:48)
	at org.schabi.newpipe.extractor.stream.StreamInfo.extractOptionalData(StreamInfo.java:441)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:110)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:88)
	at org.schabi.newpipe.util.ExtractorHelper.getNewStreamInfo(ExtractorHelper.java:132)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:127)
	at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(Unknown Source:0)
	at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda5.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:923)
Caused by: com.grack.nanojson.JsonParserException: Unexpected token 'error' on line 1, char 1
	at com.grack.nanojson.JsonTokener.createParseException(Unknown Source:44)
	at com.grack.nanojson.JsonTokener.createHelpfulException(Unknown Source:119)
	at com.grack.nanojson.JsonTokener.advanceToToken(Unknown Source:95)
	at com.grack.nanojson.JsonParser.advanceToken(Unknown Source:12)
	at com.grack.nanojson.JsonParser.parse(Unknown Source:1)
	at com.grack.nanojson.JsonParser$JsonParserContext.from(Unknown Source:19)
	at org.schabi.newpipe.extractor.services.niconico.extractors.NiconicoStreamExtractor.getRelatedItems(NiconicoStreamExtractor.java:329)
	... 32 more


Additional context

If a request could be made in this report, it's an option to have error reports sent to you automatically rather than go through all these troublesome things. Essentially an automatic crash/error report. Would probably end almost all problems for good if issues are addressed quickly since most who use an app would never report any issues when they arise, preferring to simply leave/uninstall.

DatabaseWhoa avatar Mar 14 '25 14:03 DatabaseWhoa

NicoNico is applying encryption to live streams, which makes our app unable to play them.

We have to wait until the community find a way to decrypt them, see https://github.com/yt-dlp/yt-dlp/issues/12365

InfinityLoop1308 avatar Mar 19 '25 08:03 InfinityLoop1308

For your suggestion, the problem is F-Droid doesn't allow apps to report anything automatically, so that's the best we can do.

InfinityLoop1308 avatar Mar 19 '25 08:03 InfinityLoop1308