From 8e3f28f737b027030d2cbd61bbffe9f8bc66b1d0 Mon Sep 17 00:00:00 2001 From: Jafea7 Date: Fri, 25 Apr 2025 16:36:58 +1000 Subject: [PATCH] SC cleanup --- .../sites/stripchat/StripchatModel.java | 163 ++++-------------- 1 file changed, 29 insertions(+), 134 deletions(-) diff --git a/common/src/main/java/ctbrec/sites/stripchat/StripchatModel.java b/common/src/main/java/ctbrec/sites/stripchat/StripchatModel.java index cf835ef2..c7c74597 100644 --- a/common/src/main/java/ctbrec/sites/stripchat/StripchatModel.java +++ b/common/src/main/java/ctbrec/sites/stripchat/StripchatModel.java @@ -6,7 +6,7 @@ import com.iheartradio.m3u8.data.Playlist; import com.iheartradio.m3u8.data.PlaylistData; import ctbrec.AbstractModel; import ctbrec.Config; -// import ctbrec.Model; +import ctbrec.Model; import ctbrec.ModelGroup; import ctbrec.StringUtil; import ctbrec.io.HttpException; @@ -46,51 +46,27 @@ public class StripchatModel extends AbstractModel { private transient JSONObject modelInfo; private transient Instant lastInfoRequest = Instant.EPOCH; - // @Override - // public boolean isOnline(boolean ignoreCache) throws IOException, ExecutionException, InterruptedException { - // JSONObject info; - // if (ignoreCache && (info = getModelInfo()).has("user")) { - // JSONObject cam; - // JSONObject user = info.getJSONObject("user").getJSONObject("user"); - // String status = user.optString("status"); - // mapOnlineState(status); - // if (onlineState == OFFLINE) { - // setLastSeen(user.optString("statusChangedAt")); - // } - // if (isBanned(user)) { - // log.debug("Model inactive or deleted: {}", getName()); - // // Config.getInstance().setModelNotes(this, "Model inactive or deleted"); // <- from v5.0.24 - // setMarkedForLaterRecording(true); - // } - // if (onlineState == PRIVATE && info.has("cam") && StringUtil.isNotBlank((cam = info.getJSONObject("cam")).optString(KEY_MODEL_TOKEN))) { - // setOnlineState(ONLINE); - // return true; - // } - // } - // return onlineState == ONLINE; - // } - @Override public boolean isOnline(boolean ignoreCache) throws IOException, ExecutionException, InterruptedException { JSONObject jsonResponse = getModelInfo(); - if (ignoreCache) { - if (jsonResponse.has("user")) { - JSONObject user = jsonResponse.getJSONObject("user").getJSONObject("user"); - String status = user.optString("status"); - mapOnlineState(status); - if (onlineState == OFFLINE) { - setLastSeen(user.optString("statusChangedAt")); - } - if (isBanned(user)) { - log.debug("Model inactive or deleted: {}", getName()); - setMarkedForLaterRecording(true); - } - if ((onlineState == PRIVATE) && jsonResponse.has("cam")) { - JSONObject cam = jsonResponse.getJSONObject("cam"); - if (StringUtil.isNotBlank(cam.optString(KEY_MODEL_TOKEN))) { - setOnlineState(ONLINE); - return true; - } + + if (ignoreCache && jsonResponse.has("user")) { + JSONObject user = jsonResponse.getJSONObject("user").getJSONObject("user"); + String status = user.optString("status"); + mapOnlineState(status); + + if (onlineState == OFFLINE) { + setLastSeen(user.optString("statusChangedAt")); + } + if (isBanned(user)) { + log.debug("Model inactive or deleted: {}", getName()); + setMarkedForLaterRecording(true); + } + if (onlineState == PRIVATE && jsonResponse.has("cam")) { + JSONObject cam = jsonResponse.getJSONObject("cam"); + if (StringUtil.isNotBlank(cam.optString(KEY_MODEL_TOKEN))) { + setOnlineState(ONLINE); + return true; // Model is online PRIVATE and there's a valid token } } if (jsonResponse.optString("error").equals("Not Found")) { @@ -100,7 +76,7 @@ public class StripchatModel extends AbstractModel { } return onlineState == ONLINE; } - + private boolean isBanned(JSONObject user) { boolean isDeleted = user.optBoolean("isDeleted", false); boolean isApprovedModel = user.optBoolean("isApprovedModel", true); @@ -117,34 +93,6 @@ public class StripchatModel extends AbstractModel { } } - // private void mapOnlineState(String status) { - // switch (status) { - // case "public": { - // setOnlineState(Model.State.ONLINE); - // break; - // } - // case "idle": { - // setOnlineState(Model.State.AWAY); - // break; - // } - // case "private": - // case "p2p": - // case "groupShow": - // case "virtualPrivate": { - // setOnlineState(Model.State.PRIVATE); - // break; - // } - // case "off": { - // setOnlineState(Model.State.OFFLINE); - // break; - // } - // default: { - // log.debug("Unknown online state {} for model {}", status, getName()); - // setOnlineState(Model.State.OFFLINE); - // } - // } - // } - private void mapOnlineState(String status) { switch (status) { case "public" -> setOnlineState(ONLINE); @@ -190,28 +138,7 @@ public class StripchatModel extends AbstractModel { } } - // private JSONObject loadModelInfo() throws IOException { - // String url = getSite().getBaseUrl() + "/api/front/v2/models/username/" + getName() + "/cam?timezoneOffset=0&triggerRequest=loadCam&uniq=" + getUniq(); - // Request req = new Request.Builder() - // .url(url) - // .header(ACCEPT, MIMETYPE_APPLICATION_JSON) - // .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) - // .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) - // .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) - // .header(REFERER, getUrl()) - // .header(ORIGIN, getSite().getBaseUrl()) - // .build(); - // try (Response response = site.getHttpClient().execute(req)) { - // if (response.isSuccessful()) { - // JSONObject jsonResponse = new JSONObject(response.body().string()); - // return jsonResponse; - // } else { - // throw new HttpException(response.code(), response.message()); - // } - // } - // } - - private void checkIfRenamed(String responseText) { + private void checkIfRenamed(String responseText) { try { String newName; JSONObject data; @@ -236,12 +163,9 @@ public class StripchatModel extends AbstractModel { @Override public List getStreamSources() throws IOException, ExecutionException, ParseException, PlaylistException { - log.debug("getStreamSources: modelInfo = \n{}", modelInfo.toString(2)); // Added - + // log.debug("getStreamSources: modelInfo = \n{}", modelInfo.toString(2)); // Added String url = getMasterPlaylistUrl(); - - log.debug("getStreamSources: url = {}", url); // Added - + // log.debug("getStreamSources: url = {}", url); // Added MasterPlaylist masterPlaylist = getMasterPlaylist(url); List streamSources = extractStreamSources(masterPlaylist); try { @@ -276,7 +200,6 @@ public class StripchatModel extends AbstractModel { // if (src.getMediaPlaylistUrl().contains("?")) { // src.setMediaPlaylistUrl(src.getMediaPlaylistUrl().substring(0, src.getMediaPlaylistUrl().lastIndexOf('?'))); // } - log.debug("Media playlist {}", src.getMediaPlaylistUrl()); sources.add(src); } } @@ -291,41 +214,18 @@ public class StripchatModel extends AbstractModel { try (Response response = getSite().getHttpClient().execute(req)) { if (response.isSuccessful()) { String body = response.body().string(); - log.debug(body); + // log.debug(body); InputStream inputStream = new ByteArrayInputStream(body.getBytes(UTF_8)); PlaylistParser parser = new PlaylistParser(inputStream, Format.EXT_M3U, Encoding.UTF_8, ParsingMode.LENIENT); Playlist playlist = parser.parse(); MasterPlaylist master = playlist.getMasterPlaylist(); return master; - } // else { - throw new HttpException(response.code(), response.message()); - // } + } else { + throw new HttpException(response.code(), response.message()); + } } } - // private String getMasterPlaylistUrl() throws IOException { - // JSONObject info = getModelInfo(); - // if (info.has("user")) { - // JSONObject cam; - // JSONObject user = info.getJSONObject("user").getJSONObject("user"); - // long modelId = user.optLong("id"); - - // boolean saveVR = Config.getInstance().getSettings().stripchatVR; - // boolean isVRStream = user.optBoolean("isVr", false); - // String vrSuffix = (saveVR && isVRStream) ? "_vr" : ""; - - // Object token = ""; - // if (info.has("cam") && StringUtil.isNotBlank((cam = info.getJSONObject("cam")).optString(KEY_MODEL_TOKEN))) { - // log.debug("Cam token: {}", token); // Added - // token = "&aclAuth=" + cam.getString(KEY_MODEL_TOKEN); - // log.debug("Spy start for {}", getName()); - // } - // String hlsUrlTemplate = "https://edge-hls.doppiocdn.com/hls/{0}/master/{0}_auto.m3u8?playlistType=Standart{1}"; - // return MessageFormat.format(hlsUrlTemplate, String.valueOf(modelId), token); - // } - // throw new IOException("Playlist URL not found"); - // } - private String getMasterPlaylistUrl() throws IOException { JSONObject info = getModelInfo(); // log.debug("getMasterPlaylistUrl: modelInfo = \n{}", info.toString(2)); // Added @@ -345,14 +245,9 @@ public class StripchatModel extends AbstractModel { if (StringUtil.isNotBlank(token)) { token = "&aclAuth=" + token; log.debug("Spy start for {}", getName()); + } } - // if (StringUtil.isNotBlank(cam.optString(KEY_MODEL_TOKEN))) { - // token = "&aclAuth=" + cam.getString(KEY_MODEL_TOKEN); - // log.debug("Spy start for {}", getName()); - // } - } - String hlsUrlTemplate = "https://edge-hls.doppiocdn.com/hls/{0}{1}/master/{0}{1}_auto.m3u8?playlistType=Standart{2}"; - return MessageFormat.format(hlsUrlTemplate, String.valueOf(id), vrSuffix, token); + return "https://edge-hls.doppiocdn.com/hls/" + id + vrSuffix + "/master/" + id + vrSuffix + "_auto.m3u8?playlistType=Standart" + token; } else { throw new IOException("Playlist URL not found"); }