forked from j62/ctbrec
Compare commits
40 Commits
Author | SHA1 | Date |
---|---|---|
|
ceceb4dd6e | |
|
1c1066d399 | |
|
a4984b02f1 | |
|
98d6ece1a6 | |
|
b1e1f9b2c7 | |
|
45434afd96 | |
|
2a0a3ad4a6 | |
|
e7aae593cc | |
|
2622305951 | |
|
41ddc25cc9 | |
|
809325ebac | |
|
e58f491887 | |
|
ec4e5e9ba2 | |
|
819c80ca30 | |
|
674a84dcb0 | |
|
733cdc6da4 | |
|
f59bf26d54 | |
|
6dbbde9d80 | |
|
6aec3a2354 | |
|
4cf096ff1a | |
|
9c1cd6b073 | |
|
bb91a319c4 | |
|
0dc8bbc870 | |
|
3f1a8f5b0a | |
|
bb9e679970 | |
|
3f4ae44bae | |
|
daa192c42b | |
|
c47d7f7077 | |
|
d747e4cf7a | |
|
4753ad2eb4 | |
|
713b95d05b | |
|
1a51c1b1bb | |
|
9b0acfa1a2 | |
|
226a8316e2 | |
|
f49f2dae43 | |
|
ad386bd5df | |
|
9a5a469ad0 | |
|
7a1d0ae197 | |
|
a92c8b7753 | |
|
20ebde9b73 |
17
CHANGELOG.md
17
CHANGELOG.md
|
@ -1,20 +1,3 @@
|
|||
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
|
||||
========================
|
||||
* Added menu entry to force recording of models without changing the prio
|
||||
|
|
|
@ -22,6 +22,7 @@ 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
|
||||
|
||||

