TeamNewPipe / NewPipe

A libre lightweight streaming front-end for Android.
https://newpipe.net
GNU General Public License v3.0
30.28k stars 2.98k forks source link

[FIXED IN CODE][YouTube] HTTP error 403 when starting videos #11255

Open Spok1 opened 2 weeks ago

Spok1 commented 2 weeks ago

Please also see About YouTube playback errors - YouTube changed some things to get working streams


Checklist

Affected version

0.27

Steps to reproduce the bug

Open the video and try to play it.

Expected behavior

For the videos to play.

Actual behavior

The video doesn't want to play. An error code appears in the notification.

Screenshots/Screen recordings

No response

Logs

Exception

com.google.android.exoplayer2.ExoPlaybackException: Source error
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:644)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:616)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:159)
    at android.os.HandlerThread.run(HandlerThread.java:61)
Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 403
    at org.schabi.newpipe.player.datasource.YoutubeHttpDataSource.open(YoutubeHttpDataSource.java:422)
    at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:263)
    at com.google.android.exoplayer2.upstream.TeeDataSource.open(TeeDataSource.java:52)
    at com.google.android.exoplayer2.upstream.cache.CacheDataSource.openNextSource(CacheDataSource.java:796)
    at com.google.android.exoplayer2.upstream.cache.CacheDataSource.open(CacheDataSource.java:609)
    at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
    at com.google.android.exoplayer2.source.chunk.InitializationChunk.load(InitializationChunk.java:99)
    at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
    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:761)


Affected Android/Custom ROM version

Android 7

Affected device model

Asus z500m

Additional information

No response

MrNessuno commented 2 weeks ago

Same problem here. Android 14 it-IT Version 0.27.0 It refuses to load the video and crashes after a while. I sent the report from the app via mail.

Wicycool commented 2 weeks ago

I'm getting the same error too...

Exception

com.google.android.exoplayer2.ExoPlaybackException: Source error
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:644)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:616)
    at android.os.Handler.dispatchMessage(Handler.java:103)
    at android.os.Looper.loopOnce(Looper.java:232)
    at android.os.Looper.loop(Looper.java:317)
    at android.os.HandlerThread.run(HandlerThread.java:85)
Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 403
    at org.schabi.newpipe.player.datasource.YoutubeHttpDataSource.open(YoutubeHttpDataSource.java:422)
    at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:263)
    at com.google.android.exoplayer2.upstream.TeeDataSource.open(TeeDataSource.java:52)
    at com.google.android.exoplayer2.upstream.cache.CacheDataSource.openNextSource(CacheDataSource.java:796)
    at com.google.android.exoplayer2.upstream.cache.CacheDataSource.open(CacheDataSource.java:609)
    at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
    at com.google.android.exoplayer2.source.chunk.InitializationChunk.load(InitializationChunk.java:99)
    at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
    at java.lang.Thread.run(Thread.java:1012)


limesqueezy commented 2 weeks ago

Same

Exception

org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get like count
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getLikeCount(YoutubeStreamExtractor.java:508)
    at org.schabi.newpipe.extractor.stream.StreamInfo.extractOptionalData(StreamInfo.java:279)
    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:119)
    at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(ExtractorHelper.java:0)
    at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda3.call(R8$$SyntheticClass:0)
    at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
    at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
    at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
    at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
    at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5377)
    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:16013)
    at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
    at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5377)
    at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
    at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
    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: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.lambda$getLikeCount$7(YoutubeStreamExtractor.java:458)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.$r8$lambda$JNZYncC0vyG9Ez_PK6G8Ez8Psqs(YoutubeStreamExtractor.java:0)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor$$ExternalSyntheticLambda14.test(R8$$SyntheticClass:0)
    at j$.util.stream.d2.accept(SourceFile:0)
    at j$.util.stream.d2.accept(SourceFile:0)
    at j$.util.stream.d2.accept(SourceFile:0)
    at j$.util.stream.d2.accept(SourceFile:0)
    at j$.util.a.tryAdvance(SourceFile:0)
    at j$.util.stream.l2.z0(Unknown Source:6)
    at j$.util.stream.c.a0(Unknown Source:15)
    at j$.util.stream.c.Z(SourceFile:0)
    at j$.util.stream.c.t0(Unknown Source:10)
    at j$.util.stream.J.v(Unknown Source:8)
    at j$.util.stream.c.w0(SourceFile:0)
    at j$.util.stream.l2.findFirst(SourceFile:0)
    at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getLikeCount(YoutubeStreamExtractor.java:466)
    ... 30 more


bit-garden commented 2 weeks ago

It should be mentioned that yt-dlp yesterday started throwing 403 errors.

https://github.com/yt-dlp/yt-dlp/issues/10397

