diff --git a/common/src/main/java/ctbrec/StreamNotFoundException.java b/common/src/main/java/ctbrec/StreamNotFoundException.java new file mode 100644 index 00000000..8322f682 --- /dev/null +++ b/common/src/main/java/ctbrec/StreamNotFoundException.java @@ -0,0 +1,7 @@ +package ctbrec; + +public class StreamNotFoundException extends RuntimeException { + public StreamNotFoundException(String msg) { + super(msg); + } +} diff --git a/common/src/main/java/ctbrec/sites/cherrytv/CherryTvModel.java b/common/src/main/java/ctbrec/sites/cherrytv/CherryTvModel.java index cc2d0d05..16b5a20b 100644 --- a/common/src/main/java/ctbrec/sites/cherrytv/CherryTvModel.java +++ b/common/src/main/java/ctbrec/sites/cherrytv/CherryTvModel.java @@ -6,10 +6,7 @@ import com.iheartradio.m3u8.data.Playlist; import com.iheartradio.m3u8.data.PlaylistData; import com.squareup.moshi.JsonReader; import com.squareup.moshi.JsonWriter; -import ctbrec.AbstractModel; -import ctbrec.Config; -import ctbrec.NotImplementedExcetion; -import ctbrec.StringUtil; +import ctbrec.*; import ctbrec.io.HttpException; import ctbrec.recorder.download.StreamSource; import okhttp3.MediaType; @@ -30,7 +27,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import static ctbrec.ErrorMessages.HTTP_RESPONSE_BODY_IS_NULL; -import static ctbrec.Model.State.*; +import static ctbrec.Model.State.OFFLINE; +import static ctbrec.Model.State.ONLINE; import static ctbrec.io.HttpConstants.*; import static java.nio.charset.StandardCharsets.UTF_8; @@ -79,6 +77,7 @@ public class CherryTvModel extends AbstractModel { for (Iterator iter = apolloState.keys(); iter.hasNext(); ) { String key = iter.next(); if (key.startsWith("Broadcast:")) { + LOG.trace("Model properties:\n{}", apolloState.toString(2)); JSONObject broadcast = apolloState.getJSONObject(key); setDisplayName(broadcast.optString("title")); online = broadcast.optString("showStatus").equalsIgnoreCase("Public") @@ -146,6 +145,10 @@ public class CherryTvModel extends AbstractModel { } private MasterPlaylist getMasterPlaylist() throws IOException, ParseException, PlaylistException { + if (masterPlaylistUrl == null) { + LOG.info("Master playlist not found for {}:{}. This probably is webrtc stream", getSite().getName(), getName()); + throw new StreamNotFoundException("Webrtc streams are not supported for " + getSite().getName()); + } LOG.trace("Loading master playlist {}", masterPlaylistUrl); Request req = new Request.Builder() .url(masterPlaylistUrl) @@ -275,23 +278,6 @@ public class CherryTvModel extends AbstractModel { .build(); } - public void mapOnlineState(String roomState) { - switch (roomState) { - case "private": - case "fullprivate": - setOnlineState(PRIVATE); - break; - case "group": - case "public": - setOnlineState(ONLINE); - setOnline(true); - break; - default: - LOG.debug(roomState); - setOnlineState(OFFLINE); - } - } - public void setId(String id) { this.id = id; }