diff --git a/build.gradle b/build.gradle index 8ac41c00b..68c194fd9 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ allprojects { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 - version 'v0.22.5' + version 'v0.22.6' group 'com.github.TeamNewPipe' repositories { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRelatedPlaylistInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRelatedPlaylistInfoItemExtractor.java index d485b0b3f..55b319936 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRelatedPlaylistInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRelatedPlaylistInfoItemExtractor.java @@ -25,7 +25,7 @@ public class BandcampRelatedPlaylistInfoItemExtractor implements PlaylistInfoIte @Override public String getUrl() throws ParsingException { - return relatedAlbum.getElementsByClass("title-and-artist").attr("abs:href"); + return relatedAlbum.getElementsByClass("album-link").attr("abs:href"); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsExtractor.java index 385ee6eb8..84e6c3e1e 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsExtractor.java @@ -66,10 +66,15 @@ public class YoutubeCommentsExtractor extends CommentsExtractor { * @return the continuation token or null if none was found */ @Nullable - private String findInitialCommentsToken(final JsonObject nextResponse) - throws ExtractionException { - final String token = JsonUtils.getArray(nextResponse, - "contents.twoColumnWatchNextResults.results.results.contents") + private String findInitialCommentsToken(final JsonObject nextResponse) { + final JsonArray contents = getJsonContents(nextResponse); + + // For videos where comments are unavailable, this would be null + if (contents == null) { + return null; + } + + final String token = contents .stream() // Only use JsonObjects .filter(JsonObject.class::isInstance) @@ -105,6 +110,16 @@ public class YoutubeCommentsExtractor extends CommentsExtractor { return token; } + @Nullable + private JsonArray getJsonContents(final JsonObject nextResponse) { + try { + return JsonUtils.getArray(nextResponse, + "contents.twoColumnWatchNextResults.results.results.contents"); + } catch (final ParsingException e) { + return null; + } + } + @Nonnull private InfoItemsPage getInfoItemsPageForDisabledComments() { return new InfoItemsPage<>(Collections.emptyList(), null, Collections.emptyList());