From 5f517682b90810e7f11d466bd8917feb0cf93595 Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Sat, 4 Dec 2021 15:46:08 +0100 Subject: [PATCH] Add Recording tabs to the side tabs of each site --- .../ctbrec/ui/sites/AbstractTabProvider.java | 36 ++++++++++++++ .../sites/amateurtv/AmateurTvTabProvider.java | 35 ++++++------- .../ui/sites/bonga/BongaCamsTabProvider.java | 34 ++++++------- .../ctbrec/ui/sites/cam4/Cam4TabProvider.java | 34 ++++++------- .../ui/sites/camsoda/CamsodaTabProvider.java | 28 +++++------ .../chaturbate/ChaturbateTabProvider.java | 36 ++++++-------- .../sites/cherrytv/CherryTvTabProvider.java | 16 +++--- .../ui/sites/fc2live/Fc2TabProvider.java | 25 +++++----- .../flirt4free/Flirt4FreeTabProvider.java | 33 ++++++------- .../sites/jasmin/LiveJasminTabProvider.java | 34 ++++++------- .../ui/sites/manyvids/MVLiveTabProvider.java | 21 ++++---- .../myfreecams/MyFreeCamsTabProvider.java | 25 +++++----- .../SecretFriendsTabProvider.java | 38 ++++---------- .../ui/sites/showup/ShowupTabProvider.java | 18 +++---- .../sites/streamate/StreamateTabProvider.java | 42 +++++++--------- .../sites/stripchat/StripchatTabProvider.java | 36 ++++++-------- .../sites/xlovecam/XloveCamTabProvider.java | 49 +++++++++---------- 17 files changed, 254 insertions(+), 286 deletions(-) create mode 100644 client/src/main/java/ctbrec/ui/sites/AbstractTabProvider.java diff --git a/client/src/main/java/ctbrec/ui/sites/AbstractTabProvider.java b/client/src/main/java/ctbrec/ui/sites/AbstractTabProvider.java new file mode 100644 index 00000000..d269a4ef --- /dev/null +++ b/client/src/main/java/ctbrec/ui/sites/AbstractTabProvider.java @@ -0,0 +1,36 @@ +package ctbrec.ui.sites; + +import ctbrec.recorder.Recorder; +import ctbrec.sites.Site; +import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.tabs.recorded.RecordedModelsPerSiteTab; +import javafx.scene.Scene; +import javafx.scene.control.Tab; + +import java.util.List; + +public abstract class AbstractTabProvider implements TabProvider { + + protected Recorder recorder; + protected Site site; + + protected AbstractTabProvider(Site site) { + this.site = site; + this.recorder = site.getRecorder(); + } + + @Override + public List getTabs(Scene scene) { + var tabs = getSiteTabs(scene); + var recordingTab = new RecordedModelsPerSiteTab("Recording", recorder, site); + tabs.add(recordingTab); + return tabs; + } + + protected abstract List getSiteTabs(Scene scene); + + @Override + public Tab getFollowedTab() { + return null; + } +} diff --git a/client/src/main/java/ctbrec/ui/sites/amateurtv/AmateurTvTabProvider.java b/client/src/main/java/ctbrec/ui/sites/amateurtv/AmateurTvTabProvider.java index f906cc5e..1047cf9a 100644 --- a/client/src/main/java/ctbrec/ui/sites/amateurtv/AmateurTvTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/amateurtv/AmateurTvTabProvider.java @@ -1,61 +1,58 @@ package ctbrec.ui.sites.amateurtv; -import java.util.ArrayList; -import java.util.List; - -import ctbrec.recorder.Recorder; import ctbrec.sites.amateurtv.AmateurTv; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.PaginatedScheduledService; -import ctbrec.ui.tabs.TabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; -public class AmateurTvTabProvider implements TabProvider { +import java.util.ArrayList; +import java.util.List; + +public class AmateurTvTabProvider extends AbstractTabProvider { + - private AmateurTv amateurTv; - private Recorder recorder; private AmateurTvFollowedTab followedTab; public AmateurTvTabProvider(AmateurTv amateurTv) { - this.amateurTv = amateurTv; - this.recorder = amateurTv.getRecorder(); + super(amateurTv); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); // all var url = AmateurTv.baseUrl + "/v3/readmodel/cache/cams/A"; - var updateService = new AmateurTvUpdateService(amateurTv, url); + var updateService = new AmateurTvUpdateService((AmateurTv) site, url); tabs.add(createTab("All", updateService)); // female url = AmateurTv.baseUrl + "/v3/readmodel/cache/cams/W"; - updateService = new AmateurTvUpdateService(amateurTv, url); + updateService = new AmateurTvUpdateService((AmateurTv) site, url); tabs.add(createTab("Female", updateService)); // male url = AmateurTv.baseUrl + "/v3/readmodel/cache/cams/M"; - updateService = new AmateurTvUpdateService(amateurTv, url); + updateService = new AmateurTvUpdateService((AmateurTv) site, url); tabs.add(createTab("Male", updateService)); // couples url = AmateurTv.baseUrl + "/v3/readmodel/cache/cams/C"; - updateService = new AmateurTvUpdateService(amateurTv, url); + updateService = new AmateurTvUpdateService((AmateurTv) site, url); tabs.add(createTab("Couples", updateService)); // trans url = AmateurTv.baseUrl + "/v3/readmodel/cache/cams/T"; - updateService = new AmateurTvUpdateService(amateurTv, url); + updateService = new AmateurTvUpdateService((AmateurTv) site, url); tabs.add(createTab("Trans", updateService)); // followed url = AmateurTv.baseUrl + "/v3/readmodel/cache/cams/F"; - updateService = new AmateurTvUpdateService(amateurTv, url); + updateService = new AmateurTvUpdateService((AmateurTv) site, url); updateService.requiresLogin(true); - followedTab = new AmateurTvFollowedTab("Followed", updateService, amateurTv); + followedTab = new AmateurTvFollowedTab("Followed", updateService, site); followedTab.setRecorder(recorder); tabs.add(followedTab); @@ -63,7 +60,7 @@ public class AmateurTvTabProvider implements TabProvider { } private Tab createTab(String title, PaginatedScheduledService updateService) { - var tab = new ThumbOverviewTab(title, updateService, amateurTv); + var tab = new ThumbOverviewTab(title, updateService, site); tab.setRecorder(recorder); return tab; } diff --git a/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsTabProvider.java b/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsTabProvider.java index 82ad5f18..7589ed06 100644 --- a/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsTabProvider.java @@ -1,60 +1,56 @@ package ctbrec.ui.sites.bonga; -import java.util.ArrayList; -import java.util.List; - -import ctbrec.recorder.Recorder; import ctbrec.sites.bonga.BongaCams; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.PaginatedScheduledService; -import ctbrec.ui.tabs.TabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; -public class BongaCamsTabProvider implements TabProvider { +import java.util.ArrayList; +import java.util.List; + +public class BongaCamsTabProvider extends AbstractTabProvider { - private BongaCams bongaCams; - private Recorder recorder; private BongaCamsFriendsTab friendsTab; public BongaCamsTabProvider(BongaCams bongaCams) { - this.bongaCams = bongaCams; - this.recorder = bongaCams.getRecorder(); + super(bongaCams); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); // female String url = BongaCams.baseUrl + "/tools/listing_v3.php?livetab=female&online_only=true&is_mobile=true&offset="; - var updateService = new BongaCamsUpdateService(bongaCams, url); + var updateService = new BongaCamsUpdateService((BongaCams) site, url); tabs.add(createTab("Female", updateService)); // male url = BongaCams.baseUrl + "/tools/listing_v3.php?livetab=male&online_only=true&is_mobile=true&offset="; - updateService = new BongaCamsUpdateService(bongaCams, url); + updateService = new BongaCamsUpdateService((BongaCams) site, url); tabs.add(createTab("Male", updateService)); // couples url = BongaCams.baseUrl + "/tools/listing_v3.php?livetab=couples&online_only=true&is_mobile=true&offset="; - updateService = new BongaCamsUpdateService(bongaCams, url); + updateService = new BongaCamsUpdateService((BongaCams) site, url); tabs.add(createTab("Couples", updateService)); // trans url = BongaCams.baseUrl + "/tools/listing_v3.php?livetab=transsexual&online_only=true&is_mobile=true&offset="; - updateService = new BongaCamsUpdateService(bongaCams, url); + updateService = new BongaCamsUpdateService((BongaCams) site, url); tabs.add(createTab("Transsexual", updateService)); // new url = BongaCams.baseUrl + "/tools/listing_v3.php?livetab=new&online_only=true&is_mobile=true&offset="; - updateService = new BongaCamsUpdateService(bongaCams, url); + updateService = new BongaCamsUpdateService((BongaCams) site, url); tabs.add(createTab("New", updateService)); // friends url = BongaCams.baseUrl + "/tools/listing_v3.php?livetab=friends&online_only=true&offset="; - updateService = new BongaCamsUpdateService(bongaCams, url, true); - friendsTab = new BongaCamsFriendsTab("Friends", updateService, bongaCams); + updateService = new BongaCamsUpdateService((BongaCams) site, url, true); + friendsTab = new BongaCamsFriendsTab("Friends", updateService, site); friendsTab.setRecorder(recorder); tabs.add(friendsTab); @@ -67,7 +63,7 @@ public class BongaCamsTabProvider implements TabProvider { } private Tab createTab(String title, PaginatedScheduledService updateService) { - var tab = new ThumbOverviewTab(title, updateService, bongaCams); + var tab = new ThumbOverviewTab(title, updateService, site); tab.setRecorder(recorder); return tab; } diff --git a/client/src/main/java/ctbrec/ui/sites/cam4/Cam4TabProvider.java b/client/src/main/java/ctbrec/ui/sites/cam4/Cam4TabProvider.java index 059e8e95..7cf467e6 100644 --- a/client/src/main/java/ctbrec/ui/sites/cam4/Cam4TabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/cam4/Cam4TabProvider.java @@ -1,37 +1,33 @@ package ctbrec.ui.sites.cam4; -import java.util.ArrayList; -import java.util.List; - -import ctbrec.recorder.Recorder; import ctbrec.sites.cam4.Cam4; -import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; -public class Cam4TabProvider implements TabProvider { +import java.util.ArrayList; +import java.util.List; + +public class Cam4TabProvider extends AbstractTabProvider { - private Cam4 cam4; - private Recorder recorder; private Cam4FollowedTab followed; public Cam4TabProvider(Cam4 cam4) { - this.cam4 = cam4; - this.recorder = cam4.getRecorder(); + super(cam4); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); - tabs.add(createTab("Female", cam4.getBaseUrl() + "/directoryResults?online=true&gender=female&orderBy=MOST_VIEWERS")); - tabs.add(createTab("Male", cam4.getBaseUrl() + "/directoryResults?online=true&gender=male&orderBy=MOST_VIEWERS")); - tabs.add(createTab("Couples", cam4.getBaseUrl() + "/directoryResults?online=true&broadcastType=male_group&broadcastType=female_group&broadcastType=male_female_group&orderBy=MOST_VIEWERS")); - tabs.add(createTab("HD", cam4.getBaseUrl() + "/directoryResults?online=true&hd=true&orderBy=MOST_VIEWERS")); - tabs.add(createTab("New", cam4.getBaseUrl() + "/directoryResults?online=true&gender=female&orderBy=MOST_VIEWERS&newPerformer=true")); + tabs.add(createTab("Female", site.getBaseUrl() + "/directoryResults?online=true&gender=female&orderBy=MOST_VIEWERS")); + tabs.add(createTab("Male", site.getBaseUrl() + "/directoryResults?online=true&gender=male&orderBy=MOST_VIEWERS")); + tabs.add(createTab("Couples", site.getBaseUrl() + "/directoryResults?online=true&broadcastType=male_group&broadcastType=female_group&broadcastType=male_female_group&orderBy=MOST_VIEWERS")); + tabs.add(createTab("HD", site.getBaseUrl() + "/directoryResults?online=true&hd=true&orderBy=MOST_VIEWERS")); + tabs.add(createTab("New", site.getBaseUrl() + "/directoryResults?online=true&gender=female&orderBy=MOST_VIEWERS&newPerformer=true")); - followed = new Cam4FollowedTab(cam4); + followed = new Cam4FollowedTab((Cam4) site); followed.setRecorder(recorder); tabs.add(followed); @@ -44,8 +40,8 @@ public class Cam4TabProvider implements TabProvider { } private Tab createTab(String name, String url) { - var updateService = new Cam4UpdateService(url, false, cam4); - var tab = new ThumbOverviewTab(name, updateService, cam4); + var updateService = new Cam4UpdateService(url, false, (Cam4) site); + var tab = new ThumbOverviewTab(name, updateService, site); tab.setRecorder(recorder); return tab; } diff --git a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java index 57573c8d..5a8c00e0 100644 --- a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java @@ -1,35 +1,31 @@ package ctbrec.ui.sites.camsoda; -import static ctbrec.sites.camsoda.Camsoda.*; +import ctbrec.sites.camsoda.Camsoda; +import ctbrec.sites.camsoda.CamsodaModel; +import ctbrec.ui.sites.AbstractTabProvider; +import ctbrec.ui.tabs.ThumbOverviewTab; +import javafx.scene.Scene; +import javafx.scene.control.Tab; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.function.Predicate; -import ctbrec.recorder.Recorder; -import ctbrec.sites.camsoda.Camsoda; -import ctbrec.sites.camsoda.CamsodaModel; -import ctbrec.ui.tabs.TabProvider; -import ctbrec.ui.tabs.ThumbOverviewTab; -import javafx.scene.Scene; -import javafx.scene.control.Tab; +import static ctbrec.sites.camsoda.Camsoda.BASE_URI; -public class CamsodaTabProvider implements TabProvider { +public class CamsodaTabProvider extends AbstractTabProvider { private static final String API_URL = BASE_URI + "/api/v1/browse/online"; - private Camsoda camsoda; - private Recorder recorder; CamsodaFollowedTab followedTab; public CamsodaTabProvider(Camsoda camsoda) { - this.camsoda = camsoda; - this.recorder = camsoda.getRecorder(); + super(camsoda); followedTab = new CamsodaFollowedTab("Followed", camsoda); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); tabs.add(createTab("All", API_URL, m -> true)); tabs.add(createTab("New", API_URL, CamsodaModel::isNew)); @@ -49,8 +45,8 @@ public class CamsodaTabProvider implements TabProvider { } private Tab createTab(String title, String url, Predicate filter) { - var updateService = new CamsodaUpdateService(url, false, camsoda, filter); - var tab = new ThumbOverviewTab(title, updateService, camsoda); + var updateService = new CamsodaUpdateService(url, false, (Camsoda) site, filter); + var tab = new ThumbOverviewTab(title, updateService, site); tab.setRecorder(recorder); return tab; } diff --git a/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java b/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java index d2ee6251..f0787bc6 100644 --- a/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java @@ -1,36 +1,32 @@ package ctbrec.ui.sites.chaturbate; -import java.util.ArrayList; -import java.util.List; - -import ctbrec.recorder.Recorder; import ctbrec.sites.chaturbate.Chaturbate; -import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; -public class ChaturbateTabProvider implements TabProvider { +import java.util.ArrayList; +import java.util.List; - private Chaturbate chaturbate; - private Recorder recorder; - private ChaturbateFollowedTab followedTab; +public class ChaturbateTabProvider extends AbstractTabProvider { + + private final ChaturbateFollowedTab followedTab; public ChaturbateTabProvider(Chaturbate chaturbate) { - this.chaturbate = chaturbate; - this.recorder = chaturbate.getRecorder(); + super(chaturbate); this.followedTab = new ChaturbateFollowedTab("Followed", chaturbate.getBaseUrl() + "/followed-cams/", chaturbate); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); - tabs.add(createTab("Featured", chaturbate.getBaseUrl() + "/")); - tabs.add(createTab("Female", chaturbate.getBaseUrl() + "/female-cams/")); - tabs.add(createTab("New Female", chaturbate.getBaseUrl() + "/new-cams/female/")); - tabs.add(createTab("Male", chaturbate.getBaseUrl() + "/male-cams/")); - tabs.add(createTab("Couples", chaturbate.getBaseUrl() + "/couple-cams/")); - tabs.add(createTab("Trans", chaturbate.getBaseUrl() + "/trans-cams/")); + tabs.add(createTab("Featured", site.getBaseUrl() + "/")); + tabs.add(createTab("Female", site.getBaseUrl() + "/female-cams/")); + tabs.add(createTab("New Female", site.getBaseUrl() + "/new-cams/female/")); + tabs.add(createTab("Male", site.getBaseUrl() + "/male-cams/")); + tabs.add(createTab("Couples", site.getBaseUrl() + "/couple-cams/")); + tabs.add(createTab("Trans", site.getBaseUrl() + "/trans-cams/")); followedTab.setScene(scene); followedTab.setRecorder(recorder); followedTab.setImageAspectRatio(9.0 / 16.0); @@ -44,8 +40,8 @@ public class ChaturbateTabProvider implements TabProvider { } private Tab createTab(String title, String url) { - var updateService = new ChaturbateUpdateService(url, false, chaturbate); - var tab = new ThumbOverviewTab(title, updateService, chaturbate); + var updateService = new ChaturbateUpdateService(url, false, (Chaturbate) site); + var tab = new ThumbOverviewTab(title, updateService, site); tab.setRecorder(recorder); tab.setImageAspectRatio(9.0 / 16.0); return tab; diff --git a/client/src/main/java/ctbrec/ui/sites/cherrytv/CherryTvTabProvider.java b/client/src/main/java/ctbrec/ui/sites/cherrytv/CherryTvTabProvider.java index 6f4d4bdc..ba3b7951 100644 --- a/client/src/main/java/ctbrec/ui/sites/cherrytv/CherryTvTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/cherrytv/CherryTvTabProvider.java @@ -1,8 +1,7 @@ package ctbrec.ui.sites.cherrytv; -import ctbrec.recorder.Recorder; import ctbrec.sites.cherrytv.CherryTv; -import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; @@ -10,24 +9,21 @@ import javafx.scene.control.Tab; import java.util.ArrayList; import java.util.List; -public class CherryTvTabProvider implements TabProvider { +public class CherryTvTabProvider extends AbstractTabProvider { - private final CherryTv site; - private final Recorder recorder; private final CherryTvFollowedTab followedTab; public CherryTvTabProvider(CherryTv cherryTv) { - this.site = cherryTv; - this.recorder = cherryTv.getRecorder(); + super(cherryTv); - followedTab = new CherryTvFollowedTab("Following", site); + followedTab = new CherryTvFollowedTab("Following", (CherryTv) site); followedTab.setImageAspectRatio(1); followedTab.preserveAspectRatioProperty().set(false); followedTab.setRecorder(recorder); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); tabs.add(createTab("Female", site.getBaseUrl() + "/graphql?operationName=findBroadcastsByPage&variables={\"slug\":\"female\",\"tag\":null,\"following\":null,\"limit\":${limit},\"cursor\":${offset}}&extensions={\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"f1e214ca901e525301fcc6966cf081ee95ef777974ec184897c4a2cf15e9ac6f\"}}")); tabs.add(createTab("Trans", site.getBaseUrl() + "/graphql?operationName=findBroadcastsByPage&variables={\"slug\":\"trans\",\"tag\":null,\"following\":null,\"limit\":${limit},\"cursor\":${offset}}&extensions={\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"f1e214ca901e525301fcc6966cf081ee95ef777974ec184897c4a2cf15e9ac6f\"}}")); @@ -42,7 +38,7 @@ public class CherryTvTabProvider implements TabProvider { } private Tab createTab(String name, String url) { - var updateService = new CherryTvUpdateService(url, site, false); + var updateService = new CherryTvUpdateService(url, (CherryTv) site, false); var tab = new ThumbOverviewTab(name, updateService, site); tab.setImageAspectRatio(9.0 / 16.0); tab.preserveAspectRatioProperty().set(false); diff --git a/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2TabProvider.java b/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2TabProvider.java index e4e4bf16..866993cb 100644 --- a/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2TabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2TabProvider.java @@ -1,39 +1,38 @@ package ctbrec.ui.sites.fc2live; -import java.util.ArrayList; -import java.util.List; - import ctbrec.sites.fc2live.Fc2Live; -import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; -public class Fc2TabProvider implements TabProvider { +import java.util.ArrayList; +import java.util.List; + +public class Fc2TabProvider extends AbstractTabProvider { - private Fc2Live fc2live; private Fc2FollowedTab followed; public Fc2TabProvider(Fc2Live fc2live) { - this.fc2live = fc2live; + super(fc2live); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); tabs.add(createTab("Online", Fc2Live.BASE_URL + "/adult/contents/allchannellist.php")); - followed = new Fc2FollowedTab(fc2live); - followed.setRecorder(fc2live.getRecorder()); + followed = new Fc2FollowedTab((Fc2Live) site); + followed.setRecorder(site.getRecorder()); tabs.add(followed); return tabs; } private Tab createTab(String title, String url) { - var updateService = new Fc2UpdateService(url, fc2live); - var tab = new ThumbOverviewTab(title, updateService, fc2live); - tab.setRecorder(fc2live.getRecorder()); + var updateService = new Fc2UpdateService(url, (Fc2Live) site); + var tab = new ThumbOverviewTab(title, updateService, site); + tab.setRecorder(site.getRecorder()); return tab; } diff --git a/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeTabProvider.java b/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeTabProvider.java index 55b7475a..3c3391d6 100644 --- a/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeTabProvider.java @@ -1,36 +1,35 @@ package ctbrec.ui.sites.flirt4free; -import java.util.ArrayList; -import java.util.List; -import java.util.function.Predicate; - import ctbrec.sites.flirt4free.Flirt4Free; import ctbrec.sites.flirt4free.Flirt4FreeModel; -import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; import javafx.util.Duration; -public class Flirt4FreeTabProvider implements TabProvider { +import java.util.ArrayList; +import java.util.List; +import java.util.function.Predicate; + +public class Flirt4FreeTabProvider extends AbstractTabProvider { - private final Flirt4Free flirt4Free; private final ThumbOverviewTab followedTab; public Flirt4FreeTabProvider(Flirt4Free flirt4Free) { - this.flirt4Free = flirt4Free; + super(flirt4Free); followedTab = new Flirt4FreeFavoritesTab(flirt4Free); followedTab.setRecorder(flirt4Free.getRecorder()); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); - tabs.add(createTab("Girls", flirt4Free.getBaseUrl() + "/live/girls/", m -> true)); - tabs.add(createTab("New Girls", flirt4Free.getBaseUrl() + "/live/girls/", Flirt4FreeModel::isNew)); - tabs.add(createTab("Boys", flirt4Free.getBaseUrl() + "/live/guys/", m -> true)); - tabs.add(createTab("Couples", flirt4Free.getBaseUrl() + "/live/couples/", m -> m.getCategories().contains("2"))); - tabs.add(createTab("Trans", flirt4Free.getBaseUrl() + "/live/trans/", m -> true)); + tabs.add(createTab("Girls", site.getBaseUrl() + "/live/girls/", m -> true)); + tabs.add(createTab("New Girls", site.getBaseUrl() + "/live/girls/", Flirt4FreeModel::isNew)); + tabs.add(createTab("Boys", site.getBaseUrl() + "/live/guys/", m -> true)); + tabs.add(createTab("Couples", site.getBaseUrl() + "/live/couples/", m -> m.getCategories().contains("2"))); + tabs.add(createTab("Trans", site.getBaseUrl() + "/live/trans/", m -> true)); tabs.add(followedTab); return tabs; } @@ -41,9 +40,9 @@ public class Flirt4FreeTabProvider implements TabProvider { } private ThumbOverviewTab createTab(String title, String url, Predicate filter) { - var s = new Flirt4FreeUpdateService(flirt4Free, url, filter); - var tab = new ThumbOverviewTab(title, s, flirt4Free); - tab.setRecorder(flirt4Free.getRecorder()); + var s = new Flirt4FreeUpdateService((Flirt4Free) site, url, filter); + var tab = new ThumbOverviewTab(title, s, site); + tab.setRecorder(site.getRecorder()); s.setPeriod(Duration.seconds(60)); return tab; } diff --git a/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminTabProvider.java b/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminTabProvider.java index 3e759fa4..d94ef626 100644 --- a/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminTabProvider.java @@ -1,36 +1,36 @@ package ctbrec.ui.sites.jasmin; -import java.util.ArrayList; -import java.util.List; - import ctbrec.sites.jasmin.LiveJasmin; -import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; import javafx.util.Duration; -public class LiveJasminTabProvider implements TabProvider { +import java.util.ArrayList; +import java.util.List; + +public class LiveJasminTabProvider extends AbstractTabProvider { + - private final LiveJasmin liveJasmin; private final LiveJasminFollowedTab followedTab; public LiveJasminTabProvider(LiveJasmin liveJasmin) { - this.liveJasmin = liveJasmin; + super(liveJasmin); followedTab = new LiveJasminFollowedTab(liveJasmin); followedTab.setRecorder(liveJasmin.getRecorder()); followedTab.setImageAspectRatio(9.0 / 16.0); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); - tabs.add(createTab("Girls", liveJasmin.getBaseUrl() + "/en/girl/?listPageOrderType=most_popular")); - tabs.add(createTab("Girls HD", liveJasmin.getBaseUrl() + "/en/girl/hd/?listPageOrderType=most_popular")); - tabs.add(createTab("New Girls", liveJasmin.getBaseUrl() + "/en/girls/newbie/?listPageOrderType=most_popular")); - tabs.add(createTab("Couples", liveJasmin.getBaseUrl() + "/en/girls/couple/?listPageOrderType=most_popular")); - tabs.add(createTab("Boys", liveJasmin.getBaseUrl() + "/en/boy/?listPageOrderType=most_popular")); - tabs.add(createTab("Boys HD", liveJasmin.getBaseUrl() + "/en/boy/hd/?listPageOrderType=most_popular")); + tabs.add(createTab("Girls", site.getBaseUrl() + "/en/girl/?listPageOrderType=most_popular")); + tabs.add(createTab("Girls HD", site.getBaseUrl() + "/en/girl/hd/?listPageOrderType=most_popular")); + tabs.add(createTab("New Girls", site.getBaseUrl() + "/en/girls/newbie/?listPageOrderType=most_popular")); + tabs.add(createTab("Couples", site.getBaseUrl() + "/en/girls/couple/?listPageOrderType=most_popular")); + tabs.add(createTab("Boys", site.getBaseUrl() + "/en/boy/?listPageOrderType=most_popular")); + tabs.add(createTab("Boys HD", site.getBaseUrl() + "/en/boy/hd/?listPageOrderType=most_popular")); tabs.add(followedTab); return tabs; } @@ -41,10 +41,10 @@ public class LiveJasminTabProvider implements TabProvider { } private ThumbOverviewTab createTab(String title, String url) { - var s = new LiveJasminUpdateService(liveJasmin, url); + var s = new LiveJasminUpdateService((LiveJasmin) site, url); s.setPeriod(Duration.seconds(60)); - ThumbOverviewTab tab = new LiveJasminTab(title, s, liveJasmin); - tab.setRecorder(liveJasmin.getRecorder()); + ThumbOverviewTab tab = new LiveJasminTab(title, s, site); + tab.setRecorder(site.getRecorder()); tab.setImageAspectRatio(9.0 / 16.0); return tab; } diff --git a/client/src/main/java/ctbrec/ui/sites/manyvids/MVLiveTabProvider.java b/client/src/main/java/ctbrec/ui/sites/manyvids/MVLiveTabProvider.java index dc35397f..a10906d7 100644 --- a/client/src/main/java/ctbrec/ui/sites/manyvids/MVLiveTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/manyvids/MVLiveTabProvider.java @@ -1,34 +1,31 @@ package ctbrec.ui.sites.manyvids; -import java.util.ArrayList; -import java.util.List; - import ctbrec.sites.manyvids.MVLive; -import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; -public class MVLiveTabProvider implements TabProvider { +import java.util.ArrayList; +import java.util.List; - private MVLive mvlive; +public class MVLiveTabProvider extends AbstractTabProvider { public MVLiveTabProvider(MVLive mvlive) { - this.mvlive = mvlive; - + super(mvlive); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); tabs.add(createTab("Online")); return tabs; } private Tab createTab(String title) { - var updateService = new MVLiveUpdateService(mvlive); - var tab = new ThumbOverviewTab(title, updateService, mvlive); - tab.setRecorder(mvlive.getRecorder()); + var updateService = new MVLiveUpdateService((MVLive) site); + var tab = new ThumbOverviewTab(title, updateService, site); + tab.setRecorder(site.getRecorder()); tab.setImageAspectRatio(1); return tab; } diff --git a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTabProvider.java b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTabProvider.java index ee1f9ed0..46207539 100644 --- a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTabProvider.java @@ -1,34 +1,31 @@ package ctbrec.ui.sites.myfreecams; -import java.util.ArrayList; -import java.util.List; - -import ctbrec.recorder.Recorder; import ctbrec.sites.mfc.MyFreeCams; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.PaginatedScheduledService; -import ctbrec.ui.tabs.TabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; -public class MyFreeCamsTabProvider implements TabProvider { - private Recorder recorder; - private MyFreeCams myFreeCams; +import java.util.ArrayList; +import java.util.List; + +public class MyFreeCamsTabProvider extends AbstractTabProvider { private MyFreeCamsFriendsTab friends; + public MyFreeCamsTabProvider(MyFreeCams myFreeCams) { - this.myFreeCams = myFreeCams; - this.recorder = myFreeCams.getRecorder(); + super(myFreeCams); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); PaginatedScheduledService updateService = new OnlineCamsUpdateService(); tabs.add(createTab("Online", updateService)); - friends = new MyFreeCamsFriendsTab(myFreeCams); + friends = new MyFreeCamsFriendsTab((MyFreeCams) site); friends.setRecorder(recorder); friends.setImageAspectRatio(9.0 / 16.0); friends.preserveAspectRatioProperty().set(false); @@ -43,13 +40,13 @@ public class MyFreeCamsTabProvider implements TabProvider { updateService = new NewModelService(); tabs.add(createTab("New", updateService)); - tabs.add(new MyFreeCamsTableTab(myFreeCams, recorder)); + tabs.add(new MyFreeCamsTableTab((MyFreeCams) site, recorder)); return tabs; } private ThumbOverviewTab createTab(String title, PaginatedScheduledService updateService) { - var tab = new ThumbOverviewTab(title, updateService, myFreeCams); + var tab = new ThumbOverviewTab(title, updateService, site); tab.setImageAspectRatio(9.0 / 16.0); tab.preserveAspectRatioProperty().set(false); tab.setRecorder(recorder); diff --git a/client/src/main/java/ctbrec/ui/sites/secretfriends/SecretFriendsTabProvider.java b/client/src/main/java/ctbrec/ui/sites/secretfriends/SecretFriendsTabProvider.java index ced85dc7..19fdd3b5 100644 --- a/client/src/main/java/ctbrec/ui/sites/secretfriends/SecretFriendsTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/secretfriends/SecretFriendsTabProvider.java @@ -1,55 +1,35 @@ package ctbrec.ui.sites.secretfriends; -import ctbrec.recorder.Recorder; import ctbrec.sites.secretfriends.SecretFriends; -import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; +import ctbrec.ui.tabs.recorded.RecordedModelsPerSiteTab; import javafx.scene.Scene; import javafx.scene.control.Tab; import java.util.ArrayList; import java.util.List; -public class SecretFriendsTabProvider implements TabProvider { - - private final SecretFriends site; - private final Recorder recorder; - -// StripchatFollowedTab followedTab; +public class SecretFriendsTabProvider extends AbstractTabProvider { public SecretFriendsTabProvider(SecretFriends site) { - this.site = site; - this.recorder = site.getRecorder(); - //followedTab = new StripchatFollowedTab("Followed", site); + super(site); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); tabs.add(createTab("Girls", SecretFriends.BASE_URI + "/users")); tabs.add(createTab("New", SecretFriends.BASE_URI + "/newgirls")); tabs.add(createTab("Couples", SecretFriends.BASE_URI + "/site/couple")); - //tabs.add(createTab("Vibrating Toy", SecretFriends.BASE_URI + "/tag/view?slug=vibrating-toy")); -// tabs.add(createTab("Girls HD", site.getBaseUrl() + "/api/front/models?primaryTag=girls&filterGroupTags=%5B%5B%22autoTagHd%22%5D%5D&parentTag=autoTagHd")); -// tabs.add(createTab("New Girls", site.getBaseUrl() +"/api/front/models?primaryTag=girls&filterGroupTags=%5B%5B%22autoTagNew%22%5D%5D&parentTag=autoTagNew")); -// tabs.add(createTab("Couples", MessageFormat.format(urlTemplate, "couples"))); -// tabs.add(createTab("Boys", MessageFormat.format(urlTemplate, "men"))); -// tabs.add(createTab("Trans", MessageFormat.format(urlTemplate, "trans"))); -// followedTab.setRecorder(recorder); -// followedTab.setScene(scene); -// followedTab.setImageAspectRatio(9.0 / 16.0); -// tabs.add(followedTab); + + var recordingTab = new RecordedModelsPerSiteTab("Recording", recorder, site); + tabs.add(recordingTab); return tabs; } - @Override - public Tab getFollowedTab() { -// return followedTab; - return null; - } - private Tab createTab(String title, String url) { - var updateService = new SecretFriendsUpdateService(url, false, site); + var updateService = new SecretFriendsUpdateService(url, false, (SecretFriends) site); var tab = new ThumbOverviewTab(title, updateService, site); tab.setRecorder(recorder); return tab; diff --git a/client/src/main/java/ctbrec/ui/sites/showup/ShowupTabProvider.java b/client/src/main/java/ctbrec/ui/sites/showup/ShowupTabProvider.java index 48544743..241bb25b 100644 --- a/client/src/main/java/ctbrec/ui/sites/showup/ShowupTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/showup/ShowupTabProvider.java @@ -1,29 +1,27 @@ package ctbrec.ui.sites.showup; -import java.util.ArrayList; -import java.util.List; - import ctbrec.sites.showup.Showup; -import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; -public class ShowupTabProvider implements TabProvider { +import java.util.ArrayList; +import java.util.List; - private Showup site; +public class ShowupTabProvider extends AbstractTabProvider { public ShowupTabProvider(Showup site) { - this.site = site; + super(site); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); tabs.add(createTab("Women", "female")); tabs.add(createTab("Men", "male")); tabs.add(createTab("All", "all")); - var showupFollowedTab = new ShowupFollowedTab("Favorites", site); + var showupFollowedTab = new ShowupFollowedTab("Favorites", (Showup) site); showupFollowedTab.setRecorder(site.getRecorder()); tabs.add(showupFollowedTab); return tabs; @@ -35,7 +33,7 @@ public class ShowupTabProvider implements TabProvider { } private Tab createTab(String title, String category) { - var updateService = new ShowupUpdateService(site, category); + var updateService = new ShowupUpdateService((Showup) site, category); var tab = new ThumbOverviewTab(title, updateService, site); tab.setRecorder(site.getRecorder()); return tab; diff --git a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java index 2e1f2fcf..36fbe0d5 100644 --- a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java @@ -1,39 +1,35 @@ package ctbrec.ui.sites.streamate; -import java.util.ArrayList; -import java.util.List; - -import ctbrec.recorder.Recorder; import ctbrec.sites.streamate.Streamate; -import ctbrec.ui.tabs.TabProvider; +import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; -public class StreamateTabProvider implements TabProvider { - private Streamate streamate; - private Recorder recorder; +import java.util.ArrayList; +import java.util.List; + +public class StreamateTabProvider extends AbstractTabProvider { private ThumbOverviewTab followedTab; public StreamateTabProvider(Streamate streamate) { - this.streamate = streamate; - this.recorder = streamate.getRecorder(); + super(streamate); } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); - tabs.add(createTab("Girls", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:f;online:true")); - tabs.add(createTab("Guys", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:m;online:true")); - tabs.add(createTab("Couples", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:mf;online:true")); - tabs.add(createTab("Lesbian", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:ff;online:true")); - tabs.add(createTab("Gay", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:mm;online:true")); - tabs.add(createTab("Groups", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:g;online:true")); - tabs.add(createTab("Trans female", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:tm2f;online:true")); - tabs.add(createTab("Trans male", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:tf2m;online:true")); - tabs.add(createTab("New", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=new:true;online:true")); + tabs.add(createTab("Girls", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:f;online:true")); + tabs.add(createTab("Guys", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:m;online:true")); + tabs.add(createTab("Couples", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:mf;online:true")); + tabs.add(createTab("Lesbian", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:ff;online:true")); + tabs.add(createTab("Gay", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:mm;online:true")); + tabs.add(createTab("Groups", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:g;online:true")); + tabs.add(createTab("Trans female", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:tm2f;online:true")); + tabs.add(createTab("Trans male", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:tf2m;online:true")); + tabs.add(createTab("New", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=new:true;online:true")); - followedTab = new StreamateFollowedTab(streamate); + followedTab = new StreamateFollowedTab((Streamate) site); followedTab.setRecorder(recorder); tabs.add(followedTab); @@ -46,8 +42,8 @@ public class StreamateTabProvider implements TabProvider { } private Tab createTab(String title, String url) { - var updateService = new StreamateUpdateService(streamate, url); - var tab = new ThumbOverviewTab(title, updateService, streamate); + var updateService = new StreamateUpdateService((Streamate) site, url); + var tab = new ThumbOverviewTab(title, updateService, site); tab.setRecorder(recorder); return tab; } diff --git a/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatTabProvider.java b/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatTabProvider.java index 6050f340..5bd00905 100644 --- a/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatTabProvider.java @@ -1,38 +1,32 @@ package ctbrec.ui.sites.stripchat; +import ctbrec.sites.stripchat.Stripchat; +import ctbrec.ui.sites.AbstractTabProvider; +import ctbrec.ui.tabs.ThumbOverviewTab; +import javafx.scene.Scene; +import javafx.scene.control.Tab; + import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; -import ctbrec.recorder.Recorder; -import ctbrec.sites.stripchat.Stripchat; -import ctbrec.ui.tabs.TabProvider; -import ctbrec.ui.tabs.ThumbOverviewTab; -import javafx.scene.Scene; -import javafx.scene.control.Tab; - -public class StripchatTabProvider implements TabProvider { - - private String urlTemplate; - private Stripchat stripchat; - private Recorder recorder; - - StripchatFollowedTab followedTab; +public class StripchatTabProvider extends AbstractTabProvider { + private final String urlTemplate; + private final StripchatFollowedTab followedTab; public StripchatTabProvider(Stripchat stripchat) { - this.stripchat = stripchat; - this.recorder = stripchat.getRecorder(); + super(stripchat); followedTab = new StripchatFollowedTab("Followed", stripchat); urlTemplate = stripchat.getBaseUrl() + "/api/front/models?primaryTag={0}&sortBy=viewersRating&withMixedTags=true&parentTag="; } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); tabs.add(createTab("Girls", MessageFormat.format(urlTemplate, "girls"))); - tabs.add(createTab("Girls HD", stripchat.getBaseUrl() + "/api/front/models?primaryTag=girls&filterGroupTags=%5B%5B%22autoTagHd%22%5D%5D&parentTag=autoTagHd")); - tabs.add(createTab("New Girls", stripchat.getBaseUrl() +"/api/front/models?primaryTag=girls&filterGroupTags=%5B%5B%22autoTagNew%22%5D%5D&parentTag=autoTagNew")); + tabs.add(createTab("Girls HD", site.getBaseUrl() + "/api/front/models?primaryTag=girls&filterGroupTags=%5B%5B%22autoTagHd%22%5D%5D&parentTag=autoTagHd")); + tabs.add(createTab("New Girls", site.getBaseUrl() + "/api/front/models?primaryTag=girls&filterGroupTags=%5B%5B%22autoTagNew%22%5D%5D&parentTag=autoTagNew")); tabs.add(createTab("Couples", MessageFormat.format(urlTemplate, "couples"))); tabs.add(createTab("Boys", MessageFormat.format(urlTemplate, "men"))); tabs.add(createTab("Trans", MessageFormat.format(urlTemplate, "trans"))); @@ -49,8 +43,8 @@ public class StripchatTabProvider implements TabProvider { } private Tab createTab(String title, String url) { - var updateService = new StripchatUpdateService(url, false, stripchat); - var tab = new ThumbOverviewTab(title, updateService, stripchat); + var updateService = new StripchatUpdateService(url, false, (Stripchat) site); + var tab = new ThumbOverviewTab(title, updateService, site); tab.setRecorder(recorder); tab.setImageAspectRatio(9.0 / 16.0); return tab; diff --git a/client/src/main/java/ctbrec/ui/sites/xlovecam/XloveCamTabProvider.java b/client/src/main/java/ctbrec/ui/sites/xlovecam/XloveCamTabProvider.java index 91215a4b..ff266ffe 100644 --- a/client/src/main/java/ctbrec/ui/sites/xlovecam/XloveCamTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/xlovecam/XloveCamTabProvider.java @@ -1,74 +1,69 @@ package ctbrec.ui.sites.xlovecam; +import ctbrec.sites.xlovecam.XloveCam; +import ctbrec.ui.sites.AbstractTabProvider; +import ctbrec.ui.tabs.PaginatedScheduledService; +import ctbrec.ui.tabs.ThumbOverviewTab; +import javafx.scene.Scene; +import javafx.scene.control.Tab; + import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; -import ctbrec.recorder.Recorder; -import ctbrec.sites.xlovecam.XloveCam; -import ctbrec.ui.tabs.PaginatedScheduledService; -import ctbrec.ui.tabs.TabProvider; -import ctbrec.ui.tabs.ThumbOverviewTab; -import javafx.scene.Scene; -import javafx.scene.control.Tab; +public class XloveCamTabProvider extends AbstractTabProvider { -public class XloveCamTabProvider implements TabProvider { + private final XloveCam xloveCam; - private XloveCam site; - private Recorder recorder; + private static final String FILTER_PARAM = "config[filter][10][]"; public XloveCamTabProvider(XloveCam xloveCam) { - this.site = xloveCam; - this.recorder = xloveCam.getRecorder(); + super(xloveCam); + this.xloveCam = xloveCam; } @Override - public List getTabs(Scene scene) { + protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); // all - var updateService = new XloveCamUpdateService(site, Collections.emptyMap()); + var updateService = new XloveCamUpdateService(xloveCam, Collections.emptyMap()); tabs.add(createTab("All", updateService)); // Young Women - updateService = new XloveCamUpdateService(site, Map.of("config[filter][10][]", "1")); + updateService = new XloveCamUpdateService(xloveCam, Map.of(FILTER_PARAM, "1")); tabs.add(createTab("Young Women", updateService)); // Ladies - updateService = new XloveCamUpdateService(site, Map.of("config[filter][10][]", "13")); + updateService = new XloveCamUpdateService(xloveCam, Map.of(FILTER_PARAM, "13")); tabs.add(createTab("Ladies", updateService)); // Mature - updateService = new XloveCamUpdateService(site, Map.of("config[filter][10][]", "6")); + updateService = new XloveCamUpdateService(xloveCam, Map.of(FILTER_PARAM, "6")); tabs.add(createTab("Mature Female", updateService)); // Couples - updateService = new XloveCamUpdateService(site, Map.of("config[filter][10][]", "2")); + updateService = new XloveCamUpdateService(xloveCam, Map.of(FILTER_PARAM, "2")); tabs.add(createTab("Couples", updateService)); // Lesbian - updateService = new XloveCamUpdateService(site, Map.of("config[filter][10][]", "3")); + updateService = new XloveCamUpdateService(xloveCam, Map.of(FILTER_PARAM, "3")); tabs.add(createTab("Lesbian", updateService)); // Male - updateService = new XloveCamUpdateService(site, Map.of("config[filter][10][]", "7")); + updateService = new XloveCamUpdateService(xloveCam, Map.of(FILTER_PARAM, "7")); tabs.add(createTab("Male", updateService)); // Trans - updateService = new XloveCamUpdateService(site, Map.of("config[filter][10][]", "5")); + updateService = new XloveCamUpdateService(xloveCam, Map.of(FILTER_PARAM, "5")); tabs.add(createTab("Trans", updateService)); return tabs; } - @Override - public Tab getFollowedTab() { - return null; - } - private Tab createTab(String title, PaginatedScheduledService updateService) { - var tab = new ThumbOverviewTab(title, updateService, site); + var tab = new ThumbOverviewTab(title, updateService, xloveCam); tab.setRecorder(recorder); return tab; }