|
||||
|
|
|
@ -9,6 +9,7 @@ import ctbrec.Settings.ProxyType;
|
|||
import ctbrec.docs.DocServer;
|
||||
import ctbrec.recorder.Recorder;
|
||||
import ctbrec.sites.Site;
|
||||
import ctbrec.sites.chaturbate.Chaturbate;
|
||||
import ctbrec.ui.DesktopIntegration;
|
||||
import ctbrec.ui.SiteUI;
|
||||
import ctbrec.ui.SiteUiFactory;
|
||||
|
@ -16,6 +17,8 @@ import ctbrec.ui.controls.range.DiscreteRange;
|
|||
import ctbrec.ui.settings.api.*;
|
||||
import ctbrec.ui.sites.ConfigUI;
|
||||
import ctbrec.ui.tabs.TabSelectionListener;
|
||||
import ctbrec.ui.tabs.ThumbOverviewTab;
|
||||
import ctbrec.ui.sites.chaturbate.ChaturbateTabProvider;
|
||||
import javafx.animation.FadeTransition;
|
||||
import javafx.animation.PauseTransition;
|
||||
import javafx.animation.Transition;
|
||||
|
@ -30,13 +33,16 @@ import javafx.scene.control.Button;
|
|||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.Tab;
|
||||
import javafx.scene.control.TextInputDialog;
|
||||
import javafx.scene.control.TabPane;
|
||||
import javafx.scene.layout.*;
|
||||
import javafx.scene.paint.Color;
|
||||
import javafx.util.Duration;
|
||||
import javafx.scene.Parent;
|
||||
import lombok.Getter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
@ -70,6 +76,7 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
|||
private SimpleBooleanProperty determineResolution;
|
||||
private SimpleBooleanProperty chooseStreamQuality;
|
||||
private SimpleBooleanProperty confirmationDialogs;
|
||||
private SimpleBooleanProperty naCamsOnly;
|
||||
private SimpleBooleanProperty livePreviews;
|
||||
private SimpleBooleanProperty monitorClipboard;
|
||||
private SimpleListProperty<String> startTab;
|
||||
|
@ -207,6 +214,14 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
|||
onlineCheckSkipsPausedModels = new SimpleBooleanProperty(null, "onlineCheckSkipsPausedModels", settings.onlineCheckSkipsPausedModels);
|
||||
fastScrollSpeed = new SimpleBooleanProperty(null, "fastScrollSpeed", settings.fastScrollSpeed);
|
||||
confirmationDialogs = new SimpleBooleanProperty(null, "confirmationForDangerousActions", settings.confirmationForDangerousActions);
|
||||
naCamsOnly = new SimpleBooleanProperty(null, "filterNAcamsOnly", settings.filterNAcamsOnly);
|
||||
naCamsOnly.addListener((obs, oldValue, newValue) -> {
|
||||
settings.filterNAcamsOnly = newValue;
|
||||
Config.getInstance().getSettings().filterNAcamsOnly = newValue; // Ensure the config is updated
|
||||
saveConfig();
|
||||
refreshChaturbateTabs(); // Refresh tabs when the setting changes
|
||||
});
|
||||
|
||||
useHlsdl = new SimpleBooleanProperty(null, "useHlsdl", settings.useHlsdl);
|
||||
hlsdlExecutable = new SimpleFileProperty(null, "hlsdlExecutable", settings.hlsdlExecutable);
|
||||
recentlyWatched = new SimpleBooleanProperty(null, "recentlyWatched", settings.recentlyWatched);
|
||||
|
@ -230,6 +245,48 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
|||
httpClientMaxRequestsPerHost = new SimpleIntegerProperty(null, "httpClientMaxRequestsPerHost", settings.httpClientMaxRequestsPerHost);
|
||||
}
|
||||
|
||||
private void refreshChaturbateTabs() {
|
||||
System.out.println("Refreshing Chaturbate Tabs..."); // Debugging output
|
||||
|
||||
// Find the Chaturbate tab
|
||||
Tab chaturbateTab = null;
|
||||
for (Tab tab : getTabPane().getTabs()) {
|
||||
if (tab.getText().equalsIgnoreCase("Chaturbate")) {
|
||||
chaturbateTab = tab;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (chaturbateTab == null) {
|
||||
System.out.println("Chaturbate tab not found! Cannot refresh.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (chaturbateTab instanceof ThumbOverviewTab overviewTab) {
|
||||
overviewTab.getUpdateService().reset(); // Reset update service for new URLs
|
||||
}
|
||||
|
||||
// Get the tab container inside the Chaturbate tab
|
||||
if (chaturbateTab.getContent() instanceof Parent parent) {
|
||||
var chaturbateTabsContainer = parent.lookup(".tab-pane");
|
||||
if (chaturbateTabsContainer instanceof TabPane chaturbateTabPane) {
|
||||
// Remove all existing Chaturbate sub-tabs
|
||||
chaturbateTabPane.getTabs().clear();
|
||||
|
||||
// Get updated Chaturbate tabs and add them inside the Chaturbate section
|
||||
var newTabs = SiteUiFactory.getUi(new Chaturbate()).getTabProvider().getTabs(getTabPane().getScene());
|
||||
chaturbateTabPane.getTabs().addAll(newTabs);
|
||||
|
||||
System.out.println("Chaturbate tabs refreshed!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("Could not find the correct TabPane inside Chaturbate tab!");
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void createGui() {
|
||||
var postProcessingStepPanel = new PostProcessingStepPanel(config);
|
||||
var variablesHelpButton = createHelpButton("Variables", "http://localhost:5689/docs/PostProcessing.md#variables");
|
||||
|
@ -257,6 +314,7 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
|||
Setting.of("Start minimized", startMinimized, "Start the app minimized to the tray, automatically activates \"Minimize to tray\""),
|
||||
Setting.of("Add models from clipboard", monitorClipboard, "Monitor clipboard for model URLs and automatically add them to the recorder").needsRestart(),
|
||||
Setting.of("Show confirmation dialogs", confirmationDialogs, "Show confirmation dialogs for irreversible actions"),
|
||||
Setting.of("Show only North America Cams", naCamsOnly, "Show only North America Cams").needsRestart(),
|
||||
Setting.of("Recording tab per site", recordedModelsPerSite, "Add a Recording tab for each site").needsRestart(),
|
||||
Setting.of("Check for new versions at startup", checkForUpdates, "Search for updates every startup"),
|
||||
Setting.of("Start Tab", startTab)),
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package ctbrec.ui.sites.chaturbate;
|
||||
|
||||
import ctbrec.Config;
|
||||
import ctbrec.sites.chaturbate.Chaturbate;
|
||||
import ctbrec.ui.sites.AbstractTabProvider;
|
||||
import ctbrec.ui.tabs.PaginatedScheduledService;
|
||||
|
@ -14,32 +15,47 @@ public class ChaturbateTabProvider extends AbstractTabProvider {
|
|||
|
||||
private final String apiUrl;
|
||||
private final ChaturbateFollowedTab followedTab;
|
||||
private final boolean regionNAEnabled; // Store the setting
|
||||
|
||||
public ChaturbateTabProvider(Chaturbate chaturbate) {
|
||||
super(chaturbate);
|
||||
apiUrl = site.getBaseUrl() + "/api/ts";
|
||||
this.followedTab = new ChaturbateFollowedTab("Followed", apiUrl + "/roomlist/room-list/?enable_recommendations=false&follow=true", chaturbate);
|
||||
regionNAEnabled = Config.getInstance().isFilterNAcamsOnlyEnabled();
|
||||
this.followedTab = new ChaturbateFollowedTab("Followed", buildUrl("/roomlist/room-list/?enable_recommendations=false&follow=true"), chaturbate);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Tab> getSiteTabs(Scene scene) {
|
||||
List<Tab> tabs = new ArrayList<>();
|
||||
tabs.add(createTab("Featured", apiUrl + "/roomlist/room-list/?enable_recommendations=false"));
|
||||
tabs.add(createTab("Female", apiUrl + "/roomlist/room-list/?enable_recommendations=false&genders=f"));
|
||||
tabs.add(createTab("New Female", apiUrl + "/roomlist/room-list/?enable_recommendations=false&genders=f&new_cams=true"));
|
||||
tabs.add(createTab("Male", apiUrl + "/roomlist/room-list/?enable_recommendations=false&genders=m"));
|
||||
tabs.add(createTab("New Male", apiUrl + "/roomlist/room-list/?enable_recommendations=false&genders=m&new_cams=true"));
|
||||
tabs.add(createTab("Couples", apiUrl + "/roomlist/room-list/?enable_recommendations=false&genders=c"));
|
||||
tabs.add(createTab("Trans", apiUrl + "/roomlist/room-list/?enable_recommendations=false&genders=t"));
|
||||
tabs.add(createTab("Private", apiUrl + "/roomlist/room-list/?enable_recommendations=false&private=true"));
|
||||
tabs.add(createTab("Hidden", apiUrl + "/roomlist/room-list/?enable_recommendations=false&hidden=true"));
|
||||
tabs.add(createTab("Gaming", apiUrl + "/roomlist/room-list/?enable_recommendations=false&gaming=true"));
|
||||
tabs.add(createTab("Featured", buildUrl("/roomlist/room-list/?enable_recommendations=false")));
|
||||
tabs.add(createTab("Female", buildUrl("/roomlist/room-list/?enable_recommendations=false&genders=f")));
|
||||
tabs.add(createTab("New Female", buildUrl("/roomlist/room-list/?enable_recommendations=false&genders=f&new_cams=true")));
|
||||
tabs.add(createTab("Milf", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=milf")));
|
||||
tabs.add(createTab("Teen", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=teen")));
|
||||
tabs.add(createTab("Creampie", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=creampie")));
|
||||
tabs.add(createTab("BBW", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=bbw")));
|
||||
tabs.add(createTab("Chubby", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=chubby")));
|
||||
tabs.add(createTab("Pregnant", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=pregnant")));
|
||||
tabs.add(createTab("Male", buildUrl("/roomlist/room-list/?enable_recommendations=false&genders=m")));
|
||||
tabs.add(createTab("New Male", buildUrl("/roomlist/room-list/?enable_recommendations=false&genders=m&new_cams=true")));
|
||||
tabs.add(createTab("Couples", buildUrl("/roomlist/room-list/?enable_recommendations=false&genders=c")));
|
||||
tabs.add(createTab("Trans", buildUrl("/roomlist/room-list/?enable_recommendations=false&genders=t")));
|
||||
tabs.add(createTab("N.American Cams", buildUrl("/roomlist/room-list/?enable_recommendations=false®ions=NA")));
|
||||
tabs.add(createTab("6TPM private", buildUrl("/roomlist/room-list/?enable_recommendations=false&private_prices=6")));
|
||||
tabs.add(createTab("Private", buildUrl("/roomlist/room-list/?enable_recommendations=false&private=true")));
|
||||
tabs.add(createTab("Hidden", buildUrl("/roomlist/room-list/?enable_recommendations=false&hidden=true")));
|
||||
tabs.add(createTab("Gaming", buildUrl("/roomlist/room-list/?enable_recommendations=false&gaming=true")));
|
||||
|
||||
followedTab.setScene(scene);
|
||||
followedTab.setRecorder(recorder);
|
||||
followedTab.setImageAspectRatio(9.0 / 16.0);
|
||||
tabs.add(followedTab);
|
||||
|
||||
//tabs.add(createApiTab("Top Rated", buildUrl("/discover/carousels/top-rated/")));
|
||||
//tabs.add(createApiTab("Trending", buildUrl("/discover/carousels/trending/")));
|
||||
tabs.add(createApiTab("Top Rated", apiUrl + "/discover/carousels/top-rated/"));
|
||||
tabs.add(createApiTab("Trending", apiUrl + "/discover/carousels/trending/"));
|
||||
|
||||
return tabs;
|
||||
}
|
||||
|
||||
|
@ -64,4 +80,29 @@ public class ChaturbateTabProvider extends AbstractTabProvider {
|
|||
var updateService = new ChaturbateApiUpdateService(apiUrl, (Chaturbate) site);
|
||||
return createTab(title, updateService);
|
||||
}
|
||||
|
||||
private String buildUrl(String endpoint) {
|
||||
boolean filterNA = Config.getInstance().getSettings().filterNAcamsOnly; // Always check latest setting
|
||||
|
||||
// Do NOT modify "N.American Cams" - it should always have ®ions=NA
|
||||
if (endpoint.contains("®ions=NA")) {
|
||||
return apiUrl + endpoint; // Keep it unchanged
|
||||
}
|
||||
|
||||
// Ensure Top Rated & Trending use ? instead of &
|
||||
if (filterNA && endpoint.contains("discover/carousels")) {
|
||||
endpoint += "?regions=NA"; // Use ? instead of &
|
||||
}
|
||||
// For all other tabs (except N.American Cams), append ®ions=NA if enabled
|
||||
else if (filterNA) {
|
||||
endpoint += "®ions=NA";
|
||||
}
|
||||
|
||||
String url = apiUrl + endpoint;
|
||||
System.out.println("Building URL: " + url); // Debugging output
|
||||
return url;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -773,6 +773,9 @@ public class ThumbOverviewTab extends Tab implements TabSelectionListener {
|
|||
popoverTreeList.setRecorder(recorder);
|
||||
}
|
||||
|
||||
public PaginatedScheduledService getUpdateService() {
|
||||
return updateService;
|
||||
}
|
||||
@Override
|
||||
public void selected() {
|
||||
grid.getChildren().removeAll(noResultsFound, errorLabel);
|
||||
|
|
|
@ -162,6 +162,9 @@ public class Config {
|
|||
String json = new String(fileContent, UTF_8).trim();
|
||||
json = migrateJson(json);
|
||||
settings = Objects.requireNonNull(mapper.readValue(json, Settings.class));
|
||||
JSONObject jsonObject = new JSONObject(json);
|
||||
settings.filterNAcamsOnly = jsonObject.optBoolean("filterNAcamsOnly", false);
|
||||
|
||||
settings.httpTimeout = Math.max(settings.httpTimeout, 10_000);
|
||||
if (settings.recordingsDir.endsWith("/")) {
|
||||
settings.recordingsDir = settings.recordingsDir.substring(0, settings.recordingsDir.length() - 1);
|
||||
|
@ -257,11 +260,13 @@ public class Config {
|
|||
if (savingDisabled) {
|
||||
return;
|
||||
}
|
||||
String json = mapper.writeValueAsString(settings);
|
||||
JSONObject jsonObject = new JSONObject(mapper.writeValueAsString(settings));
|
||||
jsonObject.put("filterNAcamsOnly", settings.filterNAcamsOnly);
|
||||
String jsonString = jsonObject.toString();
|
||||
File configFile = new File(configDir, filename);
|
||||
log.debug("Saving config to {}", configFile.getAbsolutePath());
|
||||
Files.createDirectories(configDir.toPath());
|
||||
Files.writeString(configFile.toPath(), json, CREATE, WRITE, TRUNCATE_EXISTING);
|
||||
Files.writeString(configFile.toPath(), jsonString, CREATE, WRITE, TRUNCATE_EXISTING);
|
||||
}
|
||||
|
||||
public static boolean isServerMode() {
|
||||
|
@ -358,4 +363,8 @@ public class Config {
|
|||
List<String> ignored = Config.getInstance().getSettings().ignoredModels;
|
||||
return ignored.contains(model.getUrl());
|
||||
}
|
||||
|
||||
public boolean isFilterNAcamsOnlyEnabled() {
|
||||
return settings.filterNAcamsOnly;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -127,6 +127,7 @@ public class Settings {
|
|||
public String mfcPassword = "";
|
||||
public String mfcUsername = "";
|
||||
public boolean minimizeToTray = false;
|
||||
public boolean filterNAcamsOnly = false;
|
||||
@Deprecated
|
||||
public int minimumLengthInSeconds = 0;
|
||||
public long minimumSpaceLeftInBytes = 0;
|
||||
|
|
196
docs/index.html
196
docs/index.html
|
@ -1,16 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-6CHNT0DY87"></script>
|
||||
<script>
|
||||
<head>
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-129283922-1"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-6CHNT0DY87');
|
||||
</script>
|
||||
gtag('config', 'UA-129283922-1');
|
||||
</script>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
@ -25,8 +25,7 @@
|
|||
<!-- Custom fonts for this template -->
|
||||
<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=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 -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet" type="text/css">
|
||||
|
@ -36,19 +35,15 @@
|
|||
|
||||
<link rel="shortcut icon" href="img/favicon.png" type="image/x-icon" />
|
||||
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body id="page-top">
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg bg-secondary fixed-top text-uppercase" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="#page-top"><img
|
||||
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">
|
||||
<a class="navbar-brand js-scroll-trigger" href="#page-top"><img 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
|
||||
<i class="fa fa-bars"></i>
|
||||
</button>
|
||||
|
@ -68,8 +63,7 @@
|
|||
</li>
|
||||
<li class="nav-item mx-0 mx-lg-1">
|
||||
<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>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -85,9 +79,7 @@
|
|||
-->
|
||||
<h1 class="text-uppercase mb-0">CTB Recorder</h1>
|
||||
<hr class="star-light">
|
||||
<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>
|
||||
<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>
|
||||
</header>
|
||||
|
||||
|
@ -98,21 +90,17 @@
|
|||
<hr class="star-dark mb-5">
|
||||
<div class="row">
|
||||
<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 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>
|
||||
<script>
|
||||
let cnt = 10;
|
||||
|
||||
function downloadCounter(uri) {
|
||||
window.setTimeout(function () {
|
||||
if (cnt === 0) {
|
||||
window.setTimeout(function() {
|
||||
if(cnt === 0) {
|
||||
location.href = uri;
|
||||
} else {
|
||||
cnt--;
|
||||
|
@ -121,7 +109,6 @@
|
|||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
function downloadFile(uri) {
|
||||
cnt = 10;
|
||||
$('#download-counter').show();
|
||||
|
@ -131,22 +118,19 @@
|
|||
</script>
|
||||
<div class="row text-center">
|
||||
<div class="col">
|
||||
<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');">
|
||||
<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>
|
||||
Download for Windows!
|
||||
</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<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');">
|
||||
<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>
|
||||
Download for macOS!
|
||||
</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<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');">
|
||||
<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>
|
||||
Download for Linux!
|
||||
</a>
|
||||
|
@ -163,11 +147,8 @@
|
|||
<div class="col-lg-10 mx-auto text-center">
|
||||
<p id="download-counter" class="lead text-center" style="display:none"></p>
|
||||
<p class="lead">
|
||||
CTB Recorder is free and open source. (Originally created by 0xboobface). I'm a student and am helping with
|
||||
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!
|
||||
CTB Recorder is free and open source. (Originally created by 0xboobface). I'm a student and am helping with 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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -175,58 +156,37 @@
|
|||
<div class="col">
|
||||
<p class="lead">
|
||||
<a href="https://buymeacoffee.com/j62ctbrec" target="_blank">
|
||||
<img src="img/buymeacoffee-round.png" alt="Buy a coffee" style="height: 160px; margin: 20px" />
|
||||
</a><br />
|
||||
<img src="img/buymeacoffee-round.png" alt="Buy a coffee" style="height: 160px; margin: 20px"/>
|
||||
</a><br/>
|
||||
<input type="button" value="Buy a coffee"
|
||||
onclick="window.open('https://buymeacoffee.com/j62ctbrec','_blank')">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="col">
|
||||
<p class="lead">
|
||||
<a href="https://www.patreon.com/j62ctbrec" target="_blank">
|
||||
<img src="img/patreon-round.png" alt="Patreon" style="height: 160px; margin: 20px" />
|
||||
</a><br />
|
||||
<input type="button" value="Patreon" onclick="window.open('https://www.patreon.com/j62ctbrec','_blank')">
|
||||
<img src="img/patreon-round.png" alt="Patreon" style="height: 160px; margin: 20px"/>
|
||||
</a><br/>
|
||||
<input type="button" value="Patreon"
|
||||
onclick="window.open('https://www.patreon.com/j62ctbrec','_blank')">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<br/><br/>
|
||||
<div class="row text-center">
|
||||
<div class="col">
|
||||
<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!">
|
||||
<img src="img/token.png" alt="Buy Chaturbate tokens" />
|
||||
</a><br />
|
||||
<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"/>
|
||||
</a><br/>
|
||||
<input type="button" value="Buy tokens"
|
||||
onclick="window.open('https://chaturbate.com/in/?track=default&tour=LQps&campaign=97mhH&room=0xb00bface','_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!">
|
||||
</p>
|
||||
</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>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
<!-- Screenshots Grid Section -->
|
||||
|
@ -313,8 +273,7 @@
|
|||
<div class="card">
|
||||
<div class="card-header" id="headingTwo">
|
||||
<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?
|
||||
</button>
|
||||
</h5>
|
||||
|
@ -323,8 +282,8 @@
|
|||
<div class="card-body">
|
||||
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
|
||||
or mkv you can use a program like <a href="https://handbrake.fr/">Handbrake</a> or <a
|
||||
href="http://avidemux.sourceforge.net/">Avidemux</a>.
|
||||
or mkv you can use a program like <a
|
||||
href="https://handbrake.fr/">Handbrake</a> or <a href="http://avidemux.sourceforge.net/">Avidemux</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -333,27 +292,21 @@
|
|||
<div class="card">
|
||||
<div class="card-header" id="headingThree">
|
||||
<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?
|
||||
</button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-parent="#accordionExample">
|
||||
<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
|
||||
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 Linux it is <code>~/.config/ctbrec/server.json</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>.
|
||||
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".
|
||||
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
|
||||
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 Linux it is <code>~/.config/ctbrec/server.json</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>.
|
||||
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>
|
||||
|
@ -362,16 +315,14 @@
|
|||
<div class="card">
|
||||
<div class="card-header" id="headingFour">
|
||||
<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)?
|
||||
</button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseFour" class="collapse" aria-labelledby="headingFour" data-parent="#accordionExample">
|
||||
<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.
|
||||
</div>
|
||||
</div>
|
||||
|
@ -381,16 +332,14 @@
|
|||
<div class="card">
|
||||
<div class="card-header" id="headingFive">
|
||||
<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!
|
||||
</button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseFive" class="collapse" aria-labelledby="headingFive" data-parent="#accordionExample">
|
||||
<div class="card-body">
|
||||
Go to the project website and <a href="https://git.ctbrec.com/j62/ctbrec/issues">create a new
|
||||
Issue</a>.
|
||||
Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -399,16 +348,14 @@
|
|||
<div class="card">
|
||||
<div class="card-header" id="headingSix">
|
||||
<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!
|
||||
</button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseSix" class="collapse" aria-labelledby="headingSix" data-parent="#accordionExample">
|
||||
<div class="card-body">
|
||||
Go to the project website and <a href="https://git.ctbrec.com/j62/ctbrec/issues">create a new
|
||||
Issue</a>.
|
||||
Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -417,16 +364,14 @@
|
|||
<div class="card">
|
||||
<div class="card-header" id="headingSeven">
|
||||
<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?
|
||||
</button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseSeven" class="collapse" aria-labelledby="headingSeven" data-parent="#accordionExample">
|
||||
<div class="card-body">
|
||||
Go to the project website and <a href="https://git.ctbrec.com/j62/ctbrec/issues">create a new
|
||||
Issue</a>.
|
||||
Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -444,8 +389,7 @@
|
|||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto text-center">
|
||||
<p class="lead">
|
||||
CTB Recorder is free and open source. The source code is available on <a
|
||||
href="https://git.ctbrec.com/j62/ctbrec">CTBRec Gitea</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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -531,8 +475,7 @@
|
|||
<h2 class="text-secondary text-uppercase mb-0">Featured</h2>
|
||||
<hr class="star-dark mb-5">
|
||||
<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="#">
|
||||
<i class="fa fa-close"></i>
|
||||
Close</a>
|
||||
|
@ -554,8 +497,7 @@
|
|||
<h2 class="text-secondary text-uppercase mb-0">Recording</h2>
|
||||
<hr class="star-dark mb-5">
|
||||
<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="#">
|
||||
<i class="fa fa-close"></i>
|
||||
Close</a>
|
||||
|
@ -577,8 +519,7 @@
|
|||
<h2 class="text-secondary text-uppercase mb-0">Start a recording</h2>
|
||||
<hr class="star-dark mb-5">
|
||||
<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="#">
|
||||
<i class="fa fa-close"></i>
|
||||
Close</a>
|
||||
|
@ -622,8 +563,7 @@
|
|||
<h2 class="text-secondary text-uppercase mb-0">Settings</h2>
|
||||
<hr class="star-dark mb-5">
|
||||
<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="#">
|
||||
<i class="fa fa-close"></i>
|
||||
Close</a>
|
||||
|
@ -675,22 +615,16 @@
|
|||
<script>
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'https://git.ctbrec.com/api/v1/repos/j62/ctbrec/releases'
|
||||
}).done(function (releases) {
|
||||
url: 'https://api.github.com/repos/0xboobface/ctbrec/releases'
|
||||
}).done(function( releases ) {
|
||||
let latest = releases[0];
|
||||
let version = latest.tag_name;
|
||||
$('#download_windows').on('click', () => downloadFile(
|
||||
'https://git.ctbrec.com/j62/ctbrec/releases/download/' + version + '/ctbrec-' + version +
|
||||
'-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'));
|
||||
$('#download_windows').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/'+version+'/ctbrec-'+version+'-win64-jre.zip'));
|
||||
$('#download_macos').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/'+version+'/ctbrec-'+version+'-macos-jre.zip'));
|
||||
$('#download_linux').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/'+version+'/ctbrec-'+version+'-linux-jre.zip'));
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -23,6 +23,8 @@
|
|||
<jackson.version>2.15.1</jackson.version>
|
||||
<org.mapstruct.version>1.5.3.Final</org.mapstruct.version>
|
||||
<lombok.version>1.18.30</lombok.version>
|
||||
<lombok.version>1.18.30</lombok.version>
|
||||
<buildNumber>SNAPSHOT</buildNumber> <!-- Default value if none is provided -->
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
|
@ -44,6 +46,27 @@
|
|||
<redirectTestOutputToFile>true</redirectTestOutputToFile>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>buildnumber-maven-plugin</artifactId>
|
||||
<version>1.4</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>create</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<doCheck>true</doCheck>
|
||||
<doUpdate>false</doUpdate>
|
||||
<providerImplementations>
|
||||
<svn>javasvn</svn>
|
||||
<git>jgit</git>
|
||||
</providerImplementations>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
<plugins>
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": "."
|
||||
}
|
||||
],
|
||||
"settings": {}
|
||||
}
|
Loading…
Reference in New Issue