From 0f51be96c09f64c768135317d069475cc37ea4b5 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Thu, 24 Jan 2019 20:24:09 +0100 Subject: [PATCH] Implement FC2Live downloads for the server --- .../ctbrec/sites/fc2live/Fc2HlsDownload.java | 38 +++++++++++++++++++ .../java/ctbrec/sites/fc2live/Fc2Model.java | 6 +-- .../ctbrec/recorder/server/HttpServer.java | 2 + 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 common/src/main/java/ctbrec/sites/fc2live/Fc2HlsDownload.java diff --git a/common/src/main/java/ctbrec/sites/fc2live/Fc2HlsDownload.java b/common/src/main/java/ctbrec/sites/fc2live/Fc2HlsDownload.java new file mode 100644 index 00000000..1515593f --- /dev/null +++ b/common/src/main/java/ctbrec/sites/fc2live/Fc2HlsDownload.java @@ -0,0 +1,38 @@ +package ctbrec.sites.fc2live; + +import java.io.IOException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ctbrec.Config; +import ctbrec.Model; +import ctbrec.io.HttpClient; +import ctbrec.recorder.download.HlsDownload; + +public class Fc2HlsDownload extends HlsDownload { + + private static final transient Logger LOG = LoggerFactory.getLogger(Fc2HlsDownload.class); + + public Fc2HlsDownload(HttpClient client) { + super(client); + } + + @Override + public void start(Model model, Config config) throws IOException { + Fc2Model fc2Model = (Fc2Model) model; + try { + fc2Model.openWebsocket(); + super.start(model, config); + } catch (InterruptedException e) { + LOG.error("Couldn't start download for {}", model, e); + } finally { + fc2Model.closeWebsocket(); + } + } + + @Override + public void stop() { + super.stop(); + } +} diff --git a/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java b/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java index f4130d97..f969c5c2 100644 --- a/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java +++ b/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java @@ -321,7 +321,7 @@ public class Fc2Model extends AbstractModel { } else if(json.optString("name").equals("user_count") || json.optString("name").equals("comment")) { // ignore } else { - LOG.debug("WS <-- {}", text); + LOG.debug("WS <-- {}: {}", getName(), text); } // send heartbeat every now and again @@ -329,7 +329,7 @@ public class Fc2Model extends AbstractModel { if( (now - lastHeartBeat) > TimeUnit.SECONDS.toMillis(30)) { webSocket.send("{\"name\":\"heartbeat\",\"arguments\":{},\"id\":" + messageId + "}"); lastHeartBeat = now; - LOG.debug("Sending heartbeat (messageId: {})", messageId); + LOG.debug("Sending heartbeat for {} (messageId: {})", getName(), messageId); messageId++; } } @@ -372,7 +372,7 @@ public class Fc2Model extends AbstractModel { @Override public Download createDownload() { if(Config.isServerMode()) { - return super.createDownload(); // TODO implement fc2 download for server + return new Fc2HlsDownload(getSite().getHttpClient()); } else { return new Fc2MergedHlsDownload(getSite().getHttpClient()); } diff --git a/server/src/main/java/ctbrec/recorder/server/HttpServer.java b/server/src/main/java/ctbrec/recorder/server/HttpServer.java index d36328c4..d8119f08 100644 --- a/server/src/main/java/ctbrec/recorder/server/HttpServer.java +++ b/server/src/main/java/ctbrec/recorder/server/HttpServer.java @@ -32,6 +32,7 @@ import ctbrec.sites.bonga.BongaCams; import ctbrec.sites.cam4.Cam4; import ctbrec.sites.camsoda.Camsoda; import ctbrec.sites.chaturbate.Chaturbate; +import ctbrec.sites.fc2live.Fc2Live; import ctbrec.sites.jasmin.LiveJasmin; import ctbrec.sites.mfc.MyFreeCams; import ctbrec.sites.streamate.Streamate; @@ -83,6 +84,7 @@ public class HttpServer { sites.add(new Cam4()); sites.add(new Camsoda()); sites.add(new Chaturbate()); + sites.add(new Fc2Live()); sites.add(new LiveJasmin()); sites.add(new MyFreeCams()); sites.add(new Streamate());