Skip to content

Commit 4039409

Browse files
wb9688TobiGr
authored andcommitted
Fix getLikeCount() for certain streams
1 parent 627ab24 commit 4039409

2 files changed

Lines changed: 23 additions & 4 deletions

File tree

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ public InfoItemsPage<StreamInfoItem> getInitialPage() throws ExtractionException
201201

202202
@Override
203203
public InfoItemsPage<StreamInfoItem> getPage(String pageUrl) throws IOException, ExtractionException {
204-
// TODO: Get extracting next pages working
205204
if (pageUrl == null || pageUrl.isEmpty()) {
206205
throw new ExtractionException(new IllegalArgumentException("Page url is empty or null"));
207206
}

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

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,13 +415,33 @@ private long getLiveStreamWatchingCount() throws ExtractionException, IOExceptio
415415
throw new ExtractionException("Could not find correct results in response");
416416
}
417417

418+
private JsonObject getVideoPrimaryInfoRenderer() throws ParsingException {
419+
JsonArray contents = initialData.getObject("contents").getObject("twoColumnWatchNextResults")
420+
.getObject("results").getObject("results").getArray("contents");
421+
JsonObject videoPrimaryInfoRenderer = null;
422+
423+
for (Object content : contents) {
424+
if (((JsonObject) content).getObject("videoPrimaryInfoRenderer") != null) {
425+
videoPrimaryInfoRenderer = ((JsonObject) content).getObject("videoPrimaryInfoRenderer");
426+
break;
427+
}
428+
}
429+
430+
if (videoPrimaryInfoRenderer == null) {
431+
throw new ParsingException("Could not find videoPrimaryInfoRenderer");
432+
}
433+
434+
return videoPrimaryInfoRenderer;
435+
}
436+
418437
@Override
419438
public long getLikeCount() throws ParsingException {
420439
assertPageFetched();
421440
String likesString = "";
422441
try {
423442
try {
424-
likesString = initialData.getObject("contents").getObject("twoColumnWatchNextResults").getObject("results").getObject("results").getArray("contents").getObject(0).getObject("videoPrimaryInfoRenderer").getObject("sentimentBar").getObject("sentimentBarRenderer").getString("tooltip").split("/")[0];
443+
likesString = getVideoPrimaryInfoRenderer().getObject("sentimentBar")
444+
.getObject("sentimentBarRenderer").getString("tooltip").split("/")[0];
425445
} catch (NullPointerException e) {
426446
//if this kicks in our button has no content and therefore ratings must be disabled
427447
if (playerResponse.getObject("videoDetails").getBoolean("allowRatings")) {
@@ -442,9 +462,9 @@ public long getDislikeCount() throws ParsingException {
442462
assertPageFetched();
443463
String dislikesString = "";
444464
try {
445-
Element button = doc.select("button.like-button-renderer-dislike-button").first();
446465
try {
447-
dislikesString = initialData.getObject("contents").getObject("twoColumnWatchNextResults").getObject("results").getObject("results").getArray("contents").getObject(0).getObject("videoPrimaryInfoRenderer").getObject("sentimentBar").getObject("sentimentBarRenderer").getString("tooltip").split("/")[1];
466+
dislikesString = getVideoPrimaryInfoRenderer().getObject("sentimentBar")
467+
.getObject("sentimentBarRenderer").getString("tooltip").split("/")[1];
448468
} catch (NullPointerException e) {
449469
//if this kicks in our button has no content and therefore ratings must be disabled
450470
if (playerResponse.getObject("videoDetails").getBoolean("allowRatings")) {

0 commit comments

Comments
 (0)