Skip to content

Commit a64dfd7

Browse files
committed
[YouTube Music] Fix extracting search item view/subscriber count when = 0
1 parent c00ee75 commit a64dfd7

2 files changed

Lines changed: 21 additions & 9 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMusicSearchExtractor.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@
2020
import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector;
2121
import org.schabi.newpipe.extractor.search.SearchExtractor;
2222
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
23-
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubePlaylistLinkHandlerFactory;
24-
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeStreamLinkHandlerFactory;
2523
import org.schabi.newpipe.extractor.utils.JsonUtils;
24+
import org.schabi.newpipe.extractor.utils.Parser;
2625
import org.schabi.newpipe.extractor.utils.Utils;
2726

2827
import java.io.IOException;
@@ -33,7 +32,10 @@
3332

3433
import javax.annotation.Nonnull;
3534

36-
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.*;
35+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.fixThumbnailUrl;
36+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
37+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getUrlFromNavigationEndpoint;
38+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getValidJsonResponseBody;
3739
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_ALBUMS;
3840
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_ARTISTS;
3941
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_PLAYLISTS;
@@ -365,7 +367,12 @@ public long getViewCount() throws ParsingException {
365367
.getObject(descriptionElements.size() - 3)
366368
.getString("text");
367369
if (!isNullOrEmpty(viewCount)) {
368-
return Utils.mixedNumberWordToLong(viewCount);
370+
try {
371+
return Utils.mixedNumberWordToLong(viewCount);
372+
} catch (final Parser.RegexException e) {
373+
// probably viewCount == "No views" or similar
374+
return 0;
375+
}
369376
}
370377
throw new ParsingException("Could not get view count");
371378
}
@@ -421,10 +428,15 @@ public String getUrl() throws ParsingException {
421428

422429
@Override
423430
public long getSubscriberCount() throws ParsingException {
424-
final String viewCount = getTextFromObject(info.getArray("flexColumns").getObject(2)
431+
final String subscriberCount = getTextFromObject(info.getArray("flexColumns").getObject(2)
425432
.getObject("musicResponsiveListItemFlexColumnRenderer").getObject("text"));
426-
if (!isNullOrEmpty(viewCount)) {
427-
return Utils.mixedNumberWordToLong(viewCount);
433+
if (!isNullOrEmpty(subscriberCount)) {
434+
try {
435+
return Utils.mixedNumberWordToLong(subscriberCount);
436+
} catch (final Parser.RegexException ignored) {
437+
// probably subscriberCount == "No subscribers" or similar
438+
return 0;
439+
}
428440
}
429441
throw new ParsingException("Could not get subscriber count");
430442
}

extractor/src/main/java/org/schabi/newpipe/extractor/utils/Parser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ public static String matchGroup(Pattern pat, String input, int group) throws Reg
6969
} else {
7070
// only pass input to exception message when it is not too long
7171
if (input.length() > 1024) {
72-
throw new RegexException("failed to find pattern \"" + pat.pattern());
72+
throw new RegexException("failed to find pattern \"" + pat.pattern() + "\"");
7373
} else {
74-
throw new RegexException("failed to find pattern \"" + pat.pattern() + " inside of " + input + "\"");
74+
throw new RegexException("failed to find pattern \"" + pat.pattern() + "\" inside of \"" + input + "\"");
7575
}
7676
}
7777
}

0 commit comments

Comments
 (0)