From 7edc79b0e335267a37d516d0675bf61ba2d93efd Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Wed, 28 Nov 2018 11:47:40 +0100 Subject: [PATCH] Take boolean privateRoom into account for online state --- common/src/main/java/ctbrec/sites/cam4/Cam4Model.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java b/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java index 2afa1100..68b24354 100644 --- a/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java +++ b/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java @@ -5,6 +5,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ExecutionException; import org.json.JSONArray; @@ -39,6 +40,7 @@ public class Cam4Model extends AbstractModel { private String playlistUrl; private String onlineState = "offline"; private int[] resolution = null; + private boolean privateRoom = false; @Override public boolean isOnline() throws IOException, ExecutionException, InterruptedException { @@ -54,7 +56,9 @@ public class Cam4Model extends AbstractModel { return false; } } - return Objects.equals("NORMAL", onlineState) && StringUtil.isNotBlank(playlistUrl); + return (Objects.equals("NORMAL", onlineState) || Objects.equals("GROUP_SHOW_SELLING_TICKETS", onlineState)) + && StringUtil.isNotBlank(playlistUrl) + && !privateRoom; } private void loadModelDetails() throws IOException, ModelDetailsEmptyException { @@ -71,6 +75,7 @@ public class Cam4Model extends AbstractModel { JSONObject details = json.getJSONObject(0); onlineState = details.getString("showType"); playlistUrl = details.getString("hlsPreviewUrl"); + privateRoom = details.getBoolean("privateRoom"); if(details.has("resolution")) { String res = details.getString("resolution"); String[] tokens = res.split(":"); @@ -106,7 +111,7 @@ public class Cam4Model extends AbstractModel { if (playlist.hasStreamInfo()) { StreamSource src = new StreamSource(); src.bandwidth = playlist.getStreamInfo().getBandwidth(); - src.height = playlist.getStreamInfo().getResolution().height; + src.height = Optional.ofNullable(playlist.getStreamInfo()).map(si -> si.getResolution()).map(res -> res.height).orElse(0); String masterUrl = getPlaylistUrl(); String baseUrl = masterUrl.substring(0, masterUrl.lastIndexOf('/') + 1); String segmentUri = baseUrl + playlist.getUri();