Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update extractor, thus including throttling fixes #6792

Merged
merged 1 commit into from
Aug 1, 2021

Conversation

XiangRongLin
Copy link
Collaborator

What is it?

  • Bugfix (user facing)
  • Feature (user facing)
  • Codebase improvement (dev facing)
  • Meta improvement to the project (dev facing)

Fixes the following issue(s)

APK testing

app-debug.zip

Due diligence

@XiangRongLin XiangRongLin added bug Issue is related to a bug youtube Service, https://www.youtube.com/ labels Jul 28, 2021
@Thewisem
Copy link

Try playing this video at 3x. Even though it is somewhat less, There is still lag which is only there is this version only.
https://www.youtube.com/watch?v=oIKmsy4aTVw
The previous debug had the same issue

@Thewisem
Copy link

Also whenever I open a video from my feed, this error comes up

Exception

Crash log

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:194)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:72)
	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$YTHJjScxCJNO1LTCqs3IKy35iyY.call(lambda)
	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:15753)
	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:614)
	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:237)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
	at java.lang.Thread.run(Thread.java:762)


@bauspanderu
Copy link

Having the same issue as @Thewisem I can't watch videos in this debug version at all. The regular version works fine except the buffering and comments.

@AudricV
Copy link
Member

AudricV commented Jul 29, 2021

@XiangRongLin I got a stack trace when I tried to get the video-only streams from jE1USQrs1rw video:

org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get video only streams
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getVideoOnlyStreams(YoutubeStreamExtractor.java:572)
	at org.schabi.newpipe.extractor.services.youtube.stream.YoutubeStreamExtractorDefaultTest$NotAvailable.testThrottling(YoutubeStreamExtractorDefaultTest.java:117)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:119)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: org.mozilla.javascript.EvaluatorException: missing '}' after the body of a function (kha#10)
	at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:79)
	at org.mozilla.javascript.DefaultErrorReporter.error(DefaultErrorReporter.java:66)
	at org.mozilla.javascript.Parser.addError(Parser.java:258)
	at org.mozilla.javascript.Parser.reportError(Parser.java:326)
	at org.mozilla.javascript.Parser.reportError(Parser.java:320)
	at org.mozilla.javascript.Parser.mustMatchToken(Parser.java:480)
	at org.mozilla.javascript.Parser.mustMatchToken(Parser.java:470)
	at org.mozilla.javascript.Parser.parseFunctionBody(Parser.java:771)
	at org.mozilla.javascript.Parser.function(Parser.java:926)
	at org.mozilla.javascript.Parser.function(Parser.java:858)
	at org.mozilla.javascript.Parser.parse(Parser.java:630)
	at org.mozilla.javascript.Parser.parse(Parser.java:570)
	at org.mozilla.javascript.Context.parse(Context.java:2533)
	at org.mozilla.javascript.Context.compileImpl(Context.java:2482)
	at org.mozilla.javascript.Context.compileString(Context.java:1486)
	at org.mozilla.javascript.Context.compileString(Context.java:1475)
	at org.mozilla.javascript.Context.evaluateString(Context.java:1231)
	at org.schabi.newpipe.extractor.utils.JavaScript.run(JavaScript.java:20)
	at org.schabi.newpipe.extractor.services.youtube.YoutubeThrottlingDecrypter.decryptNParam(YoutubeThrottlingDecrypter.java:101)
	at org.schabi.newpipe.extractor.services.youtube.YoutubeThrottlingDecrypter.apply(YoutubeThrottlingDecrypter.java:81)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getVideoOnlyStreams(YoutubeStreamExtractor.java:564)
	... 52 more

Notes:

  • missing '}' after the body of a function is not the original message and was translated from French (il manque '}' après le corps d'une fonction)
  • at org.schabi.newpipe.extractor.services.youtube.stream.YoutubeStreamExtractorDefaultTest$NotAvailable.testThrottling(YoutubeStreamExtractorDefaultTest.java:117) is from a test that I created to find what's wrong with your code.

@Thewisem
Copy link

Do not join this to the main app, it makes the situation a lot worse than the previous bugs. I can't watch any shared videos, videos on my feed. I came to that error a lot of times and just quit the app debug version

@opusforlife2
Copy link
Collaborator

I faced a weird issue where even after importing my database which had comments disabled, comments were enabled.

@Stypox Stypox force-pushed the update_extractor branch from 719b978 to 398007c Compare August 1, 2021 08:36
@Stypox
Copy link
Member

Stypox commented Aug 1, 2021

TeamNewPipe/NewPipeExtractor#696 was merged and your issues should have been fixed. Could you test the new APK generated by the CI?

@Thewisem

This comment has been minimized.

@opusforlife2

This comment has been minimized.

@Thewisem

This comment has been minimized.

@Stypox

This comment has been minimized.

@Thewisem
Copy link

Thewisem commented Aug 1, 2021

The video works. Comments are disabled

@Thewisem

This comment has been minimized.

@Stypox

This comment has been minimized.

@Thewisem

This comment has been minimized.

@Thewisem

This comment has been minimized.

@Thewisem

This comment has been minimized.

@opusforlife2

This comment has been minimized.

@Thewisem

This comment has been minimized.

@opusforlife2

This comment has been minimized.

@Stypox
Copy link
Member

Stypox commented Aug 1, 2021

Good then, it seems like the throttling issue is really fixed by this, I'm merging it (though it only updates the extractor version, so I could have just merged it right away ;-))

@Stypox Stypox merged commit 4bf5ddb into TeamNewPipe:dev Aug 1, 2021
@XiangRongLin XiangRongLin deleted the update_extractor branch August 2, 2021 06:01
@Thewisem
Copy link

Thewisem commented Aug 3, 2021

But youtube doesn't have this issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Issue is related to a bug youtube Service, https://www.youtube.com/
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Buffering video unrelated to connection
6 participants