Fix getLikeCount() for certain streams
This commit is contained in:
parent
627ab2459f
commit
4039409820
|
@ -201,7 +201,6 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InfoItemsPage<StreamInfoItem> getPage(String pageUrl) throws IOException, ExtractionException {
|
public InfoItemsPage<StreamInfoItem> getPage(String pageUrl) throws IOException, ExtractionException {
|
||||||
// TODO: Get extracting next pages working
|
|
||||||
if (pageUrl == null || pageUrl.isEmpty()) {
|
if (pageUrl == null || pageUrl.isEmpty()) {
|
||||||
throw new ExtractionException(new IllegalArgumentException("Page url is empty or null"));
|
throw new ExtractionException(new IllegalArgumentException("Page url is empty or null"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -415,13 +415,33 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
throw new ExtractionException("Could not find correct results in response");
|
throw new ExtractionException("Could not find correct results in response");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private JsonObject getVideoPrimaryInfoRenderer() throws ParsingException {
|
||||||
|
JsonArray contents = initialData.getObject("contents").getObject("twoColumnWatchNextResults")
|
||||||
|
.getObject("results").getObject("results").getArray("contents");
|
||||||
|
JsonObject videoPrimaryInfoRenderer = null;
|
||||||
|
|
||||||
|
for (Object content : contents) {
|
||||||
|
if (((JsonObject) content).getObject("videoPrimaryInfoRenderer") != null) {
|
||||||
|
videoPrimaryInfoRenderer = ((JsonObject) content).getObject("videoPrimaryInfoRenderer");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (videoPrimaryInfoRenderer == null) {
|
||||||
|
throw new ParsingException("Could not find videoPrimaryInfoRenderer");
|
||||||
|
}
|
||||||
|
|
||||||
|
return videoPrimaryInfoRenderer;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getLikeCount() throws ParsingException {
|
public long getLikeCount() throws ParsingException {
|
||||||
assertPageFetched();
|
assertPageFetched();
|
||||||
String likesString = "";
|
String likesString = "";
|
||||||
try {
|
try {
|
||||||
try {
|
try {
|
||||||
likesString = initialData.getObject("contents").getObject("twoColumnWatchNextResults").getObject("results").getObject("results").getArray("contents").getObject(0).getObject("videoPrimaryInfoRenderer").getObject("sentimentBar").getObject("sentimentBarRenderer").getString("tooltip").split("/")[0];
|
likesString = getVideoPrimaryInfoRenderer().getObject("sentimentBar")
|
||||||
|
.getObject("sentimentBarRenderer").getString("tooltip").split("/")[0];
|
||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
//if this kicks in our button has no content and therefore ratings must be disabled
|
//if this kicks in our button has no content and therefore ratings must be disabled
|
||||||
if (playerResponse.getObject("videoDetails").getBoolean("allowRatings")) {
|
if (playerResponse.getObject("videoDetails").getBoolean("allowRatings")) {
|
||||||
|
@ -442,9 +462,9 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
assertPageFetched();
|
assertPageFetched();
|
||||||
String dislikesString = "";
|
String dislikesString = "";
|
||||||
try {
|
try {
|
||||||
Element button = doc.select("button.like-button-renderer-dislike-button").first();
|
|
||||||
try {
|
try {
|
||||||
dislikesString = initialData.getObject("contents").getObject("twoColumnWatchNextResults").getObject("results").getObject("results").getArray("contents").getObject(0).getObject("videoPrimaryInfoRenderer").getObject("sentimentBar").getObject("sentimentBarRenderer").getString("tooltip").split("/")[1];
|
dislikesString = getVideoPrimaryInfoRenderer().getObject("sentimentBar")
|
||||||
|
.getObject("sentimentBarRenderer").getString("tooltip").split("/")[1];
|
||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
//if this kicks in our button has no content and therefore ratings must be disabled
|
//if this kicks in our button has no content and therefore ratings must be disabled
|
||||||
if (playerResponse.getObject("videoDetails").getBoolean("allowRatings")) {
|
if (playerResponse.getObject("videoDetails").getBoolean("allowRatings")) {
|
||||||
|
|
Loading…
Reference in New Issue