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

[YouTube] Auto-generated playlist/mix: null on getName() #2895

Closed
3 tasks done
Iamdeadlyz opened this issue Dec 27, 2019 · 11 comments · Fixed by TeamNewPipe/NewPipeExtractor#280
Closed
3 tasks done
Labels
bug Issue is related to a bug youtube Service, https://www.youtube.com/

Comments

@Iamdeadlyz
Copy link
Contributor

Exception

How To Reproduce:

  1. Open an external link which is the playlist (like this one)
  2. Select NewPipe in the prompt "Complete action using"
  3. Select show info/video player/popup player/background player (if you press download, it will say unsupported url)
  4. Then the guru meditation error report will show
Crash log

org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get playlist name
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor.getName(YoutubePlaylistExtractor.java:53)
	at org.schabi.newpipe.extractor.playlist.PlaylistInfo.getInfo(PlaylistInfo.java:48)
	at org.schabi.newpipe.extractor.playlist.PlaylistInfo.getInfo(PlaylistInfo.java:29)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getPlaylistInfo$8(ExtractorHelper.java:155)
	at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$oXX6037sP0Rn784EpEbKFh6xH48.call(Unknown Source:4)
	at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
	at io.reactivex.Maybe.subscribe(Maybe.java:4154)
	at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
	at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
	at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
	at io.reactivex.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
	at io.reactivex.Flowable.subscribe(Flowable.java:14479)
	at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
	at io.reactivex.Maybe.subscribe(Maybe.java:4154)
	at io.reactivex.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.internal.operators.single.SingleObserveOn.subscribeActual(SingleObserveOn.java:35)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.Single.subscribe(Single.java:3424)
	at org.schabi.newpipe.RouterActivity$FetcherService.handleChoice(RouterActivity.java:551)
	at org.schabi.newpipe.RouterActivity$FetcherService.onHandleIntent(RouterActivity.java:523)
	at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:68)
	at android.os.Handler.dispatchMessage(Handler.java:108)
	at android.os.Looper.loop(Looper.java:166)
	at android.os.HandlerThread.run(HandlerThread.java:65)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.jsoup.nodes.Element.text()' on a null object reference
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor.getName(YoutubePlaylistExtractor.java:51)
	... 28 more


@TobiGr
Copy link
Contributor

TobiGr commented Dec 27, 2019

That is an auto-generated playlist which has no valid uploader. The crash is fixed in version 0.18.0 (should be on F-Droid soon).

@TobiGr TobiGr closed this as completed Dec 27, 2019
@TobiGr TobiGr changed the title [Issue Reporting] Could not parse website - Requested Playlist [YouTube] Auto-generated playlist: null on getName() Dec 27, 2019
@Iamdeadlyz
Copy link
Contributor Author

Hi,
It looks like the issue is still not fixed at version 0.18.0

Exception

Crash log

org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get playlist name
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor.getName(YoutubePlaylistExtractor.java:55)
	at org.schabi.newpipe.extractor.playlist.PlaylistInfo.getInfo(PlaylistInfo.java:49)
	at org.schabi.newpipe.extractor.playlist.PlaylistInfo.getInfo(PlaylistInfo.java:30)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getPlaylistInfo$8(ExtractorHelper.java:155)
	at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$oXX6037sP0Rn784EpEbKFh6xH48.call(Unknown Source:4)
	at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
	at io.reactivex.Maybe.subscribe(Maybe.java:4154)
	at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
	at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
	at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
	at io.reactivex.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
	at io.reactivex.Flowable.subscribe(Flowable.java:14479)
	at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
	at io.reactivex.Maybe.subscribe(Maybe.java:4154)
	at io.reactivex.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.internal.operators.single.SingleObserveOn.subscribeActual(SingleObserveOn.java:35)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.Single.subscribe(Single.java:3424)
	at org.schabi.newpipe.RouterActivity$FetcherService.handleChoice(RouterActivity.java:551)
	at org.schabi.newpipe.RouterActivity$FetcherService.onHandleIntent(RouterActivity.java:523)
	at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:68)
	at android.os.Handler.dispatchMessage(Handler.java:108)
	at android.os.Looper.loop(Looper.java:166)
	at android.os.HandlerThread.run(HandlerThread.java:65)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.jsoup.nodes.Element.text()' on a null object reference
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor.getName(YoutubePlaylistExtractor.java:53)
	... 28 more


