From 4104b5990ccad470a2c9f38750ce13c5b0dfad9c Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Sat, 1 Jun 2019 15:32:19 +0200 Subject: [PATCH] Fix Camsoda JSON parsing --- .../sites/camsoda/CamsodaUpdateService.java | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) 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 9f7ff403..760ca6b8 100644 --- a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaUpdateService.java @@ -62,48 +62,48 @@ public class CamsodaUpdateService extends PaginatedScheduledService { JSONArray results = json.getJSONArray("results"); for (int i = 0; i < results.length(); i++) { JSONObject result = results.getJSONObject(i); - if(result.has("tpl")) { - JSONArray tpl = result.getJSONArray("tpl"); - String name = tpl.getString(getTemplateIndex(template, "username")); - String displayName = tpl.getString(getTemplateIndex(template, "display_name")); - // int connections = tpl.getInt(2); - String streamName = tpl.getString(getTemplateIndex(template, "stream_name")); - String tsize = tpl.getString(getTemplateIndex(template, "tsize")); - String serverPrefix = tpl.getString(getTemplateIndex(template, "server_prefix")); - CamsodaModel model = (CamsodaModel) camsoda.createModel(name); - model.setDescription(tpl.getString(getTemplateIndex(template, "subject_html"))); - model.setSortOrder(tpl.getFloat(getTemplateIndex(template, "sort_value"))); - long unixtime = System.currentTimeMillis() / 1000; - String preview = "https://thumbs-orig.camsoda.com/thumbs/" - + streamName + '/' + serverPrefix + '/' + tsize + '/' + unixtime + '/' + name + ".jpg?cb=" + unixtime; - model.setPreview(preview); - JSONArray edgeServers = tpl.getJSONArray(getTemplateIndex(template, "edge_servers")); - model.setStreamUrl("https://" + edgeServers.getString(0) + "/cam/mp4:" + streamName + "_h264_aac_480p/playlist.m3u8"); - model.setDisplayName(displayName); - models.add(model); - } else { - String name = result.getString("username"); - CamsodaModel model = (CamsodaModel) camsoda.createModel(name); - String streamName = result.getString("stream_name"); - model.setSortOrder(result.getFloat("sort_value")); - models.add(model); - if(result.has("status")) { - model.setOnlineStateByStatus(result.getString("status")); - } - - if(result.has("display_name")) { - model.setDisplayName(result.getString("display_name")); - } - - if(result.has("edge_servers")) { - JSONArray edgeServers = result.getJSONArray("edge_servers"); + try { + if(result.has("tpl")) { + JSONArray tpl = result.getJSONArray("tpl"); + String name = tpl.getString(getTemplateIndex(template, "username")); + String displayName = tpl.getString(getTemplateIndex(template, "display_name")); + // int connections = tpl.getInt(2); + String streamName = tpl.getString(getTemplateIndex(template, "stream_name")); + CamsodaModel model = (CamsodaModel) camsoda.createModel(name); + model.setDescription(tpl.getString(getTemplateIndex(template, "subject_html"))); + model.setSortOrder(tpl.getFloat(getTemplateIndex(template, "sort_value"))); + String preview = "https:" + tpl.getString(getTemplateIndex(template, "thumb")); + model.setPreview(preview); + JSONArray edgeServers = tpl.getJSONArray(getTemplateIndex(template, "edge_servers")); model.setStreamUrl("https://" + edgeServers.getString(0) + "/cam/mp4:" + streamName + "_h264_aac_480p/playlist.m3u8"); - } + model.setDisplayName(displayName); + models.add(model); + } else { + String name = result.getString("username"); + CamsodaModel model = (CamsodaModel) camsoda.createModel(name); + String streamName = result.getString("stream_name"); + model.setSortOrder(result.getFloat("sort_value")); + models.add(model); + if(result.has("status")) { + model.setOnlineStateByStatus(result.getString("status")); + } - if(result.has("thumb")) { - String previewUrl = "https:" + result.getString("thumb"); - model.setPreview(previewUrl); + if(result.has("display_name")) { + model.setDisplayName(result.getString("display_name")); + } + + if(result.has("edge_servers")) { + JSONArray edgeServers = result.getJSONArray("edge_servers"); + model.setStreamUrl("https://" + edgeServers.getString(0) + "/cam/mp4:" + streamName + "_h264_aac_480p/playlist.m3u8"); + } + + if(result.has("thumb")) { + String previewUrl = "https:" + result.getString("thumb"); + model.setPreview(previewUrl); + } } + } catch (Exception e) { + LOG.warn("Couldn't parse one of the models: {}", result.toString(), e); } } return models.stream()