This sounds like YouTube has made changes that are breaking 3rd party access.

ACR-Jeff commented 2 weeks ago

Youtube is messing with 3rd party apps again. It's happening on other apps as well.

joshuabengal commented 2 weeks ago

Same here. No videos will play, no channel pages will load.

Worth noting that on my PC, PotPlayer can still play videos just fine. Last time this happened (NewPipe failed to play a video but PotPlayer plays it), it was a result of YouTube doing A/B testing targeting different platforms.

Player005 commented 2 weeks ago

Same issue here. First started just occasionally occurring on some videos, now no videos play at all. Changing DNS to cloudflare or quad9 doesn't change anything, same goes with deleting metadata cache.

Exception * __User Action:__ play stream * __Request:__ Player error[type=ERROR_CODE_IO_BAD_HTTP_STATUS] occurred while playing https://www.youtube.com/watch?v=hgdSJdeGF_0 * __Content Country:__ DE * __Content Language:__ de-DE * __App Language:__ de_DE * __Service:__ YouTube * __Version:__ 0.27.0 * __OS:__ Linux Android 13 - 33
Crash log

``` com.google.android.exoplayer2.ExoPlaybackException: Source error at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:644) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:616) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.os.HandlerThread.run(HandlerThread.java:67) Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 403 at org.schabi.newpipe.player.datasource.YoutubeHttpDataSource.open(YoutubeHttpDataSource.java:422) at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:263) at com.google.android.exoplayer2.upstream.cache.CacheDataSource.openNextSource(CacheDataSource.java:796) at com.google.android.exoplayer2.upstream.cache.CacheDataSource.open(CacheDataSource.java:609) at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84) at com.google.android.exoplayer2.source.chunk.InitializationChunk.load(InitializationChunk.java:99) 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) ```

gsture commented 2 weeks ago

Same here. No videos will play, no channel pages will load.

Worth noting that on my PC, PotPlayer can still play videos just fine. Last time this happened (NewPipe failed to play a video but PotPlayer plays it), it was a result of YouTube doing A/B testing targeting different platforms.

Grayjay android app also still works. That's what I am using in the meantime.

ACR-Jeff commented 2 weeks ago

The only thing I can get working is other apps that utilize the invidious instances, Everything else just fails

XiangRongLin commented 2 weeks ago

The guys over at youtube-dl have an approach. Details are still a bit sparse, but youtube changed the javascript code snippet that we parse out of the whole file in order to bypass the throttling. I don't have a working setup anymore for newpipe + extractor anymore so I will need some time if no one else has time https://github.com/ytdl-org/youtube-dl/issues/32842#issuecomment-2218134082 https://github.com/ytdl-org/youtube-dl/issues/32842#issuecomment-2220376175

The regexes here probably need to be adjusted and the String.prototype.split.call(a, "") needs to be replaced with a.split("") since rhino does not support that according to the user they use a different JS runtime

XiangRongLin commented 1 week ago

Fix is in the works. for now you can use the debug APK from here https://github.com/TeamNewPipe/NewPipeExtractor/pull/1191

Stypox commented 1 week ago

Fixed by TeamNewPipe/NewPipeExtractor#1191. A hotfix release is in the making.

http403 commented 1 week ago

Sorry to break the news but after updating to 0.27.1, same 403 error at 00:59 mark. Wonder if this is related. A complete restart of the app will "fix" the problem.

Exception

com.google.android.exoplayer2.ExoPlaybackException: Source error
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:644)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:616)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 403
    at org.schabi.newpipe.player.datasource.YoutubeHttpDataSource.open(YoutubeHttpDataSource.java:422)
    at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:263)
    at com.google.android.exoplayer2.upstream.TeeDataSource.open(TeeDataSource.java:52)
    at com.google.android.exoplayer2.upstream.cache.CacheDataSource.openNextSource(CacheDataSource.java:796)
    at com.google.android.exoplayer2.upstream.cache.CacheDataSource.open(CacheDataSource.java:609)
    at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
    at com.google.android.exoplayer2.source.chunk.ContainerMediaChunk.load(ContainerMediaChunk.java:124)
    at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
    at java.lang.Thread.run(Thread.java:1012)


stenterstal commented 1 week ago

I think that is a different issue related to #11191. I got it temporarily fixed by using the fix from that thread;

I have an idea for a workaround: Make a PR that causes NewPipe to automatically wipe the metadata cache and begin replaying the video from wherever it left off at every time this error occurs since wiping the metadata cache (in Settings -> History and Cache -> Wipe Cached Metadata) seems to make this issue go away temporarily.

opusforlife2 commented 1 hour ago

So, Youtube changed something again and this issue resurfaced. It's already fixed in the code, so just wait a little and it'll be out in a new version.