From f1adead85122265649a6d6c9e3b32195995dd0de Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Wed, 25 Jul 2018 20:21:51 +0200 Subject: [PATCH] Improved resolution requests --- src/main/java/ctbrec/ModelParser.java | 2 ++ src/main/java/ctbrec/Settings.java | 2 +- src/main/java/ctbrec/recorder/Chaturbate.java | 2 ++ .../java/ctbrec/recorder/LocalRecorder.java | 4 ++- src/main/java/ctbrec/ui/ThumbCell.java | 26 ++++++++++++++++--- 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/main/java/ctbrec/ModelParser.java b/src/main/java/ctbrec/ModelParser.java index 6709e0f4..e6f20b3e 100644 --- a/src/main/java/ctbrec/ModelParser.java +++ b/src/main/java/ctbrec/ModelParser.java @@ -4,6 +4,7 @@ import static ctbrec.ui.Launcher.BASE_URI; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; @@ -26,6 +27,7 @@ public class ModelParser { model.setPreview(HtmlParser.getTag(cellHtml, "a img").attr("src")); model.setUrl(BASE_URI + HtmlParser.getTag(cellHtml, "a").attr("href")); model.setDescription(HtmlParser.getText(cellHtml, "div.details ul.subject")); + model.setOnline(!Objects.equals("offline", HtmlParser.getText(cellHtml, "div.details li.cams"))); Elements tags = HtmlParser.getTags(cellHtml, "div.details ul.subject li a"); if(tags != null) { for (Element tag : tags) { diff --git a/src/main/java/ctbrec/Settings.java b/src/main/java/ctbrec/Settings.java index bff554ef..0234b40f 100644 --- a/src/main/java/ctbrec/Settings.java +++ b/src/main/java/ctbrec/Settings.java @@ -7,7 +7,7 @@ import java.util.List; public class Settings { public boolean localRecording = true; public int httpPort = 8080; - public int httpTimeout = 30; + public int httpTimeout = 10; public String httpServer = "localhost"; public String recordingsDir = System.getProperty("user.home") + File.separator + "ctbrec"; public String mediaPlayer = "/usr/bin/mpv"; diff --git a/src/main/java/ctbrec/recorder/Chaturbate.java b/src/main/java/ctbrec/recorder/Chaturbate.java index ebb11a3d..19bde402 100644 --- a/src/main/java/ctbrec/recorder/Chaturbate.java +++ b/src/main/java/ctbrec/recorder/Chaturbate.java @@ -2,6 +2,7 @@ package ctbrec.recorder; import java.io.IOException; import java.io.InputStream; +import java.util.Objects; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,6 +46,7 @@ public class Chaturbate { Moshi moshi = new Moshi.Builder().build(); JsonAdapter adapter = moshi.adapter(StreamInfo.class); StreamInfo streamInfo = adapter.fromJson(content); + model.setOnline(Objects.equals(streamInfo.room_status, "public")); return streamInfo; } else { int code = response.code(); diff --git a/src/main/java/ctbrec/recorder/LocalRecorder.java b/src/main/java/ctbrec/recorder/LocalRecorder.java index 91d7a38b..73657575 100644 --- a/src/main/java/ctbrec/recorder/LocalRecorder.java +++ b/src/main/java/ctbrec/recorder/LocalRecorder.java @@ -192,7 +192,9 @@ public class LocalRecorder implements Recorder { private boolean checkIfOnline(Model model) throws IOException { StreamInfo streamInfo = Chaturbate.getStreamInfo(model, client); - return Objects.equals(streamInfo.room_status, "public"); + boolean online = Objects.equals(streamInfo.room_status, "public"); + model.setOnline(online); + return online; } private void tryRestartRecording(Model model) { diff --git a/src/main/java/ctbrec/ui/ThumbCell.java b/src/main/java/ctbrec/ui/ThumbCell.java index 5edc7d9d..240224f9 100644 --- a/src/main/java/ctbrec/ui/ThumbCell.java +++ b/src/main/java/ctbrec/ui/ThumbCell.java @@ -208,7 +208,7 @@ public class ThumbCell extends StackPane { private void determineResolution() { if(ThumbOverviewTab.resolutionProcessing.contains(model)) { - LOG.trace("Already fetching resolution for model {}", model.getName()); + LOG.debug("Already fetching resolution for model {}. Queue size {}", model.getName(), ThumbOverviewTab.resolutionProcessing.size()); return; } @@ -254,8 +254,17 @@ public class ThumbCell extends StackPane { // when we first requested the stream info, so we remove this invalid value from the "cache" // so that it is requested again if(model.isOnline() && res[1] == 0) { - LOG.debug("Removing invalid resolution value for {}", model.getName()); - resolutions.remove(model.getName()); + ThumbOverviewTab.threadPool.submit(() -> { + try { + Chaturbate.getStreamInfo(model, client); + if(model.isOnline()) { + LOG.debug("Removing invalid resolution value for {}", model.getName()); + resolutions.remove(model.getName()); + } + } catch (IOException e) { + LOG.error("Coulnd't get resolution for model {}", model, e); + } + }); } } } @@ -517,7 +526,16 @@ public class ThumbCell extends StackPane { } public void setModel(Model model) { - this.model = model; + //this.model = model; + this.model.setName(model.getName()); + this.model.setDescription(model.getDescription()); + this.model.setOnline(model.isOnline()); + this.model.setPreview(model.getPreview()); + this.model.setStreamResolution(model.getStreamResolution()); + this.model.setStreamUrlIndex(model.getStreamUrlIndex()); + this.model.setTags(model.getTags()); + this.model.setUrl(model.getUrl()); + update(); }