TeamNewPipe / NewPipe

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

[Youtube] 403 reemerge #10352

Closed http403 closed 1 year ago

http403 commented 1 year ago

Checklist

Affected version

0.25.2

Steps to reproduce the bug

1. Watch video 2. App crash approx 1 minute into the video 1. Open a video 2. (optional) Full screen 3. Pause the video at start or middle 4. Exit to home (but not quit the app) 5. Do something else (2+ hours) 6. Go back and resume the video

Expected behavior

Play the video continuously

Actual behavior

About 1 minute into the video after resuming, it will crash with 403.

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: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 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:1137)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)


Affected Android/Custom ROM version

Android 13

Affected device model

Samsung Galaxy S21 5G FE

Additional information

I know the problem was declared fixed in TeamNewPipe/NewPipeExtractor#1084, but it is still happening.

This issue might look like #10329 but it is different. That issue is a result of 404, mine is a result of 403, thus I decided to open a new one.

Noted, this bahavior is not consistant, and for the span of 3 days of light use, I only encounter twice. It is hard to reproduce, and not as frequent as in 0.25.1.

Upon further usage, I sort of find the way to reproduce the crash. However, I have no idea if it's reliable.

I didn't apply the workaround in the release note.

attilafekete73 commented 1 year ago

This happens to me too, but it does that every time I try to open a video. It plays for 1 minute, then it crashes.

opusforlife2 commented 1 year ago

Let's see if more people encounter this.

Haitham-7 commented 1 year ago

Heppens to me too, not only pipe, but also with Yutube Vanced, Youtube Revanced, SkyTube, LibreTube.

I think google did something to block these apps but I am not sure

openmoth commented 1 year ago

My app is also doing this. It 'crashes', gives me the notif and then sometimes restarts from the point it left off and sometimes doesn't. I will keep getting sporadic error notifs until I quit out of the app, whether it restarts or not.

http403 commented 1 year ago

To all users, please use the thumbs up reaction on the main issue to signify you experience the problem unless you have additional information such as, reliably triggering the error, with detailed steps on reproducing it. Thank you.

http403 commented 1 year ago

I updated the steps to reproduce the crash. Though I have no idea how reliable that is.

AudricV commented 1 year ago

Do something else (2+ hours)

Then the streaming URLs may have expired (URLs should be only valid for 21540 seconds), and in this case this issue would be a duplicate of #5730. You can still play the video for around 1 minute before getting the error as the player library, ExoPlayer, is configured to have the goal to buffer streams 50 seconds (the default value).

If you can still get sometimes this invalid response code when you start playing a video and after around 1 minute of playback, then it means that YouTube is disabling our last known workaround to use the Android client.

We wouldn't be the only app affected again by this issue, reVanced would be too for instance, but contrary to it, we have the freedom to use almost every YouTube client we want.

http403 commented 1 year ago

@AudricV Thanks for letting me know, and sorry for I didn't search thorough enough.

This proves I didn't find the correct way to reproduce the issue.

@Haitham-7 @openmoth @attilafekete73 and others, as you stated you experienced the issue, could you please share the crash log and possbility step to reproduce? This will help to judge if Google did something new or just a duplicate. Thank you.

Haitham-7 commented 1 year ago

@Haitham-7 @openmoth @attilafekete73 and others, as you stated you experienced the issue, could you please share the crash log and possbility step to reproduce? This will help to judge if Google did something new or just a duplicate. Thank you.

The logs:

