Add Recording tabs to the side tabs of each site

This commit is contained in:
0xb00bface 2021-12-04 15:46:08 +01:00
parent 2e122fbfd1
commit 5f517682b9
17 changed files with 254 additions and 286 deletions

View File

@ -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<Tab> getTabs(Scene scene) {
var tabs = getSiteTabs(scene);
var recordingTab = new RecordedModelsPerSiteTab("Recording", recorder, site);
tabs.add(recordingTab);
return tabs;
}
protected abstract List<Tab> getSiteTabs(Scene scene);
@Override
public Tab getFollowedTab() {
return null;
}
}

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;
}

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;
}

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;
}

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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<CamsodaModel> 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;
}

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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);

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;
}

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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<Flirt4FreeModel> 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;
}

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;
}

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;
}

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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);

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;
}

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;

View File

@ -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<Tab> getTabs(Scene scene) {
protected List<Tab> getSiteTabs(Scene scene) {
List<Tab> 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;
}