Compare commits
18 Commits
Author | SHA1 | Date |
---|---|---|
|
b3618714ca | |
|
2ce6bcbece | |
|
5dcdd9a483 | |
|
3dc0531331 | |
|
6de66abea1 | |
|
429aff3fb7 | |
|
e9c3087f19 | |
|
8ad01a1de4 | |
|
899df66c91 | |
|
a74fc50002 | |
|
8003d5614d | |
|
c09f44642e | |
|
27e759009b | |
|
911d2acff3 | |
|
15d99481af | |
|
3e4c52f4e2 | |
|
6225038626 | |
|
17931dd7b6 |
|
@ -7,3 +7,4 @@
|
||||||
.project
|
.project
|
||||||
*/.factorypath
|
*/.factorypath
|
||||||
**/.antlr/
|
**/.antlr/
|
||||||
|
*.code-workspace
|
17
CHANGELOG.md
|
@ -1,3 +1,20 @@
|
||||||
|
5.3.4-J62
|
||||||
|
========================
|
||||||
|
Current Good working copy after chaturbate reverting their changes. Chaturbate Video and audio currently working.
|
||||||
|
* jre bundled (in releases) (fixed permissions) (linux and macos)
|
||||||
|
* updated ffmpeg (in releases) (fixed permissions) (windows, linux and macos)
|
||||||
|
* fixed run script permissions (linux and macos)
|
||||||
|
* bump ver
|
||||||
|
* all builds checked
|
||||||
|
|
||||||
|
5.3.3-J62
|
||||||
|
========================
|
||||||
|
Reverted for chaturbate reverting their changes. Chaturbate Video and audio currently working.
|
||||||
|
* jre bundled (in releases)
|
||||||
|
* flirt4free fix - "topic" no longer sent, replaced with empty string
|
||||||
|
* bump ver
|
||||||
|
* all builds checked
|
||||||
|
|
||||||
5.3.0
|
5.3.0
|
||||||
========================
|
========================
|
||||||
* Added menu entry to force recording of models without changing the prio
|
* Added menu entry to force recording of models without changing the prio
|
||||||
|
|
26
README.md
|
@ -1,10 +1,28 @@
|
||||||
# CTB Recorder
|
# CTB Recorder
|
||||||

|

