test na only filter
This commit is contained in:
parent
daa192c42b
commit
3f4ae44bae
|
@ -70,6 +70,7 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
private SimpleBooleanProperty determineResolution;
|
private SimpleBooleanProperty determineResolution;
|
||||||
private SimpleBooleanProperty chooseStreamQuality;
|
private SimpleBooleanProperty chooseStreamQuality;
|
||||||
private SimpleBooleanProperty confirmationDialogs;
|
private SimpleBooleanProperty confirmationDialogs;
|
||||||
|
private SimpleBooleanProperty naCamsOnly;
|
||||||
private SimpleBooleanProperty livePreviews;
|
private SimpleBooleanProperty livePreviews;
|
||||||
private SimpleBooleanProperty monitorClipboard;
|
private SimpleBooleanProperty monitorClipboard;
|
||||||
private SimpleListProperty<String> startTab;
|
private SimpleListProperty<String> startTab;
|
||||||
|
@ -152,7 +153,7 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
private void initializeProperties() {
|
private void initializeProperties() {
|
||||||
flaresolverrApiUrl = new SimpleStringProperty(null, "flaresolverr.apiUrl", settings.flaresolverr.apiUrl);
|
flaresolverrApiUrl = new SimpleStringProperty(null, "flaresolverr.apiUrl", settings.flaresolverr.apiUrl);
|
||||||
flaresolverrTimeoutInMillis = new SimpleIntegerProperty(null, "flaresolverr.timeoutInMillis", settings.flaresolverr.timeoutInMillis);
|
flaresolverrTimeoutInMillis = new SimpleIntegerProperty(null, "flaresolverr.timeoutInMillis", settings.flaresolverr.timeoutInMillis);
|
||||||
flaresolverrUseForDomains = new SimpleJoinedStringListProperty(null, "flaresolverr.useForDomains", "\n",
|
flaresolverrUseForDomains = new SimpleJoinedStringListProperty(null, "flaresolverr.useForDomains", "\n",
|
||||||
FXCollections.observableList(settings.flaresolverr.useForDomains));
|
FXCollections.observableList(settings.flaresolverr.useForDomains));
|
||||||
httpUserAgent = new SimpleStringProperty(null, "httpUserAgent", settings.httpUserAgent);
|
httpUserAgent = new SimpleStringProperty(null, "httpUserAgent", settings.httpUserAgent);
|
||||||
httpUserAgentMobile = new SimpleStringProperty(null, "httpUserAgentMobile", settings.httpUserAgentMobile);
|
httpUserAgentMobile = new SimpleStringProperty(null, "httpUserAgentMobile", settings.httpUserAgentMobile);
|
||||||
|
@ -207,6 +208,8 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
onlineCheckSkipsPausedModels = new SimpleBooleanProperty(null, "onlineCheckSkipsPausedModels", settings.onlineCheckSkipsPausedModels);
|
onlineCheckSkipsPausedModels = new SimpleBooleanProperty(null, "onlineCheckSkipsPausedModels", settings.onlineCheckSkipsPausedModels);
|
||||||
fastScrollSpeed = new SimpleBooleanProperty(null, "fastScrollSpeed", settings.fastScrollSpeed);
|
fastScrollSpeed = new SimpleBooleanProperty(null, "fastScrollSpeed", settings.fastScrollSpeed);
|
||||||
confirmationDialogs = new SimpleBooleanProperty(null, "confirmationForDangerousActions", settings.confirmationForDangerousActions);
|
confirmationDialogs = new SimpleBooleanProperty(null, "confirmationForDangerousActions", settings.confirmationForDangerousActions);
|
||||||
|
naCamsOnly = new SimpleBooleanProperty(null, "filterNAcamsOnly", settings.filterNAcamsOnly != null ? settings.filterNAcamsOnly : false);
|
||||||
|
naCamsOnly.addListener((obs, oldValue, newValue) -> { settings.filterNAcamsOnly = newValue; saveConfig();});
|
||||||
useHlsdl = new SimpleBooleanProperty(null, "useHlsdl", settings.useHlsdl);
|
useHlsdl = new SimpleBooleanProperty(null, "useHlsdl", settings.useHlsdl);
|
||||||
hlsdlExecutable = new SimpleFileProperty(null, "hlsdlExecutable", settings.hlsdlExecutable);
|
hlsdlExecutable = new SimpleFileProperty(null, "hlsdlExecutable", settings.hlsdlExecutable);
|
||||||
recentlyWatched = new SimpleBooleanProperty(null, "recentlyWatched", settings.recentlyWatched);
|
recentlyWatched = new SimpleBooleanProperty(null, "recentlyWatched", settings.recentlyWatched);
|
||||||
|
@ -257,6 +260,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("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("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 confirmation dialogs", confirmationDialogs, "Show confirmation dialogs for irreversible actions"),
|
||||||
|
Setting.of("Show only North America Cams", naCamsOnly, "Show only North America Cams"),
|
||||||
Setting.of("Recording tab per site", recordedModelsPerSite, "Add a Recording tab for each site").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("Check for new versions at startup", checkForUpdates, "Search for updates every startup"),
|
||||||
Setting.of("Start Tab", startTab)),
|
Setting.of("Start Tab", startTab)),
|
||||||
|
@ -272,7 +276,7 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
Setting.of("Browser", browserOverride),
|
Setting.of("Browser", browserOverride),
|
||||||
Setting.of("Start parameters", browserParams),
|
Setting.of("Start parameters", browserParams),
|
||||||
Setting.of("Force use (ignore default browser)", forceBrowserOverride, "Default behaviour will fallback to OS default if the above browser fails")),
|
Setting.of("Force use (ignore default browser)", forceBrowserOverride, "Default behaviour will fallback to OS default if the above browser fails")),
|
||||||
|
|
||||||
Group.of("Flaresolverr",
|
Group.of("Flaresolverr",
|
||||||
Setting.of("API URL", flaresolverrApiUrl),
|
Setting.of("API URL", flaresolverrApiUrl),
|
||||||
Setting.of("Request timeout", flaresolverrTimeoutInMillis),
|
Setting.of("Request timeout", flaresolverrTimeoutInMillis),
|
||||||
|
@ -343,11 +347,11 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
Category.of("Advanced / Devtools",
|
Category.of("Advanced / Devtools",
|
||||||
Group.of("Networking",
|
Group.of("Networking",
|
||||||
Setting.of("Playlist request timeout (ms)", playlistRequestTimeout, "Timeout in ms for playlist requests"),
|
Setting.of("Playlist request timeout (ms)", playlistRequestTimeout, "Timeout in ms for playlist requests"),
|
||||||
Setting.of("Max requests", httpClientMaxRequests,
|
Setting.of("Max requests", httpClientMaxRequests,
|
||||||
"The maximum number of requests to execute concurrently. Above this requests queue in memory,\n" + //
|
"The maximum number of requests to execute concurrently. Above this requests queue in memory,\n" + //
|
||||||
"waiting for the running calls to complete.\n\n" + //
|
"waiting for the running calls to complete.\n\n" + //
|
||||||
"If more than [maxRequests] requests are in flight when this is invoked, those requests will remain in flight."),
|
"If more than [maxRequests] requests are in flight when this is invoked, those requests will remain in flight."),
|
||||||
Setting.of("Max requests per host", httpClientMaxRequestsPerHost,
|
Setting.of("Max requests per host", httpClientMaxRequestsPerHost,
|
||||||
"The maximum number of requests for each host to execute concurrently. This limits requests by\n" + //
|
"The maximum number of requests for each host to execute concurrently. This limits requests by\n" + //
|
||||||
"the URL's host name. Note that concurrent requests to a single IP address may still exceed this\n" + //
|
"the URL's host name. Note that concurrent requests to a single IP address may still exceed this\n" + //
|
||||||
"limit: multiple hostnames may share an IP address or be routed through the same HTTP proxy.\n\n" + //
|
"limit: multiple hostnames may share an IP address or be routed through the same HTTP proxy.\n\n" + //
|
||||||
|
@ -363,7 +367,7 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
Setting.of("hlsdl executable", hlsdlExecutable, "Path to the hlsdl executable"),
|
Setting.of("hlsdl executable", hlsdlExecutable, "Path to the hlsdl executable"),
|
||||||
Setting.of("Log hlsdl output", loghlsdlOutput, "Log hlsdl output to files in the system's temp directory")),
|
Setting.of("Log hlsdl output", loghlsdlOutput, "Log hlsdl output to files in the system's temp directory")),
|
||||||
Group.of("Miscelaneous",
|
Group.of("Miscelaneous",
|
||||||
Setting.of("Config file saving delay (ms)", configSavingDelayMs,
|
Setting.of("Config file saving delay (ms)", configSavingDelayMs,
|
||||||
"Wait specified number of milliseconds before actually writing config to disk"))));
|
"Wait specified number of milliseconds before actually writing config to disk"))));
|
||||||
Region preferencesView = prefs.getView();
|
Region preferencesView = prefs.getView();
|
||||||
prefs.onRestartRequired(this::showRestartRequired);
|
prefs.onRestartRequired(this::showRestartRequired);
|
||||||
|
@ -667,7 +671,7 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
|
|
||||||
private static final String DATE_FORMATTER_TOOLTIP = """
|
private static final String DATE_FORMATTER_TOOLTIP = """
|
||||||
Leave empty for system default
|
Leave empty for system default
|
||||||
|
|
||||||
Symbol Meaning Presentation Examples
|
Symbol Meaning Presentation Examples
|
||||||
------ ------- ------------ -------
|
------ ------- ------------ -------
|
||||||
G era text AD; Anno Domini; A
|
G era text AD; Anno Domini; A
|
||||||
|
@ -676,7 +680,7 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
D day-of-year number 189
|
D day-of-year number 189
|
||||||
M/L month-of-year number/text 7; 07; Jul; July; J
|
M/L month-of-year number/text 7; 07; Jul; July; J
|
||||||
d day-of-month number 10
|
d day-of-month number 10
|
||||||
|
|
||||||
Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter
|
Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter
|
||||||
Y week-based-year year 1996; 96
|
Y week-based-year year 1996; 96
|
||||||
w week-of-week-based-year number 27
|
w week-of-week-based-year number 27
|
||||||
|
@ -684,12 +688,12 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
E day-of-week text Tue; Tuesday; T
|
E day-of-week text Tue; Tuesday; T
|
||||||
e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T
|
e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T
|
||||||
F week-of-month number 3
|
F week-of-month number 3
|
||||||
|
|
||||||
a am-pm-of-day text PM
|
a am-pm-of-day text PM
|
||||||
h clock-hour-of-am-pm (1-12) number 12
|
h clock-hour-of-am-pm (1-12) number 12
|
||||||
K hour-of-am-pm (0-11) number 0
|
K hour-of-am-pm (0-11) number 0
|
||||||
k clock-hour-of-am-pm (1-24) number 0
|
k clock-hour-of-am-pm (1-24) number 0
|
||||||
|
|
||||||
H hour-of-day (0-23) number 0
|
H hour-of-day (0-23) number 0
|
||||||
m minute-of-hour number 30
|
m minute-of-hour number 30
|
||||||
s second-of-minute number 55
|
s second-of-minute number 55
|
||||||
|
@ -697,16 +701,16 @@ public class SettingsTab extends Tab implements TabSelectionListener {
|
||||||
A milli-of-day number 1234
|
A milli-of-day number 1234
|
||||||
n nano-of-second number 987654321
|
n nano-of-second number 987654321
|
||||||
N nano-of-day number 1234000000
|
N nano-of-day number 1234000000
|
||||||
|
|
||||||
V time-zone ID zone-id America/Los_Angeles; Z; -08:30
|
V time-zone ID zone-id America/Los_Angeles; Z; -08:30
|
||||||
z time-zone name zone-name Pacific Standard Time; PST
|
z time-zone name zone-name Pacific Standard Time; PST
|
||||||
O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00;
|
O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00;
|
||||||
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15;
|
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15;
|
||||||
x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15;
|
x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15;
|
||||||
Z zone-offset offset-Z +0000; -0800; -08:00;
|
Z zone-offset offset-Z +0000; -0800; -08:00;
|
||||||
|
|
||||||
p pad next pad modifier 1
|
p pad next pad modifier 1
|
||||||
|
|
||||||
' escape for text delimiter
|
' escape for text delimiter
|
||||||
'' single quote literal '
|
'' single quote literal '
|
||||||
[ optional section start
|
[ optional section start
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package ctbrec.ui.sites.chaturbate;
|
package ctbrec.ui.sites.chaturbate;
|
||||||
|
|
||||||
|
import ctbrec.Config;
|
||||||
import ctbrec.sites.chaturbate.Chaturbate;
|
import ctbrec.sites.chaturbate.Chaturbate;
|
||||||
import ctbrec.ui.sites.AbstractTabProvider;
|
import ctbrec.ui.sites.AbstractTabProvider;
|
||||||
import ctbrec.ui.tabs.PaginatedScheduledService;
|
import ctbrec.ui.tabs.PaginatedScheduledService;
|
||||||
|
@ -14,40 +15,45 @@ public class ChaturbateTabProvider extends AbstractTabProvider {
|
||||||
|
|
||||||
private final String apiUrl;
|
private final String apiUrl;
|
||||||
private final ChaturbateFollowedTab followedTab;
|
private final ChaturbateFollowedTab followedTab;
|
||||||
|
private final boolean regionNAEnabled; // Store the setting
|
||||||
|
|
||||||
public ChaturbateTabProvider(Chaturbate chaturbate) {
|
public ChaturbateTabProvider(Chaturbate chaturbate) {
|
||||||
super(chaturbate);
|
super(chaturbate);
|
||||||
apiUrl = site.getBaseUrl() + "/api/ts";
|
apiUrl = site.getBaseUrl() + "/api/ts";
|
||||||
this.followedTab = new ChaturbateFollowedTab("Followed", apiUrl + "/roomlist/room-list/?enable_recommendations=false&follow=true", chaturbate);
|
regionNAEnabled = Config.getInstance().getSettings().filterNAcamsOnly; // Load setting from Config
|
||||||
|
this.followedTab = new ChaturbateFollowedTab("Followed", buildUrl("/roomlist/room-list/?enable_recommendations=false&follow=true"), chaturbate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<Tab> getSiteTabs(Scene scene) {
|
protected List<Tab> getSiteTabs(Scene scene) {
|
||||||
List<Tab> tabs = new ArrayList<>();
|
List<Tab> tabs = new ArrayList<>();
|
||||||
tabs.add(createTab("Featured", apiUrl + "/roomlist/room-list/?enable_recommendations=false"));
|
tabs.add(createTab("Featured", buildUrl("/roomlist/room-list/?enable_recommendations=false")));
|
||||||
tabs.add(createTab("Female", apiUrl + "/roomlist/room-list/?enable_recommendations=false&genders=f"));
|
tabs.add(createTab("Female", buildUrl("/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("New Female", buildUrl("/roomlist/room-list/?enable_recommendations=false&genders=f&new_cams=true")));
|
||||||
tabs.add(createTab("Milf", apiUrl + "/roomlist/room-list/?enable_recommendations=false&hashtags=milf"));
|
tabs.add(createTab("Milf", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=milf")));
|
||||||
tabs.add(createTab("Teen", apiUrl + "/roomlist/room-list/?enable_recommendations=false&hashtags=teen"));
|
tabs.add(createTab("Teen", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=teen")));
|
||||||
tabs.add(createTab("Creampie", apiUrl + "/roomlist/room-list/?enable_recommendations=false&hashtags=creampie"));
|
tabs.add(createTab("Creampie", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=creampie")));
|
||||||
tabs.add(createTab("BBW", apiUrl + "/roomlist/room-list/?enable_recommendations=false&hashtags=bbw"));
|
tabs.add(createTab("BBW", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=bbw")));
|
||||||
tabs.add(createTab("Chubby", apiUrl + "/roomlist/room-list/?enable_recommendations=false&hashtags=chubby"));
|
tabs.add(createTab("Chubby", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=chubby")));
|
||||||
tabs.add(createTab("Pregnant", apiUrl + "/roomlist/room-list/?enable_recommendations=false&hashtags=pregnant"));
|
tabs.add(createTab("Pregnant", buildUrl("/roomlist/room-list/?enable_recommendations=false&hashtags=pregnant")));
|
||||||
tabs.add(createTab("Male", apiUrl + "/roomlist/room-list/?enable_recommendations=false&genders=m"));
|
tabs.add(createTab("Male", buildUrl("/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("New Male", buildUrl("/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("Couples", buildUrl("/roomlist/room-list/?enable_recommendations=false&genders=c")));
|
||||||
tabs.add(createTab("Trans", apiUrl + "/roomlist/room-list/?enable_recommendations=false&genders=t"));
|
tabs.add(createTab("Trans", buildUrl("/roomlist/room-list/?enable_recommendations=false&genders=t")));
|
||||||
tabs.add(createTab("N.American Cams", apiUrl + "/roomlist/room-list/?enable_recommendations=false®ions=NA"));
|
tabs.add(createTab("N.American Cams", buildUrl("/roomlist/room-list/?enable_recommendations=false®ions=NA")));
|
||||||
tabs.add(createTab("6TPM private", apiUrl + "/roomlist/room-list/?enable_recommendations=false&private_prices=6"));
|
tabs.add(createTab("6TPM private", buildUrl("/roomlist/room-list/?enable_recommendations=false&private_prices=6")));
|
||||||
tabs.add(createTab("Private", apiUrl + "/roomlist/room-list/?enable_recommendations=false&private=true"));
|
tabs.add(createTab("Private", buildUrl("/roomlist/room-list/?enable_recommendations=false&private=true")));
|
||||||
tabs.add(createTab("Hidden", apiUrl + "/roomlist/room-list/?enable_recommendations=false&hidden=true"));
|
tabs.add(createTab("Hidden", buildUrl("/roomlist/room-list/?enable_recommendations=false&hidden=true")));
|
||||||
tabs.add(createTab("Gaming", apiUrl + "/roomlist/room-list/?enable_recommendations=false&gaming=true"));
|
tabs.add(createTab("Gaming", buildUrl("/roomlist/room-list/?enable_recommendations=false&gaming=true")));
|
||||||
|
|
||||||
followedTab.setScene(scene);
|
followedTab.setScene(scene);
|
||||||
followedTab.setRecorder(recorder);
|
followedTab.setRecorder(recorder);
|
||||||
followedTab.setImageAspectRatio(9.0 / 16.0);
|
followedTab.setImageAspectRatio(9.0 / 16.0);
|
||||||
tabs.add(followedTab);
|
tabs.add(followedTab);
|
||||||
tabs.add(createApiTab("Top Rated", apiUrl + "/discover/carousels/top-rated/"));
|
|
||||||
tabs.add(createApiTab("Trending", apiUrl + "/discover/carousels/trending/"));
|
tabs.add(createApiTab("Top Rated", buildUrl("/discover/carousels/top-rated/")));
|
||||||
|
tabs.add(createApiTab("Trending", buildUrl("/discover/carousels/trending/")));
|
||||||
|
|
||||||
return tabs;
|
return tabs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,4 +78,9 @@ public class ChaturbateTabProvider extends AbstractTabProvider {
|
||||||
var updateService = new ChaturbateApiUpdateService(apiUrl, (Chaturbate) site);
|
var updateService = new ChaturbateApiUpdateService(apiUrl, (Chaturbate) site);
|
||||||
return createTab(title, updateService);
|
return createTab(title, updateService);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// Helper function to append region filter if enabled
|
||||||
|
private String buildUrl(String endpoint) {
|
||||||
|
return apiUrl + endpoint + (regionNAEnabled ? "®ion=NA" : "");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue