From 6762fe3357188e65fba5b750e878a2da7a0782ed Mon Sep 17 00:00:00 2001 From: TobiGr Date: Thu, 10 Jun 2021 16:51:00 +0200 Subject: [PATCH] [YouTube] Fix getting stream type of live streams --- .../YoutubeStreamInfoItemExtractor.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamInfoItemExtractor.java index 4fa6caab9..cc0ddac7e 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamInfoItemExtractor.java @@ -62,16 +62,21 @@ public class YoutubeStreamInfoItemExtractor implements StreamInfoItemExtractor { } final JsonArray badges = videoInfo.getArray("badges"); - for (Object badge : badges) { - if (((JsonObject) badge).getObject("metadataBadgeRenderer").getString("label", EMPTY_STRING).equals("LIVE NOW")) { + for (final Object badge : badges) { + if (((JsonObject) badge).getObject("metadataBadgeRenderer") + .getString("label", EMPTY_STRING).equals("LIVE NOW")) { return cachedStreamType = StreamType.LIVE_STREAM; } } - final String style = videoInfo.getArray("thumbnailOverlays").getObject(0) - .getObject("thumbnailOverlayTimeStatusRenderer").getString("style", EMPTY_STRING); - if (style.equalsIgnoreCase("LIVE")) { - return cachedStreamType = StreamType.LIVE_STREAM; + final JsonArray thumbnailOverlays = videoInfo.getArray("thumbnailOverlays"); + for (final Object object : thumbnailOverlays) { + final JsonObject thumbnailOverlay = (JsonObject) object; + if (thumbnailOverlay.has("thumbnailOverlayNowPlayingRenderer") + || thumbnailOverlay.getObject("thumbnailOverlayTimeStatusRenderer") + .getString("style", EMPTY_STRING).equalsIgnoreCase("LIVE")) { + return cachedStreamType = StreamType.LIVE_STREAM; + } } return cachedStreamType = StreamType.VIDEO_STREAM;