|
||||||
## Current State Version 5.3.2-a
|
## Current State Version 5.3.3
|
||||||
|
Reverted for chaturbate reverting their changes. Chaturbate Video and audio currently working.<br>
|
||||||
|
|
||||||
## updates to fix chaturbate broken audio coming soon
|
- jre bundled<br>
|
||||||
|
- f4f fix<br>
|
||||||
|
- bump ver<br>
|
||||||
|
- all builds checked<br>
|
||||||
|
|
||||||
A free recording software for different camsites. Currently supported: BongaCams, Cam4, CamSoda, Chaturbate, FC2Live, LiveJasmin, MyFreeCams, Streamate
|
### ABOUT This Repo, server and domain hosted and maintained by J62
|
||||||
|
I (j62) now have a fully set up development environment again(have been here and assisted in different ways since 2020), allowing me to handle all builds with ease. I’ve also set up a domain, Git server, and hosting—at my own expense—to provide a stable and maintained platform for the foreseeable future.<br>
|
||||||
|
|
||||||
|
I took this step after witnessing the chaotic distribution of zip files in Discord, where multiple developers were scrambling to fix the Chaturbate issue. It became clear that there was a need (once again) for a centralized collaboration and download hub.<br>
|
||||||
|
|
||||||
|
Ideally, everyone should utilize the Git server and create their own forks(of this repo). This way, we can manage changes efficiently through pull requests between forks.<br>
|
||||||
|
|
||||||
|
Support me:<br>
|
||||||
|
|
||||||
|
Bitcoin: bc1q7fvtkx8wklvd4zttsec7sfgxqh9zadk0x236lt <br>
|
||||||
|
Ether: 0x2e687A5628ff16c8f9624A914C1f727000089C3A <br>
|
||||||
|
Solana: Z5YwNPkLheSHuaSJjyHhg3L8UxjpJPt5WU6vu4hFsNR <br>
|
||||||
|
Monero: 47tjD1z63wu3FEnDCvWnFaRAZbpDKc3Ys1WCbgzvB2Gg8XbqU8bARpcCC37mWzuWBAeZPu2UGY4TAcYGhb6fptoTR8X9vjc
|
||||||
|
|
||||||
|
## A free recording software for different camsites. Currently supported: BongaCams, Cam4, CamSoda, Chaturbate, FC2Live, LiveJasmin, MyFreeCams, Streamate
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ctbrec</groupId>
|
<groupId>ctbrec</groupId>
|
||||||
<artifactId>master</artifactId>
|
<artifactId>master</artifactId>
|
||||||
<version>5.3.3</version>
|
<version>5.3.4</version>
|
||||||
<relativePath>../master</relativePath>
|
<relativePath>../master</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
|
@ -268,7 +268,8 @@ public class CamrecApplication extends Application {
|
||||||
tabPane.getTabs().add(new RecentlyWatchedTab(recorder, sites));
|
tabPane.getTabs().add(new RecentlyWatchedTab(recorder, sites));
|
||||||
}
|
}
|
||||||
tabPane.getTabs().add(new SettingsTab(sites, recorder));
|
tabPane.getTabs().add(new SettingsTab(sites, recorder));
|
||||||
tabPane.getTabs().add(new NewsTab(config));
|
//tabPane.getTabs().add(new NewsTab(config));
|
||||||
|
tabPane.getTabs().add(new NewsTab(config, getHostServices()));
|
||||||
tabPane.getTabs().add(new DonateTabFx());
|
tabPane.getTabs().add(new DonateTabFx());
|
||||||
tabPane.getTabs().add(new HelpTab());
|
tabPane.getTabs().add(new HelpTab());
|
||||||
tabPane.getTabs().add(new LoggingTab());
|
tabPane.getTabs().add(new LoggingTab());
|
||||||
|
|
|
@ -6,17 +6,22 @@ import ctbrec.GlobalThreadPool;
|
||||||
import ctbrec.Version;
|
import ctbrec.Version;
|
||||||
import ctbrec.io.HttpException;
|
import ctbrec.io.HttpException;
|
||||||
import ctbrec.io.json.ObjectMapperFactory;
|
import ctbrec.io.json.ObjectMapperFactory;
|
||||||
import ctbrec.ui.CamrecApplication;
|
|
||||||
import ctbrec.ui.controls.Dialogs;
|
import ctbrec.ui.controls.Dialogs;
|
||||||
import ctbrec.ui.tabs.TabSelectionListener;
|
import ctbrec.ui.tabs.TabSelectionListener;
|
||||||
|
import javafx.application.HostServices;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
|
import javafx.scene.control.Hyperlink;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.control.ScrollPane;
|
import javafx.scene.control.ScrollPane;
|
||||||
import javafx.scene.control.Tab;
|
import javafx.scene.control.Tab;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.Request;
|
import okhttp3.Request;
|
||||||
|
import okhttp3.Response;
|
||||||
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -27,16 +32,17 @@ import static ctbrec.io.HttpConstants.USER_AGENT;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class NewsTab extends Tab implements TabSelectionListener {
|
public class NewsTab extends Tab implements TabSelectionListener {
|
||||||
private static final String ACCESS_TOKEN = "a2804d73a89951a22e0f8483a6fcec8943afd88b7ba17c459c095aa9e6f94fd0";
|
private static final String URL = "https://git.ctbrec.com/api/v1/repos/j62/ctbrec/releases";
|
||||||
private static final String URL = "https://mastodon.cloud/api/v1/accounts/480960/statuses?limit=20&exclude_replies=true";
|
|
||||||
private final Config config;
|
private final Config config;
|
||||||
|
private final HostServices hostServices;
|
||||||
private final VBox layout = new VBox();
|
private final VBox layout = new VBox();
|
||||||
|
|
||||||
private final ObjectMapper mapper = ObjectMapperFactory.getMapper();
|
private final ObjectMapper mapper = ObjectMapperFactory.getMapper();
|
||||||
|
private final OkHttpClient httpClient = new OkHttpClient();
|
||||||
|
|
||||||
public NewsTab(Config config) {
|
public NewsTab(Config config, HostServices hostServices) {
|
||||||
this.config = config;
|
this.config = config;
|
||||||
setText("News");
|
this.hostServices = hostServices;
|
||||||
|
setText("Releases");
|
||||||
layout.setMaxWidth(800);
|
layout.setMaxWidth(800);
|
||||||
layout.setAlignment(Pos.CENTER);
|
layout.setAlignment(Pos.CENTER);
|
||||||
setContent(new ScrollPane(layout));
|
setContent(new ScrollPane(layout));
|
||||||
|
@ -44,24 +50,21 @@ public class NewsTab extends Tab implements TabSelectionListener {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void selected() {
|
public void selected() {
|
||||||
GlobalThreadPool.submit(this::loadToots);
|
GlobalThreadPool.submit(this::loadReleases);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadToots() {
|
private void loadReleases() {
|
||||||
try {
|
try {
|
||||||
var request = new Request.Builder()
|
var request = new Request.Builder()
|
||||||
.url(URL)
|
.url(URL)
|
||||||
.header("Authorization", "Bearer " + ACCESS_TOKEN)
|
|
||||||
.header(USER_AGENT, "ctbrec " + Version.getVersion())
|
.header(USER_AGENT, "ctbrec " + Version.getVersion())
|
||||||
.build();
|
.build();
|
||||||
try (var response = CamrecApplication.httpClient.execute(request)) {
|
try (Response response = httpClient.newCall(request).execute()) {
|
||||||
if (response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
var body = Objects.requireNonNull(response.body(), HTTP_RESPONSE_BODY_IS_NULL).string();
|
var body = Objects.requireNonNull(response.body(), HTTP_RESPONSE_BODY_IS_NULL).string();
|
||||||
log.debug(body);
|
log.debug(body);
|
||||||
if (body.startsWith("[")) {
|
if (body.startsWith("[")) {
|
||||||
onSuccess(body);
|
onSuccess(body);
|
||||||
} else if (body.startsWith("{")) {
|
|
||||||
onError(body);
|
|
||||||
} else {
|
} else {
|
||||||
throw new IOException("Unexpected response: " + body);
|
throw new IOException("Unexpected response: " + body);
|
||||||
}
|
}
|
||||||
|
@ -70,31 +73,54 @@ public class NewsTab extends Tab implements TabSelectionListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.info("Error while loading news", e);
|
log.info("Error while loading releases", e);
|
||||||
Dialogs.showError(getTabPane().getScene(), "News", "Couldn't load news from mastodon", e);
|
Dialogs.showError(getTabPane().getScene(), "Releases", "Couldn't load release information", e);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onError(String body) throws IOException {
|
|
||||||
var json = new JSONObject(body);
|
|
||||||
if (json.has("error")) {
|
|
||||||
throw new IOException("Request not successful: " + json.getString("error"));
|
|
||||||
} else {
|
|
||||||
throw new IOException("Unexpected response: " + body);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSuccess(String body) throws IOException {
|
private void onSuccess(String body) throws IOException {
|
||||||
Status[] statusArray = mapper.readValue(body, Status[].class);
|
JSONArray releases = new JSONArray(body);
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
layout.getChildren().clear();
|
layout.getChildren().clear();
|
||||||
for (Status status : statusArray) {
|
for (int i = 0; i < releases.length(); i++) {
|
||||||
if (status.getInReplyToId() == null && !Objects.equals("direct", status.getVisibility())) {
|
JSONObject release = releases.getJSONObject(i);
|
||||||
var stp = new StatusPane(status, config.getDateTimeFormatter());
|
String tagName = release.optString("tag_name", "Unknown Version");
|
||||||
layout.getChildren().add(stp);
|
String releaseName = release.optString("name", "No Name");
|
||||||
VBox.setMargin(stp, new Insets(10));
|
String description = release.optString("body", "No description available.");
|
||||||
|
JSONArray assets = release.optJSONArray("assets");
|
||||||
|
|
||||||
|
var releasePane = new VBox();
|
||||||
|
releasePane.setPadding(new Insets(10));
|
||||||
|
releasePane.setSpacing(5);
|
||||||
|
|
||||||
|
Label versionLabel = new Label("Version: " + tagName);
|
||||||
|
versionLabel.setStyle("-fx-font-weight: bold;");
|
||||||
|
|
||||||
|
Label nameLabel = new Label("Release: " + releaseName);
|
||||||
|
Label descLabel = new Label(description);
|
||||||
|
|
||||||
|
releasePane.getChildren().addAll(versionLabel, nameLabel, descLabel);
|
||||||
|
|
||||||
|
if (assets != null) {
|
||||||
|
Label assetsLabel = new Label("Assets:");
|
||||||
|
releasePane.getChildren().add(assetsLabel);
|
||||||
|
for (int j = 0; j < assets.length(); j++) {
|
||||||
|
JSONObject asset = assets.getJSONObject(j);
|
||||||
|
String assetName = asset.optString("name", "Unknown File");
|
||||||
|
String downloadUrl = asset.optString("browser_download_url", "#");
|
||||||
|
int size = asset.optInt("size", 0);
|
||||||
|
int downloads = asset.optInt("download_count", 0);
|
||||||
|
|
||||||
|
Hyperlink assetLink = new Hyperlink(assetName + " (" + size / 1024 / 1024 + " MB, " + downloads + " downloads)");
|
||||||
|
assetLink.setOnAction(event -> hostServices.showDocument(downloadUrl));
|
||||||
|
|
||||||
|
releasePane.getChildren().add(assetLink);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
layout.getChildren().add(releasePane);
|
||||||
|
VBox.setMargin(releasePane, new Insets(10));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,9 +24,9 @@ public class DonateTabFx extends Tab {
|
||||||
|
|
||||||
var headerVbox = new VBox(10);
|
var headerVbox = new VBox(10);
|
||||||
headerVbox.setAlignment(Pos.CENTER);
|
headerVbox.setAlignment(Pos.CENTER);
|
||||||
var beer = new Label("Buy me some beer?!");
|
var beer = new Label("Buy me a drink?!");
|
||||||
beer.setFont(new Font(36));
|
beer.setFont(new Font(36));
|
||||||
var desc = new Label("If you like this software and want to buy me some beer or pizza, here are some possibilities!");
|
var desc = new Label("If you like this software and want to buy me some MtDew or Energy Drinks(boost ctbrec dev productivity! :), Beer or Pizza, here are some possibilities!");
|
||||||
desc.setFont(new Font(24));
|
desc.setFont(new Font(24));
|
||||||
headerVbox.getChildren().addAll(beer, desc);
|
headerVbox.getChildren().addAll(beer, desc);
|
||||||
var header = new HBox();
|
var header = new HBox();
|
||||||
|
@ -36,7 +36,7 @@ public class DonateTabFx extends Tab {
|
||||||
container.setTop(header);
|
container.setTop(header);
|
||||||
|
|
||||||
var prefWidth = 360;
|
var prefWidth = 360;
|
||||||
var bitcoinAddress = new TextField("15sLWZon8diPqAX4UdPQU1DcaPuvZs2GgA");
|
var bitcoinAddress = new TextField("bc1q7fvtkx8wklvd4zttsec7sfgxqh9zadk0x236lt");
|
||||||
bitcoinAddress.setEditable(false);
|
bitcoinAddress.setEditable(false);
|
||||||
bitcoinAddress.setPrefWidth(prefWidth);
|
bitcoinAddress.setPrefWidth(prefWidth);
|
||||||
var bitcoinQrCode = new ImageView(getClass().getResource("/html/bitcoin-address.png").toString());
|
var bitcoinQrCode = new ImageView(getClass().getResource("/html/bitcoin-address.png").toString());
|
||||||
|
@ -46,7 +46,7 @@ public class DonateTabFx extends Tab {
|
||||||
bitcoinBox.setAlignment(Pos.TOP_CENTER);
|
bitcoinBox.setAlignment(Pos.TOP_CENTER);
|
||||||
bitcoinBox.getChildren().addAll(bitcoinLabel, bitcoinAddress, bitcoinQrCode);
|
bitcoinBox.getChildren().addAll(bitcoinLabel, bitcoinAddress, bitcoinQrCode);
|
||||||
|
|
||||||
var ethereumAddress = new TextField("0x996041638eEAE7E31f39Ef6e82068d69bA7C090e");
|
var ethereumAddress = new TextField("0x2e687A5628ff16c8f9624A914C1f727000089C3A");
|
||||||
ethereumAddress.setEditable(false);
|
ethereumAddress.setEditable(false);
|
||||||
ethereumAddress.setPrefWidth(prefWidth);
|
ethereumAddress.setPrefWidth(prefWidth);
|
||||||
var ethereumQrCode = new ImageView(getClass().getResource("/html/ethereum-address.png").toString());
|
var ethereumQrCode = new ImageView(getClass().getResource("/html/ethereum-address.png").toString());
|
||||||
|
@ -56,7 +56,7 @@ public class DonateTabFx extends Tab {
|
||||||
ethereumBox.setAlignment(Pos.TOP_CENTER);
|
ethereumBox.setAlignment(Pos.TOP_CENTER);
|
||||||
ethereumBox.getChildren().addAll(ethereumLabel, ethereumAddress, ethereumQrCode);
|
ethereumBox.getChildren().addAll(ethereumLabel, ethereumAddress, ethereumQrCode);
|
||||||
|
|
||||||
var moneroAddress = new TextField("871K7xaLR2X8E84CUBi7D88diXgKjbhjZHTEFfJv9ec9eo4NVPCQ2UsGxkroseCcKQbZsHMgW3kg6HR4tfct3fX2HoFDzK6");
|
var moneroAddress = new TextField("47tjD1z63wu3FEnDCvWnFaRAZbpDKc3Ys1WCbgzvB2Gg8XbqU8bARpcCC37mWzuWBAeZPu2UGY4TAcYGhb6fptoTR8X9vjc");
|
||||||
moneroAddress.setEditable(false);
|
moneroAddress.setEditable(false);
|
||||||
moneroAddress.setPrefWidth(prefWidth);
|
moneroAddress.setPrefWidth(prefWidth);
|
||||||
var moneroQrCode = new ImageView(getClass().getResource("/html/monero-address.png").toString());
|
var moneroQrCode = new ImageView(getClass().getResource("/html/monero-address.png").toString());
|
||||||
|
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 4.9 KiB |
|
@ -8,7 +8,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ctbrec</groupId>
|
<groupId>ctbrec</groupId>
|
||||||
<artifactId>master</artifactId>
|
<artifactId>master</artifactId>
|
||||||
<version>5.3.3</version>
|
<version>5.3.4</version>
|
||||||
<relativePath>../master</relativePath>
|
<relativePath>../master</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
176
docs/index.html
|
@ -2,14 +2,14 @@
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
<!-- Google tag (gtag.js) -->
|
||||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-129283922-1"></script>
|
<script async src="https://www.googletagmanager.com/gtag/js?id=G-6CHNT0DY87"></script>
|
||||||
<script>
|
<script>
|
||||||
window.dataLayer = window.dataLayer || [];
|
window.dataLayer = window.dataLayer || [];
|
||||||
function gtag(){dataLayer.push(arguments);}
|
function gtag(){dataLayer.push(arguments);}
|
||||||
gtag('js', new Date());
|
gtag('js', new Date());
|
||||||
|
|
||||||
gtag('config', 'UA-129283922-1');
|
gtag('config', 'G-6CHNT0DY87');
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
|
@ -25,7 +25,8 @@
|
||||||
<!-- Custom fonts for this template -->
|
<!-- Custom fonts for this template -->
|
||||||
<link href="vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
<link href="vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||||
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
|
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
|
||||||
<link href="https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic" rel="stylesheet" type="text/css">
|
<link href="https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic" rel="stylesheet"
|
||||||
|
type="text/css">
|
||||||
|
|
||||||
<!-- Plugin CSS -->
|
<!-- Plugin CSS -->
|
||||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet" type="text/css">
|
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet" type="text/css">
|
||||||
|
@ -42,8 +43,12 @@
|
||||||
<!-- Navigation -->
|
<!-- Navigation -->
|
||||||
<nav class="navbar navbar-expand-lg bg-secondary fixed-top text-uppercase" id="mainNav">
|
<nav class="navbar navbar-expand-lg bg-secondary fixed-top text-uppercase" id="mainNav">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<a class="navbar-brand js-scroll-trigger" href="#page-top"><img src="https://raw.githubusercontent.com/0xboobface/ctbrec/master/client/src/main/resources/icon64.png" alt="Logo"/>CTB Recorder</a>
|
<a class="navbar-brand js-scroll-trigger" href="#page-top"><img
|
||||||
<button class="navbar-toggler navbar-toggler-right text-uppercase bg-primary text-white rounded" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
src="https://git.ctbrec.com/j62/ctbrec/raw/branch/main/client/src/main/resources/icon64.png" alt="Logo" />CTB
|
||||||
|
Recorder</a>
|
||||||
|
<button class="navbar-toggler navbar-toggler-right text-uppercase bg-primary text-white rounded" type="button"
|
||||||
|
data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false"
|
||||||
|
aria-label="Toggle navigation">
|
||||||
Menu
|
Menu
|
||||||
<i class="fa fa-bars"></i>
|
<i class="fa fa-bars"></i>
|
||||||
</button>
|
</button>
|
||||||
|
@ -63,7 +68,8 @@
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item mx-0 mx-lg-1">
|
<li class="nav-item mx-0 mx-lg-1">
|
||||||
<a href="#donate" class="js-scroll-trigger" style="float:right; margin-left: 10px">
|
<a href="#donate" class="js-scroll-trigger" style="float:right; margin-left: 10px">
|
||||||
<img src="img/buymeacoffee/Button/button-red.png" alt="Buy a coffee" style="width:150px; padding-top: 7px"/>
|
<img src="img/buymeacoffee/Button/button-red.png" alt="Buy a coffee"
|
||||||
|
style="width:150px; padding-top: 7px" />
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -79,7 +85,9 @@
|
||||||
-->
|
-->
|
||||||
<h1 class="text-uppercase mb-0">CTB Recorder</h1>
|
<h1 class="text-uppercase mb-0">CTB Recorder</h1>
|
||||||
<hr class="star-light">
|
<hr class="star-light">
|
||||||
<h2 class="font-weight-light mb-0">A free recording software for different camsites.<br/>Currently supported: BongaCams, Cam4, CamSoda, Chaturbate, FC2Live, LiveJasmin, MyFreeCams, Streamate</h2>
|
<h2 class="font-weight-light mb-0">A free recording software for different camsites.<br />Currently supported:
|
||||||
|
Amateur.tv, BongaCams, Cam4, CamSoda, Chaturbate, CherryTV, Dreamcam, FC2Live, Flirt4free, LiveJasmin, MV Live,
|
||||||
|
MyFreeCams, SecretFriends, Showup.tv, Streamate, Stripchat, Streamray, WinkTV, XLoveCam</h2>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
@ -90,14 +98,18 @@
|
||||||
<hr class="star-dark mb-5">
|
<hr class="star-dark mb-5">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-4 ml-auto">
|
<div class="col-lg-4 ml-auto">
|
||||||
<p class="lead">If you ever wanted to record a cam girl show to watch it later or if your favorite model lives in another timezone and is never online when you are, CTB Recorder is the solution for you.</p>
|
<p class="lead">If you ever wanted to record a cam girl show to watch it later or if your favorite model lives
|
||||||
|
in another timezone and is never online when you are, CTB Recorder is the solution for you.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-4 mr-auto">
|
<div class="col-lg-4 mr-auto">
|
||||||
<p class="lead">CTB Recorder allows you to record any public show on different cam sites. It is very easy to use and set up in minutes. You can even run the recorder on a server and control it with the graphical user interface, so that you never miss a show again.</p>
|
<p class="lead">CTB Recorder allows you to record any public show on different cam sites. It is very easy to
|
||||||
|
use and set up in minutes. You can even run the recorder on a server and control it with the graphical user
|
||||||
|
interface, so that you never miss a show again.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
let cnt = 10;
|
let cnt = 10;
|
||||||
|
|
||||||
function downloadCounter(uri) {
|
function downloadCounter(uri) {
|
||||||
window.setTimeout(function () {
|
window.setTimeout(function () {
|
||||||
if (cnt === 0) {
|
if (cnt === 0) {
|
||||||
|
@ -109,6 +121,7 @@
|
||||||
}
|
}
|
||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
function downloadFile(uri) {
|
function downloadFile(uri) {
|
||||||
cnt = 10;
|
cnt = 10;
|
||||||
$('#download-counter').show();
|
$('#download-counter').show();
|
||||||
|
@ -118,19 +131,22 @@
|
||||||
</script>
|
</script>
|
||||||
<div class="row text-center">
|
<div class="row text-center">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<a id="download_windows" class="btn btn-xl btn-outline-dark" href="#donate" onclick="downloadFile('https://github.com/0xboobface/ctbrec/releases/download/1.18.0/ctbrec-1.18.0-win64-jre.zip');">
|
<a id="download_windows" class="btn btn-xl btn-outline-dark" href="#donate"
|
||||||
|
onclick="downloadFile('https://git.ctbrec.com/j62/ctbrec/releases/download/5.3.3/ctbrec-5.3.3-win64-jre.zip');">
|
||||||
<i class="fa fa-windows mr-2"></i>
|
<i class="fa fa-windows mr-2"></i>
|
||||||
Download for Windows!
|
Download for Windows!
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<a id="download_macos" class="btn btn-xl btn-outline-dark" href="#donate" onclick="downloadFile('https://github.com/0xboobface/ctbrec/releases/download/1.18.0/ctbrec-1.18.0-macos-jre.zip');">
|
<a id="download_macos" class="btn btn-xl btn-outline-dark" href="#donate"
|
||||||
|
onclick="downloadFile('https://git.ctbrec.com/j62/ctbrec/releases/download/5.3.3/ctbrec-5.3.3-macos-jre.zip');">
|
||||||
<i class="fa fa-apple mr-2"></i>
|
<i class="fa fa-apple mr-2"></i>
|
||||||
Download for macOS!
|
Download for macOS!
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<a id="download_linux" class="btn btn-xl btn-outline-dark" href="#donate" onclick="downloadFile('https://github.com/0xboobface/ctbrec/releases/download/1.18.0/ctbrec-1.18.0-linux-jre.zip');">
|
<a id="download_linux" class="btn btn-xl btn-outline-dark" href="#donate"
|
||||||
|
onclick="downloadFile('https://git.ctbrec.com/j62/ctbrec/releases/download/5.3.3/ctbrec-5.3.3-linux-jre.zip');">
|
||||||
<i class="fa fa-linux mr-2"></i>
|
<i class="fa fa-linux mr-2"></i>
|
||||||
Download for Linux!
|
Download for Linux!
|
||||||
</a>
|
</a>
|
||||||
|
@ -147,45 +163,43 @@
|
||||||
<div class="col-lg-10 mx-auto text-center">
|
<div class="col-lg-10 mx-auto text-center">
|
||||||
<p id="download-counter" class="lead text-center" style="display:none"></p>
|
<p id="download-counter" class="lead text-center" style="display:none"></p>
|
||||||
<p class="lead">
|
<p class="lead">
|
||||||
CTB Recorder is free and open source. I'm a student and wrote this software in my spare time.
|
CTB Recorder is free and open source. (Originally created by 0xboobface). I'm a student and am helping with
|
||||||
If you like the software or want to suggest a new feature, please consider buying me a coffee or two. Thanks!
|
current development, hosting this site, git(source code repo) and more on servers I am providing for free in
|
||||||
|
my spare time.
|
||||||
|
If you like the software or want to suggest a new feature, please consider buying me a coffee or two.
|
||||||
|
Thanks!
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row text-center">
|
<div class="row text-center">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<p class="lead">
|
<p class="lead">
|
||||||
<a href="https://www.buymeacoffee.com/0xboobface" target="_blank">
|
<a href="https://buymeacoffee.com/j62ctbrec" target="_blank">
|
||||||
<img src="img/buymeacoffee-round.png" alt="Buy a coffee" style="height: 160px; margin: 20px" />
|
<img src="img/buymeacoffee-round.png" alt="Buy a coffee" style="height: 160px; margin: 20px" />
|
||||||
</a><br />
|
</a><br />
|
||||||
<input type="button" value="Buy a coffee"
|
<input type="button" value="Buy a coffee"
|
||||||
onclick="window.open('https://www.buymeacoffee.com/0xboobface','_blank')">
|
onclick="window.open('https://buymeacoffee.com/j62ctbrec','_blank')">
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<p class="lead">
|
<p class="lead">
|
||||||
<a href="https://www.paypal.me/0xb00bface" target="_blank">
|
<a href="https://www.patreon.com/j62ctbrec" target="_blank">
|
||||||
<img src="img/paypal-round.png" alt="PayPal" style="height: 160px; margin: 20px"/>
|
|
||||||
</a><br/>
|
|
||||||
<input type="button" value="PayPal"
|
|
||||||
onclick="window.open('https://www.paypal.me/0xb00bface','_blank')">
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<p class="lead">
|
|
||||||
<a href="https://www.patreon.com/0xb00bface" target="_blank">
|
|
||||||
<img src="img/patreon-round.png" alt="Patreon" style="height: 160px; margin: 20px" />
|
<img src="img/patreon-round.png" alt="Patreon" style="height: 160px; margin: 20px" />
|
||||||
</a><br />
|
</a><br />
|
||||||
<input type="button" value="Patreon"
|
<input type="button" value="Patreon" onclick="window.open('https://www.patreon.com/j62ctbrec','_blank')">
|
||||||
onclick="window.open('https://www.patreon.com/0xb00bface','_blank')">
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<br/><br/>
|
|
||||||
<div class="row text-center">
|
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<p class="lead">
|
<p class="lead">
|
||||||
<a href="https://chaturbate.com/in/?track=default&tour=LQps&campaign=97mhH&room=0xb00bface" target="_blank" title="If you buy tokens by using this button, Chaturbate will award me 20% of the tokens' value for sending you over. You get the full tokens and it doesn't cost you any more!">
|
<a href="https://chaturbate.com/in/?track=default&tour=LQps&campaign=97mhH&room=0xb00bface"
|
||||||
|
target="_blank"
|
||||||
|
title="If you buy tokens by using this button, Chaturbate will award me 20% of the tokens' value for sending you over. You get the full tokens and it doesn't cost you any more!">
|
||||||
<img src="img/token.png" alt="Buy Chaturbate tokens" />
|
<img src="img/token.png" alt="Buy Chaturbate tokens" />
|
||||||
</a><br />
|
</a><br />
|
||||||
<input type="button" value="Buy tokens"
|
<input type="button" value="Buy tokens"
|
||||||
|
@ -194,7 +208,25 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<br>
|
||||||
|
<div class="row text-center">
|
||||||
|
|
||||||
|
<!-- Crypto Donation Section -->
|
||||||
|
<div id="crypto-donate" class="lead text-center">
|
||||||
|
<h3>Donate with Cryptocurrency</h3>
|
||||||
|
<p class="lead">Support us by donating with crypto. Thank you for your support!</p>
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
<li><strong>BTC:</strong> bc1q7fvtkx8wklvd4zttsec7sfgxqh9zadk0x236lt</li>
|
||||||
|
<li><strong>ETH:</strong> 0x2e687A5628ff16c8f9624A914C1f727000089C3A</li>
|
||||||
|
<li><strong>Solana:</strong> Z5YwNPkLheSHuaSJjyHhg3L8UxjpJPt5WU6vu4hFsNR</li>
|
||||||
|
<li><strong>Monero:</strong>
|
||||||
|
47tjD1z63wu3FEnDCvWnFaRAZbpDKc3Ys1WCbgzvB2Gg8XbqU8bARpcCC37mWzuWBAeZPu2UGY4TAcYGhb6fptoTR8X9vjc</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Screenshots Grid Section -->
|
<!-- Screenshots Grid Section -->
|
||||||
|
@ -281,7 +313,8 @@
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header" id="headingTwo">
|
<div class="card-header" id="headingTwo">
|
||||||
<h5 class="mb-0">
|
<h5 class="mb-0">
|
||||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
|
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse"
|
||||||
|
data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
|
||||||
What is a .ts file?
|
What is a .ts file?
|
||||||
</button>
|
</button>
|
||||||
</h5>
|
</h5>
|
||||||
|
@ -290,8 +323,8 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
A .ts file is a MPEG transport stream, which contains the video and
|
A .ts file is a MPEG transport stream, which contains the video and
|
||||||
audio of the stream. If you want to convert a .ts file into mp4
|
audio of the stream. If you want to convert a .ts file into mp4
|
||||||
or mkv you can use a program like <a
|
or mkv you can use a program like <a href="https://handbrake.fr/">Handbrake</a> or <a
|
||||||
href="https://handbrake.fr/">Handbrake</a> or <a href="http://avidemux.sourceforge.net/">Avidemux</a>.
|
href="http://avidemux.sourceforge.net/">Avidemux</a>.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -300,21 +333,27 @@
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header" id="headingThree">
|
<div class="card-header" id="headingThree">
|
||||||
<h5 class="mb-0">
|
<h5 class="mb-0">
|
||||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
|
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse"
|
||||||
|
data-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
|
||||||
How do I run the server?
|
How do I run the server?
|
||||||
</button>
|
</button>
|
||||||
</h5>
|
</h5>
|
||||||
</div>
|
</div>
|
||||||
<div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-parent="#accordionExample">
|
<div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-parent="#accordionExample">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
The archive you downloaded contains a server.bat or server.sh, which can be used to start the server. On the first start, the server uses a default
|
The archive you downloaded contains a server.bat or server.sh, which can be used to start the server.
|
||||||
configuration. Once you terminate the server by pressing <kbd><kbd>ctrl</kbd> + <kbd>c</kbd></kbd>, the config is stored in your user home.<br/>
|
On the first start, the server uses a default
|
||||||
|
configuration. Once you terminate the server by pressing <kbd><kbd>ctrl</kbd> + <kbd>c</kbd></kbd>,
|
||||||
|
the config is stored in your user home.<br />
|
||||||
On Windows that is <code>C:\Users\{your user name}\AppData\Roaming\ctbrec\server.json</code><br />
|
On Windows that is <code>C:\Users\{your user name}\AppData\Roaming\ctbrec\server.json</code><br />
|
||||||
On Linux it is <code>~/.config/ctbrec/server.json</code><br />
|
On Linux it is <code>~/.config/ctbrec/server.json</code><br />
|
||||||
On macOS it is <code>/Users/{your user name}/Library/Preferences/ctbrec</code><br />
|
On macOS it is <code>/Users/{your user name}/Library/Preferences/ctbrec</code><br />
|
||||||
You can open this file in a text editor and change it to your likings. You probably only want to change <code>httpPort</code> and <code>recordingsDir</code>.
|
You can open this file in a text editor and change it to your likings. You probably only want to
|
||||||
Most of the other stuff is irrelevant since the server and CTB Recorder use the same config file format.
|
change <code>httpPort</code> and <code>recordingsDir</code>.
|
||||||
When the server is running, you can connect to it with CTB Recorder by changing the setting "Record location" to "Remote".
|
Most of the other stuff is irrelevant since the server and CTB Recorder use the same config file
|
||||||
|
format.
|
||||||
|
When the server is running, you can connect to it with CTB Recorder by changing the setting "Record
|
||||||
|
location" to "Remote".
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -323,14 +362,16 @@
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header" id="headingFour">
|
<div class="card-header" id="headingFour">
|
||||||
<h5 class="mb-0">
|
<h5 class="mb-0">
|
||||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseFour" aria-expanded="false" aria-controls="collapseFour">
|
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse"
|
||||||
|
data-target="#collapseFour" aria-expanded="false" aria-controls="collapseFour">
|
||||||
What is the difference between the Windows download and Windows (no JRE)?
|
What is the difference between the Windows download and Windows (no JRE)?
|
||||||
</button>
|
</button>
|
||||||
</h5>
|
</h5>
|
||||||
</div>
|
</div>
|
||||||
<div id="collapseFour" class="collapse" aria-labelledby="headingFour" data-parent="#accordionExample">
|
<div id="collapseFour" class="collapse" aria-labelledby="headingFour" data-parent="#accordionExample">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
If you know what Java is and if you know, that you have Java installed, you can use the (no JRE) version. Otherwise you are better off using the
|
If you know what Java is and if you know, that you have Java installed, you can use the (no JRE)
|
||||||
|
version. Otherwise you are better off using the
|
||||||
standard Windows download, because it comes with all necessary dependencies.
|
standard Windows download, because it comes with all necessary dependencies.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -340,14 +381,16 @@
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header" id="headingFive">
|
<div class="card-header" id="headingFive">
|
||||||
<h5 class="mb-0">
|
<h5 class="mb-0">
|
||||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseFive" aria-expanded="false" aria-controls="collapseFive">
|
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse"
|
||||||
|
data-target="#collapseFive" aria-expanded="false" aria-controls="collapseFive">
|
||||||
I need help!
|
I need help!
|
||||||
</button>
|
</button>
|
||||||
</h5>
|
</h5>
|
||||||
</div>
|
</div>
|
||||||
<div id="collapseFive" class="collapse" aria-labelledby="headingFive" data-parent="#accordionExample">
|
<div id="collapseFive" class="collapse" aria-labelledby="headingFive" data-parent="#accordionExample">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>.
|
Go to the project website and <a href="https://git.ctbrec.com/j62/ctbrec/issues">create a new
|
||||||
|
Issue</a>.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -356,14 +399,16 @@
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header" id="headingSix">
|
<div class="card-header" id="headingSix">
|
||||||
<h5 class="mb-0">
|
<h5 class="mb-0">
|
||||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseSix" aria-expanded="false" aria-controls="collapseSix">
|
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse"
|
||||||
|
data-target="#collapseSix" aria-expanded="false" aria-controls="collapseSix">
|
||||||
I have a suggestion for a new feature!
|
I have a suggestion for a new feature!
|
||||||
</button>
|
</button>
|
||||||
</h5>
|
</h5>
|
||||||
</div>
|
</div>
|
||||||
<div id="collapseSix" class="collapse" aria-labelledby="headingSix" data-parent="#accordionExample">
|
<div id="collapseSix" class="collapse" aria-labelledby="headingSix" data-parent="#accordionExample">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>.
|
Go to the project website and <a href="https://git.ctbrec.com/j62/ctbrec/issues">create a new
|
||||||
|
Issue</a>.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -372,14 +417,16 @@
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header" id="headingSeven">
|
<div class="card-header" id="headingSeven">
|
||||||
<h5 class="mb-0">
|
<h5 class="mb-0">
|
||||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseSeven" aria-expanded="false" aria-controls="collapseSeven">
|
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse"
|
||||||
|
data-target="#collapseSeven" aria-expanded="false" aria-controls="collapseSeven">
|
||||||
I found a bug! Where can I report it?
|
I found a bug! Where can I report it?
|
||||||
</button>
|
</button>
|
||||||
</h5>
|
</h5>
|
||||||
</div>
|
</div>
|
||||||
<div id="collapseSeven" class="collapse" aria-labelledby="headingSeven" data-parent="#accordionExample">
|
<div id="collapseSeven" class="collapse" aria-labelledby="headingSeven" data-parent="#accordionExample">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>.
|
Go to the project website and <a href="https://git.ctbrec.com/j62/ctbrec/issues">create a new
|
||||||
|
Issue</a>.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -397,7 +444,8 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-8 mx-auto text-center">
|
<div class="col-lg-8 mx-auto text-center">
|
||||||
<p class="lead">
|
<p class="lead">
|
||||||
CTB Recorder is free and open source. The source code is available on <a href="https://github.com/0xboobface/ctbrec">Github</a>.
|
CTB Recorder is free and open source. The source code is available on <a
|
||||||
|
href="https://git.ctbrec.com/j62/ctbrec">CTBRec Gitea</a>.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -483,7 +531,8 @@
|
||||||
<h2 class="text-secondary text-uppercase mb-0">Featured</h2>
|
<h2 class="text-secondary text-uppercase mb-0">Featured</h2>
|
||||||
<hr class="star-dark mb-5">
|
<hr class="star-dark mb-5">
|
||||||
<img class="img-fluid mb-5" src="img/featured.jpg" alt="">
|
<img class="img-fluid mb-5" src="img/featured.jpg" alt="">
|
||||||
<p class="mb-5">You can browse all the different categories like in the browser. The filter input on top helps, to find models quickly.</p>
|
<p class="mb-5">You can browse all the different categories like in the browser. The filter input on top
|
||||||
|
helps, to find models quickly.</p>
|
||||||
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
||||||
<i class="fa fa-close"></i>
|
<i class="fa fa-close"></i>
|
||||||
Close</a>
|
Close</a>
|
||||||
|
@ -505,7 +554,8 @@
|
||||||
<h2 class="text-secondary text-uppercase mb-0">Recording</h2>
|
<h2 class="text-secondary text-uppercase mb-0">Recording</h2>
|
||||||
<hr class="star-dark mb-5">
|
<hr class="star-dark mb-5">
|
||||||
<img class="img-fluid mb-5" src="img/recording.png" alt="">
|
<img class="img-fluid mb-5" src="img/recording.png" alt="">
|
||||||
<p class="mb-5">The Recording overview shows you, which models get recorded. You can also see, which models are currently online.</p>
|
<p class="mb-5">The Recording overview shows you, which models get recorded. You can also see, which models
|
||||||
|
are currently online.</p>
|
||||||
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
||||||
<i class="fa fa-close"></i>
|
<i class="fa fa-close"></i>
|
||||||
Close</a>
|
Close</a>
|
||||||
|
@ -527,7 +577,8 @@
|
||||||
<h2 class="text-secondary text-uppercase mb-0">Start a recording</h2>
|
<h2 class="text-secondary text-uppercase mb-0">Start a recording</h2>
|
||||||
<hr class="star-dark mb-5">
|
<hr class="star-dark mb-5">
|
||||||
<img class="img-fluid mb-5" src="img/followed.jpg" alt="">
|
<img class="img-fluid mb-5" src="img/followed.jpg" alt="">
|
||||||
<p class="mb-5">Recordings can be started with a simple right-click, as well as models followed or unfollowed.</p>
|
<p class="mb-5">Recordings can be started with a simple right-click, as well as models followed or
|
||||||
|
unfollowed.</p>
|
||||||
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
||||||
<i class="fa fa-close"></i>
|
<i class="fa fa-close"></i>
|
||||||
Close</a>
|
Close</a>
|
||||||
|
@ -571,7 +622,8 @@
|
||||||
<h2 class="text-secondary text-uppercase mb-0">Settings</h2>
|
<h2 class="text-secondary text-uppercase mb-0">Settings</h2>
|
||||||
<hr class="star-dark mb-5">
|
<hr class="star-dark mb-5">
|
||||||
<img class="img-fluid mb-5" src="img/settings.png" alt="">
|
<img class="img-fluid mb-5" src="img/settings.png" alt="">
|
||||||
<p class="mb-5">You can define where the recordings are saved and which media player to use. I recommend <a href="https://mpv.io/" target="_blank">mpv</a>.</p>
|
<p class="mb-5">You can define where the recordings are saved and which media player to use. I recommend <a
|
||||||
|
href="https://mpv.io/" target="_blank">mpv</a>.</p>
|
||||||
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
||||||
<i class="fa fa-close"></i>
|
<i class="fa fa-close"></i>
|
||||||
Close</a>
|
Close</a>
|
||||||
|
@ -623,13 +675,19 @@
|
||||||
<script>
|
<script>
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
url: 'https://api.github.com/repos/0xboobface/ctbrec/releases'
|
url: 'https://git.ctbrec.com/api/v1/repos/j62/ctbrec/releases'
|
||||||
}).done(function (releases) {
|
}).done(function (releases) {
|
||||||
let latest = releases[0];
|
let latest = releases[0];
|
||||||
let version = latest.tag_name;
|
let version = latest.tag_name;
|
||||||
$('#download_windows').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/'+version+'/ctbrec-'+version+'-win64-jre.zip'));
|
$('#download_windows').on('click', () => downloadFile(
|
||||||
$('#download_macos').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/'+version+'/ctbrec-'+version+'-macos-jre.zip'));
|
'https://git.ctbrec.com/j62/ctbrec/releases/download/' + version + '/ctbrec-' + version +
|
||||||
$('#download_linux').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/'+version+'/ctbrec-'+version+'-linux-jre.zip'));
|
'-win64-jre.zip'));
|
||||||
|
$('#download_macos').on('click', () => downloadFile(
|
||||||
|
'https://git.ctbrec.com/j62/ctbrec/releases/download/' + version + '/ctbrec-' + version +
|
||||||
|
'-macos-jre.zip'));
|
||||||
|
$('#download_linux').on('click', () => downloadFile(
|
||||||
|
'https://git.ctbrec.com/j62/ctbrec/releases/download/' + version + '/ctbrec-' + version +
|
||||||
|
'-linux-jre.zip'));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<groupId>ctbrec</groupId>
|
<groupId>ctbrec</groupId>
|
||||||
<artifactId>master</artifactId>
|
<artifactId>master</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>5.3.3</version>
|
<version>5.3.4</version>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>../common</module>
|
<module>../common</module>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ctbrec</groupId>
|
<groupId>ctbrec</groupId>
|
||||||
<artifactId>master</artifactId>
|
<artifactId>master</artifactId>
|
||||||
<version>5.3.3</version>
|
<version>5.3.4</version>
|
||||||
<relativePath>../master</relativePath>
|
<relativePath>../master</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 9.4 KiB |