From cd394c8e36fa4ff32a931bb3ba5ccc8569dfae80 Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Wed, 7 Oct 2020 21:02:58 +0200 Subject: [PATCH] Fix camsoda thumbnail overviews --- CHANGELOG.md | 8 +++ .../ui/sites/camsoda/CamsodaTabProvider.java | 2 +- .../sites/camsoda/CamsodaUpdateService.java | 54 ++++++++++--------- 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e43ca2c6..e09299de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +3.10.1 +======================== +* Recordings now start immediately after resuming +* Improved Bongacams online state detection +* Fix: Stripchat models with @ in their name were not recorded +* Fix: Camsoda browsing, the "New" tab is gone though. The information + is not available anymore + 3.10.0 ======================== * New post-processing diff --git a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java index 796a0e70..d90ba6e7 100644 --- a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java @@ -30,7 +30,7 @@ public class CamsodaTabProvider extends TabProvider { public List getTabs(Scene scene) { List tabs = new ArrayList<>(); tabs.add(createTab("Online", BASE_URI + "/api/v1/browse/online", m -> true)); - tabs.add(createTab("New", BASE_URI + "/api/v1/browse/online", CamsodaModel::isNew)); + //tabs.add(createTab("New", BASE_URI + "/api/v1/browse/online", CamsodaModel::isNew)); followedTab.setRecorder(recorder); followedTab.setScene(scene); tabs.add(followedTab); diff --git a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaUpdateService.java b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaUpdateService.java index ab362568..1b8510d4 100644 --- a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaUpdateService.java @@ -78,43 +78,45 @@ public class CamsodaUpdateService extends PaginatedScheduledService { JSONArray template = json.getJSONArray("template"); JSONArray results = json.getJSONArray("results"); for (int i = 0; i < results.length(); i++) { - JSONObject result = results.getJSONObject(i); + Object result = results.getJSONObject(i).get("tpl"); + CamsodaModel model; try { - CamsodaModel model; - if (result.has("tpl")) { - JSONArray tpl = result.getJSONArray("tpl"); + if (result instanceof JSONObject) { + JSONObject tpl = (JSONObject) result; + String name = tpl.getString(Integer.toString(getTemplateIndex(template, "username"))); + model = (CamsodaModel) camsoda.createModel(name); + model.setDescription(tpl.getString(Integer.toString(getTemplateIndex(template, "subject_html")))); + model.setSortOrder(tpl.getFloat(Integer.toString(getTemplateIndex(template, "sort_value")))); + String preview = "https:" + tpl.getString(Integer.toString(getTemplateIndex(template, "thumb"))); + model.setPreview(preview); + String displayName = tpl.getString(Integer.toString(getTemplateIndex(template, "display_name"))); + model.setDisplayName(displayName.replaceAll("[^a-zA-Z0-9]", "")); + if (model.getDisplayName().isBlank()) { + model.setDisplayName(name); + } + model.setOnlineState(tpl.getString(Integer.toString(getTemplateIndex(template, "stream_name"))).isEmpty() ? OFFLINE : ONLINE); + try { + String statusIndex = Integer.toString(getTemplateIndex(template, "status")); + if (tpl.has(statusIndex)) { + model.setOnlineStateByStatus(tpl.getString(statusIndex)); + } + } catch (NoSuchElementException e) { + } + models.add(model); + } else if (result instanceof JSONArray) { + JSONArray tpl = (JSONArray) result; String name = tpl.getString(getTemplateIndex(template, "username")); model = (CamsodaModel) camsoda.createModel(name); - model.setDescription(tpl.getString(getTemplateIndex(template, "subject_html"))); model.setSortOrder(tpl.getFloat(getTemplateIndex(template, "sort_value"))); + model.setDescription(tpl.getString(getTemplateIndex(template, "subject_html"))); String preview = "https:" + tpl.getString(getTemplateIndex(template, "thumb")); model.setPreview(preview); + model.setOnlineStateByStatus(tpl.getString(getTemplateIndex(template, "status"))); String displayName = tpl.getString(getTemplateIndex(template, "display_name")); model.setDisplayName(displayName.replaceAll("[^a-zA-Z0-9]", "")); if (model.getDisplayName().isBlank()) { model.setDisplayName(name); } - model.setNew(result.optBoolean("new")); - model.setOnlineState(tpl.getString(getTemplateIndex(template, "stream_name")).isEmpty() ? OFFLINE : ONLINE); - models.add(model); - } else { - String name = result.getString("username"); - model = (CamsodaModel) camsoda.createModel(name); - model.setSortOrder(result.getFloat("sort_value")); - if (result.has("status")) { - model.setOnlineStateByStatus(result.getString("status")); - } - if (result.has("display_name")) { - model.setDisplayName(result.getString("display_name").replaceAll("[^a-zA-Z0-9]", "")); - if (model.getDisplayName().isBlank()) { - model.setDisplayName(name); - } - } - if (result.has("thumb")) { - String previewUrl = "https:" + result.getString("thumb"); - model.setPreview(previewUrl); - } - model.setNew(result.optBoolean("new")); models.add(model); } } catch (Exception e) {