{"user_action":"play stream","request":"Player error[type=ERROR_CODE_IO_BAD_HTTP_STATUS] occurred while playing https://www.youtube.com/watch?v=iArXv64tCJA","content_language":"en-US","content_country":"US","app_language":"en_US","service":"YouTube","package":"org.polymorphicshade.newpipe","version":"0.25.1","os":"Linux Android 13 - 33","time":"2023-08-19 02:26","exceptions":["com.google.android.exoplayer2.ExoPlaybackException: Source error\n\tat com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(exoplayerimplinternal.java:644)\n\tat com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(exoplayerimplinternal.java:616)\n\tat android.os.Handler.dispatchMessage(handler.java:102)\n\tat android.os.Looper.loopOnce(looper.java:210)\n\tat android.os.Looper.loop(looper.java:299)\n\tat [android.os.HandlerThread.run](https://android.os.handlerthread.run/)(handlerthread.java:67)\nCaused by: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 403\n\tat [org.schabi.newpipe.player.datasource.YoutubeHttpDataSource.open](https://org.schabi.newpipe.player.datasource.youtubehttpdatasource.open/)(youtubehttpdatasource.java:422)\n\tat [com.google.android.exoplayer2.upstream.DefaultDataSource.open](https://com.google.android.exoplayer2.upstream.defaultdatasource.open/)(defaultdatasource.java:263)\n\tat [com.google.android.exoplayer2.upstream.TeeDataSource.open](https://com.google.android.exoplayer2.upstream.teedatasource.open/)(teedatasource.java:52)\n\tat com.google.android.exoplayer2.upstream.cache.CacheDataSource.openNextSource(cachedatasource.java:796)\n\tat [com.google.android.exoplayer2.upstream.cache.CacheDataSource.open](https://com.google.android.exoplayer2.upstream.cache.cachedatasource.open/)(cachedatasource.java:609)\n\tat [com.google.android.exoplayer2.upstream.StatsDataSource.open](https://com.google.android.exoplayer2.upstream.statsdatasource.open/)(statsdatasource.java:84)\n\tat com.google.android.exoplayer2.source.chunk.ContainerMediaChunk.load(containermediachunk.java:124)\n\tat com.google.android.exoplayer2.upstream.Loader$[LoadTask.run](https://loadtask.run/)(loader.java:412)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(threadpoolexecutor.java:1137)\n\tat java.util.concurrent.ThreadPoolExecutor$[Worker.run](https://worker.run/)(threadpoolexecutor.java:637)\n\tat [java.lang.Thread.run](https://java.lang.thread.run/)(thread.java:1012)\n"],"user_comment":"To reproduce the error, just open any video, the first 50 seconds or so will load (which is the buffer limit) then when you reach the end of the buffer the video never loads any further and you get the error"}

http403 commented 1 year ago

@Haitham-7 You are using an old version of NewPipe. Please update to 0.25.2 then report back if you still experiencing the issue. Thank you.

github-actions[bot] commented 1 year ago

This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further.

Regenhardt commented 1 year ago

Here's my error log, although I'm on 0.25.1 and can't update because F-Droid doesn't seem to offer be 0.25.2

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.loop(Looper.java:359)
    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:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:919)


github-actions[bot] commented 1 year ago

This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further.

github-actions[bot] commented 1 year ago

This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further.

shaohme commented 1 year ago

This occurred for me recently:

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:205)
    at android.os.Looper.loop(Looper.java:294)
    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)
github-actions[bot] commented 1 year ago

This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further.

opusforlife2 commented 1 year ago

I don't see the need to reopen this because the error clearly isn't occurring for everyone like last time, but only intermittently, which is to be expected.

shaohme commented 1 year ago

I don't see the need to reopen this because the error clearly isn't occurring for everyone like last time, but only intermittently, which is to be expected.

Would it be trivial to make NewPipe catch this error instead, show a generic error, (perhaps retry), instead of "crashing" in the background?

opusforlife2 commented 1 year ago

Most network based errors need to be reworked, actually. But it can't be done easily, otherwise, for example, users will keep retrying and never know what's going wrong.

squishyu commented 1 year ago

I don't see the need to reopen this because the error clearly isn't occurring for everyone like last time, but only intermittently, which is to be expected.

Would it be trivial to make NewPipe catch this error instead, show a generic error, (perhaps retry), instead of "crashing" in the background?

I support a solution like this. I've been getting this error every day for months, whenever my phone switches between WiFi and data (leaving the house)

When listening to a playlist, it just skips to the next song instead of retrying.

http403 commented 1 year ago

I don't see the need to reopen this because the error clearly isn't occurring for everyone like last time, but only intermittently, which is to be expected.

Would it be trivial to make NewPipe catch this error instead, show a generic error, (perhaps retry), instead of "crashing" in the background?

I think this issue will be appropriate to address by opening a new issue.