diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1b160520..7e3294b2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,11 +1,16 @@
-1.12.2
+1.13.0
========================
-* Fix: Player not starting when path contains spaces
+* Added possibility to open small live previews of online models
+ int the Recording tab
* Added setting to toggle "Player Starting" message
* Added possibility to add models by their URL
* Added pause / resume all buttons
+* Setting to define the base URL for MFC and CTB
+* The paused checkbox are now clickable
* Implemented multi-selection for Recording and Recordings tab
+* Fix: Don't throw exceptions for unknown attributes in PlaylistParser
* Fix: Don't do space check, if minimum is set to 0
+* Fix: Player not starting when path contains spaces
1.12.1
========================
diff --git a/client/pom.xml b/client/pom.xml
index 343c11d1..7b866a81 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -8,7 +8,7 @@
ctbrec
master
- 1.12.1
+ 1.13.0
../master
diff --git a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsConfigUI.java b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsConfigUI.java
index 79d3bdc9..bf64358b 100644
--- a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsConfigUI.java
+++ b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsConfigUI.java
@@ -26,6 +26,7 @@ public class MyFreeCamsConfigUI extends AbstractConfigUI {
GridPane layout = SettingsTab.createGridLayout();
layout.add(new Label("MyFreeCams User"), 0, 0);
TextField username = new TextField(Config.getInstance().getSettings().mfcUsername);
+ username.setPrefWidth(300);
username.textProperty().addListener((ob, o, n) -> {
Config.getInstance().getSettings().mfcUsername = username.getText();
save();
@@ -47,13 +48,27 @@ public class MyFreeCamsConfigUI extends AbstractConfigUI {
GridPane.setColumnSpan(password, 2);
layout.add(password, 1, 1);
+ layout.add(new Label("MyFreeCams Base URL"), 0, 2);
+ TextField baseUrl = new TextField();
+ baseUrl.setText(Config.getInstance().getSettings().mfcBaseUrl);
+ baseUrl.textProperty().addListener((ob, o, n) -> {
+ Config.getInstance().getSettings().mfcBaseUrl = baseUrl.getText();
+ save();
+ });
+ GridPane.setFillWidth(baseUrl, true);
+ GridPane.setHgrow(baseUrl, Priority.ALWAYS);
+ GridPane.setColumnSpan(baseUrl, 2);
+ layout.add(baseUrl, 1, 2);
+
Button createAccount = new Button("Create new Account");
createAccount.setOnAction((e) -> DesktopIntegration.open(myFreeCams.getAffiliateLink()));
- layout.add(createAccount, 1, 2);
+ layout.add(createAccount, 1, 3);
GridPane.setColumnSpan(createAccount, 2);
GridPane.setMargin(username, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
GridPane.setMargin(password, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+ GridPane.setMargin(baseUrl, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
GridPane.setMargin(createAccount, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+
return layout;
}
}
diff --git a/common/pom.xml b/common/pom.xml
index 3206ef56..3fef25a0 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -8,7 +8,7 @@
ctbrec
master
- 1.12.1
+ 1.13.0
../master
diff --git a/common/src/main/java/ctbrec/Settings.java b/common/src/main/java/ctbrec/Settings.java
index 8a155a19..64fc8e42 100644
--- a/common/src/main/java/ctbrec/Settings.java
+++ b/common/src/main/java/ctbrec/Settings.java
@@ -48,6 +48,7 @@ public class Settings {
public String bongaPassword = "";
public String mfcUsername = "";
public String mfcPassword = "";
+ public String mfcBaseUrl = "https://www.myfreecams.com";
public String camsodaUsername = "";
public String camsodaPassword = "";
public String cam4Username;
diff --git a/common/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java b/common/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java
index 99128330..bd96ad96 100644
--- a/common/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java
+++ b/common/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java
@@ -240,7 +240,7 @@ public class Chaturbate extends AbstractSite {
.add("bandwidth", "high")
.build();
Request req = new Request.Builder()
- .url("https://chaturbate.com/get_edge_hls_url_ajax/")
+ .url(getBaseUrl() + "/get_edge_hls_url_ajax/")
.post(body)
.addHeader("X-Requested-With", "XMLHttpRequest")
.build();
diff --git a/common/src/main/java/ctbrec/sites/mfc/MyFreeCams.java b/common/src/main/java/ctbrec/sites/mfc/MyFreeCams.java
index a72191e2..315d040c 100644
--- a/common/src/main/java/ctbrec/sites/mfc/MyFreeCams.java
+++ b/common/src/main/java/ctbrec/sites/mfc/MyFreeCams.java
@@ -17,13 +17,14 @@ import okhttp3.Response;
public class MyFreeCams extends AbstractSite {
- public static final String BASE_URI = "https://www.myfreecams.com";
+ static String baseUrl = "https://www.myfreecams.com";
private MyFreeCamsClient client;
private MyFreeCamsHttpClient httpClient;
@Override
public void init() throws IOException {
+ baseUrl = Config.getInstance().getSettings().mfcBaseUrl;
client = MyFreeCamsClient.getInstance();
client.setSite(this);
client.start();
@@ -41,12 +42,12 @@ public class MyFreeCams extends AbstractSite {
@Override
public String getBaseUrl() {
- return BASE_URI;
+ return baseUrl;
}
@Override
public String getAffiliateLink() {
- return BASE_URI + "/?baf=8127165";
+ return baseUrl + "/?baf=8127165";
}
@Override
@@ -59,7 +60,7 @@ public class MyFreeCams extends AbstractSite {
@Override
public Integer getTokenBalance() throws IOException {
- Request req = new Request.Builder().url(BASE_URI + "/php/account.php?request=status").build();
+ Request req = new Request.Builder().url(baseUrl + "/php/account.php?request=status").build();
try(Response response = getHttpClient().execute(req)) {
if(response.isSuccessful()) {
String content = response.body().string();
@@ -74,7 +75,7 @@ public class MyFreeCams extends AbstractSite {
@Override
public String getBuyTokensLink() {
- return BASE_URI + "/php/purchase.php?request=tokens";
+ return baseUrl + "/php/purchase.php?request=tokens";
}
@Override
diff --git a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java
index 013dea20..b7b20df3 100644
--- a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java
+++ b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java
@@ -85,10 +85,11 @@ public class MyFreeCamsClient {
public void start() throws IOException {
running = true;
- serverConfig = new ServerConfig(mfc.getHttpClient());
+ serverConfig = new ServerConfig(mfc);
List websocketServers = new ArrayList(serverConfig.wsServers.keySet());
String server = websocketServers.get((int) (Math.random()*websocketServers.size()));
String wsUrl = "ws://" + server + ".myfreecams.com:8080/fcsl";
+ LOG.debug("Connecting to random websocket server {}", wsUrl);
Thread watchDog = new Thread(() -> {
while(running) {
diff --git a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java
index 1225ee45..8100b7b8 100644
--- a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java
+++ b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java
@@ -53,8 +53,8 @@ public class MyFreeCamsHttpClient extends HttpClient {
.add("submit_login", "97")
.build();
Request req = new Request.Builder()
- .url(MyFreeCams.BASE_URI + "/php/login.php")
- .header("Referer", MyFreeCams.BASE_URI)
+ .url(MyFreeCams.baseUrl + "/php/login.php")
+ .header("Referer", MyFreeCams.baseUrl)
.header("Content-Type", "application/x-www-form-urlencoded")
.post(body)
.build();
@@ -75,7 +75,7 @@ public class MyFreeCamsHttpClient extends HttpClient {
}
private boolean checkLogin() throws IOException {
- Request req = new Request.Builder().url(MyFreeCams.BASE_URI + "/php/account.php?request=status").build();
+ Request req = new Request.Builder().url(MyFreeCams.baseUrl + "/php/account.php?request=status").build();
try(Response response = execute(req)) {
if(response.isSuccessful()) {
String content = response.body().string();
@@ -99,7 +99,7 @@ public class MyFreeCamsHttpClient extends HttpClient {
public Cookie getCookie(String name) {
CookieJar jar = client.cookieJar();
- HttpUrl url = HttpUrl.parse(MyFreeCams.BASE_URI);
+ HttpUrl url = HttpUrl.parse(MyFreeCams.baseUrl);
List cookies = jar.loadForRequest(url);
for (Cookie cookie : cookies) {
if(Objects.equals(cookie.name(), name)) {
diff --git a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java
index e0937cb5..d79afa01 100644
--- a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java
+++ b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java
@@ -132,7 +132,7 @@ public class MyFreeCamsModel extends AbstractModel {
@Override
public void receiveTip(int tokens) throws IOException {
- String tipUrl = MyFreeCams.BASE_URI + "/php/tip.php";
+ String tipUrl = MyFreeCams.baseUrl + "/php/tip.php";
String initUrl = tipUrl + "?request=tip&username="+getName()+"&broadcaster_id="+getUid();
Request req = new Request.Builder().url(initUrl).build();
try(Response resp = site.getHttpClient().execute(req)) {
diff --git a/common/src/main/java/ctbrec/sites/mfc/ServerConfig.java b/common/src/main/java/ctbrec/sites/mfc/ServerConfig.java
index 6713212c..a880e633 100644
--- a/common/src/main/java/ctbrec/sites/mfc/ServerConfig.java
+++ b/common/src/main/java/ctbrec/sites/mfc/ServerConfig.java
@@ -9,13 +9,16 @@ import java.util.Objects;
import org.json.JSONArray;
import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-import ctbrec.io.HttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class ServerConfig {
+ private static final transient Logger LOG = LoggerFactory.getLogger(ServerConfig.class);
+
List ajaxServers;
List videoServers;
List chatServers;
@@ -24,9 +27,11 @@ public class ServerConfig {
Map wzobsServers;
Map ngVideoServers;
- public ServerConfig(HttpClient client) throws IOException {
- Request req = new Request.Builder().url("http://www.myfreecams.com/_js/serverconfig.js").build();
- Response resp = client.execute(req);
+ public ServerConfig(MyFreeCams mfc) throws IOException {
+ String url = mfc.getBaseUrl() + "/_js/serverconfig.js";
+ LOG.debug("Loading server config from {}", url);
+ Request req = new Request.Builder().url(url).build();
+ Response resp = mfc.getHttpClient().execute(req);
String json = resp.body().string();
JSONObject serverConfig = new JSONObject(json);
diff --git a/master/pom.xml b/master/pom.xml
index 869bcf9e..8a107451 100644
--- a/master/pom.xml
+++ b/master/pom.xml
@@ -6,7 +6,7 @@
ctbrec
master
pom
- 1.12.1
+ 1.13.0
../common
@@ -68,7 +68,7 @@
com.iheartradio.m3u8
open-m3u8
- 0.2.4
+ 0.2.7-CTBREC
org.jcodec
diff --git a/server/pom.xml b/server/pom.xml
index dcd1739e..32ae4365 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -8,7 +8,7 @@
ctbrec
master
- 1.12.1
+ 1.13.0
../master