From 7b7811dbfe6c1ad2610ef39268fe76c94aab401f Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Sun, 4 Jun 2023 15:22:51 +0200 Subject: [PATCH] Partially repaired LiveJasmin recordings --- .../ctbrec/sites/jasmin/LiveJasminModel.java | 27 ++++++++++++++----- .../jasmin/LiveJasminStreamRegistration.java | 22 +++++++++------ .../jasmin/LiveJasminWebrtcDownload.java | 2 +- 3 files changed, 35 insertions(+), 16 deletions(-) diff --git a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminModel.java b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminModel.java index 6e786311..0cbae883 100644 --- a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminModel.java +++ b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminModel.java @@ -42,8 +42,22 @@ public class LiveJasminModel extends AbstractModel { } protected void loadModelInfo() throws IOException { + Request req = new Request.Builder().url(LiveJasmin.baseUrl) + //.header(USER_AGENT, + // "Mozilla/5.0 (iPhone; CPU OS 10_14 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Mobile/14E304 Safari/605.1.15") + //.header(ACCEPT, MIMETYPE_APPLICATION_JSON) + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + //.header(REFERER, getSite().getBaseUrl()) + //.header(X_REQUESTED_WITH, XML_HTTP_REQUEST) + .build(); + try (Response response = getSite().getHttpClient().execute(req)) { + // do nothing we just want the cookies + LOG.debug("Initial request succeeded: {} - {}", response.isSuccessful(), response.code()); + + } + String url = LiveJasmin.baseUrl + "/en/flash/get-performer-details/" + getName(); - Request req = new Request.Builder().url(url) + req = new Request.Builder().url(url) .header(USER_AGENT, "Mozilla/5.0 (iPhone; CPU OS 10_14 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Mobile/14E304 Safari/605.1.15") .header(ACCEPT, MIMETYPE_APPLICATION_JSON) @@ -55,6 +69,7 @@ public class LiveJasminModel extends AbstractModel { if (response.isSuccessful()) { String body = response.body().string(); JSONObject json = new JSONObject(body); + //LOG.debug(json.toString(2)); if (json.optBoolean("success")) { JSONObject data = json.getJSONObject("data"); modelInfo = new LiveJasminModelInfo.LiveJasminModelInfoBuilder() @@ -62,10 +77,13 @@ public class LiveJasminModel extends AbstractModel { .sbHash(data.optString("sb_hash", null)) .sessionId("m12345678901234567890123456789012") .jsm2session(getSite().getHttpClient().getCookiesByName("session").get(0).value()) - .performerId(getName()) + .performerId(data.optString("performer_id", getName())) .clientInstanceId(randomClientInstanceId()) .status(data.optInt("status", -1)) .build(); + if (data.has("channelsiteurl")) { + setUrl(LiveJasmin.baseUrl + data.getString("channelsiteurl")); + } onlineState = mapStatus(modelInfo.getStatus()); online = onlineState == State.ONLINE && StringUtil.isNotBlank(modelInfo.getSbIp()) @@ -235,10 +253,5 @@ public class LiveJasminModel extends AbstractModel { @Override public RecordingProcess createDownload() { return new LiveJasminWebrtcDownload(getSite().getHttpClient()); - // if (Config.isServerMode() && !Config.getInstance().getSettings().recordSingleFile) { - // return new LiveJasminHlsDownload(getSite().getHttpClient()); - // } else { - // return new LiveJasminMergedHlsDownload(getSite().getHttpClient()); - // } } } diff --git a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminStreamRegistration.java b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminStreamRegistration.java index 741f2c18..441d16df 100644 --- a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminStreamRegistration.java +++ b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminStreamRegistration.java @@ -85,15 +85,15 @@ public class LiveJasminStreamRegistration { .put("peekPatternJsm2", true) .put("chatHistoryRequired", true) ); - log.trace("Stream registration\n{}", register.toString(2)); - webSocket.send(register.toString()); - webSocket.send(new JSONObject().put(KEY_EVENT, "ping").toString()); - webSocket.send(new JSONObject() + log.debug("Stream registration\n{}", register.toString(2)); + send(register.toString()); + send(new JSONObject().put(KEY_EVENT, "ping").toString()); + send(new JSONObject() .put(KEY_EVENT, "call") .put(KEY_FUNC_NAME, "makeActive") .put("data", new JSONArray()) .toString()); - webSocket.send(new JSONObject() + send(new JSONObject() .put(KEY_EVENT, "call") .put(KEY_FUNC_NAME, "setVideo") .put("data", new JSONArray() @@ -103,7 +103,7 @@ public class LiveJasminStreamRegistration { .put(modelInfo.getJsm2session()) ) .toString()); - webSocket.send(new JSONObject() + send(new JSONObject() .put(KEY_EVENT, "connectSharedObject") .put("name", "data/chat_so") .toString()); @@ -118,6 +118,7 @@ public class LiveJasminStreamRegistration { @Override public void onMessage(@NotNull WebSocket webSocket, @NotNull String text) { + log.debug("< {}", text); JSONObject message = new JSONObject(text); if (message.opt(KEY_EVENT).equals("pong")) { new Thread(() -> { @@ -126,7 +127,7 @@ public class LiveJasminStreamRegistration { } catch (InterruptedException e) { Thread.currentThread().interrupt(); } - webSocket.send(new JSONObject().put(KEY_EVENT, "ping").toString()); + send(new JSONObject().put(KEY_EVENT, "ping").toString()); }).start(); } else if (message.optString(KEY_EVENT).equals("updateSharedObject") && message.optString("name").equals("data/chat_so")) { log.trace(message.toString(2)); @@ -158,7 +159,7 @@ public class LiveJasminStreamRegistration { ) ); streamCount++; - webSocket.send(getVideoData.toString()); + send(getVideoData.toString()); } } } @@ -192,6 +193,11 @@ public class LiveJasminStreamRegistration { log.trace("onClosing {} {}", code, reason); awaitBarrier(); } + + private void send(String msg) { + log.debug(" > {}", msg); + webSocket.send(msg); + } }); log.debug("Waiting for websocket to return"); diff --git a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminWebrtcDownload.java b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminWebrtcDownload.java index 5be8bae5..27282351 100644 --- a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminWebrtcDownload.java +++ b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminWebrtcDownload.java @@ -231,7 +231,7 @@ public class LiveJasminWebrtcDownload extends AbstractDownload { long secondsToWait = 30; for (int i = 0; i < secondsToWait; i++) { if (ws == null) { - break; + return; } else { try { Thread.sleep(1000);