@TobiGr
Copy link
Contributor

TobiGr commented Dec 28, 2019

Hm. that's bad.

@TobiGr TobiGr reopened this Dec 28, 2019
@TobiGr TobiGr removed the duplicate label Dec 28, 2019
@Stypox Stypox added the bug Issue is related to a bug label Dec 28, 2019
@XiangRongLin
Copy link
Collaborator

The problem is that auto-generated playlists don't have a "youtube.com/playlist?list=playlistID" url. But the linkhandler converts

https://www.youtube.com/watch?v=2kZVEUGLgy4&list=RDdoEcQv1wlsI&index=2

to

https://www.youtube.com/playlist?list=RDdoEcQv1wlsI

So the extractor would need to differenciate between user-generated playlists and auto-generated ones and in the case of auto-generated ones, extract them from the first link and not the second one.

It seems that:

  • User-generated playlist ids start with "PL"

  • Auto-generated playlist ids start with "RD" followed by the video id of the first video in the playlist.

@XiangRongLin
Copy link
Collaborator

I threw together a way to handle it like described above. After some quality control i'll open a PR.

@PeterHindes
Copy link
Contributor

Just got fixed in 18.6. Close the issue

@wb9688 wb9688 closed this as completed Mar 2, 2020
@XiangRongLin
Copy link
Collaborator

It throws a different error now, but still crashes when i open the link from the original crash report

Exception

Crash log

org.schabi.newpipe.extractor.exceptions.ParsingException: Could not get PlaylistInfo
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor.getPlaylistInfo(YoutubePlaylistExtractor.java:76)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor.onFetchPage(YoutubePlaylistExtractor.java:45)
	at org.schabi.newpipe.extractor.Extractor.fetchPage(Extractor.java:56)
	at org.schabi.newpipe.extractor.playlist.PlaylistInfo.getInfo(PlaylistInfo.java:29)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getPlaylistInfo$8(ExtractorHelper.java:155)
	at org.schabi.newpipe.util.-$$Lambda$ExtractorHelper$oXX6037sP0Rn784EpEbKFh6xH48.call(Unknown Source:4)
	at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
	at io.reactivex.Maybe.subscribe(Maybe.java:4154)
	at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
	at io.reactivex.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
	at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
	at io.reactivex.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
	at io.reactivex.Flowable.subscribe(Flowable.java:14479)
	at io.reactivex.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
	at io.reactivex.Maybe.subscribe(Maybe.java:4154)
	at io.reactivex.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
	at io.reactivex.Single.subscribe(Single.java:3438)
	at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
	at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
	at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
	at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
	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:919)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.grack.nanojson.JsonObject com.grack.nanojson.JsonObject.getObject(java.lang.String)' on a null object reference
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor.getPlaylistInfo(YoutubePlaylistExtractor.java:73)
	... 29 more


@wb9688
Copy link
Contributor

wb9688 commented Mar 2, 2020

If auto-generated playlist means a "Mix", then yes, those aren't supported yet and sorry for closing.

@wb9688 wb9688 reopened this Mar 2, 2020
@XiangRongLin
Copy link
Collaborator

In this context it should be "Mix".
My PR should fix this, i just need to update it for the new user-agent and etc.

@PeterHindes
Copy link
Contributor

Oh this is about support for YouTube Mix'es. You should change the title.

@Stypox Stypox changed the title [YouTube] Auto-generated playlist: null on getName() [YouTube] Auto-generated playlist/mix: null on getName() Mar 4, 2020
@Iamdeadlyz Iamdeadlyz reopened this Mar 8, 2020
@Stypox Stypox added the youtube Service, https://www.youtube.com/ label Mar 17, 2020
@Stypox
Copy link
Member

Stypox commented Apr 10, 2020

Fixed, use 0.19.2 false

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
6 participants