forked from j62/ctbrec
1
0
Fork 0

Add more category tabs for CamSoda

This commit is contained in:
0xb00bface 2020-12-14 21:28:10 +01:00
parent 43d93e3590
commit 2f0ef47acf
4 changed files with 67 additions and 52 deletions

View File

@ -1,5 +1,6 @@
3.10.9
========================
* Added more category tabs for CamSoda
* Added button to the "Recording" tab to go over all model URLs and check, if
the account still exists

View File

@ -4,6 +4,7 @@ import static ctbrec.sites.camsoda.Camsoda.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;
import ctbrec.recorder.Recorder;
@ -16,6 +17,7 @@ import javafx.scene.control.Tab;
public class CamsodaTabProvider extends TabProvider {
private static final String API_URL = BASE_URI + "/api/v1/browse/online";
private Camsoda camsoda;
private Recorder recorder;
CamsodaFollowedTab followedTab;
@ -29,8 +31,13 @@ public class CamsodaTabProvider extends TabProvider {
@Override
public List<Tab> getTabs(Scene scene) {
List<Tab> tabs = new ArrayList<>();
tabs.add(createTab("Online", BASE_URI + "/api/v1/browse/online", m -> true));
//tabs.add(createTab("New", BASE_URI + "/api/v1/browse/online", CamsodaModel::isNew));
tabs.add(createTab("All", API_URL, m -> true));
tabs.add(createTab("New", API_URL, CamsodaModel::isNew));
tabs.add(createTab("Female", API_URL, m -> Objects.equals("f", m.getGender())));
tabs.add(createTab("Male", API_URL, m -> Objects.equals("m", m.getGender())));
tabs.add(createTab("Couples", API_URL, m -> Objects.equals("c", m.getGender())));
tabs.add(createTab("Trans", API_URL, m -> Objects.equals("t", m.getGender())));
//tabs.add(createTab("#petite", BASE_URI + "/api/v1/browse/tag-petite", m -> true));
followedTab.setRecorder(recorder);
followedTab.setScene(scene);
tabs.add(followedTab);

View File

@ -74,60 +74,58 @@ public class CamsodaUpdateService extends PaginatedScheduledService {
if (response.isSuccessful()) {
String body = response.body().string();
JSONObject json = new JSONObject(body);
if (json.optBoolean("status")) {
JSONArray template = json.getJSONArray("template");
JSONArray results = json.getJSONArray("results");
for (int i = 0; i < results.length(); i++) {
Object result = results.getJSONObject(i).get("tpl");
CamsodaModel model;
try {
if (result instanceof JSONObject) {
JSONObject tpl = (JSONObject) result;
String name = tpl.getString(Integer.toString(getTemplateIndex(template, "username")));
model = (CamsodaModel) camsoda.createModel(name);
model.setDescription(tpl.getString(Integer.toString(getTemplateIndex(template, "subject_html"))));
model.setSortOrder(tpl.getFloat(Integer.toString(getTemplateIndex(template, "sort_value"))));
String preview = "https:" + tpl.getString(Integer.toString(getTemplateIndex(template, "thumb")));
model.setPreview(preview);
String displayName = tpl.getString(Integer.toString(getTemplateIndex(template, "display_name")));
model.setDisplayName(displayName.replaceAll("[^a-zA-Z0-9]", ""));
if (model.getDisplayName().isBlank()) {
model.setDisplayName(name);
}
model.setOnlineState(tpl.getString(Integer.toString(getTemplateIndex(template, "stream_name"))).isEmpty() ? OFFLINE : ONLINE);
try {
String statusIndex = Integer.toString(getTemplateIndex(template, "status"));
if (tpl.has(statusIndex)) {
model.setOnlineStateByStatus(tpl.getString(statusIndex));
}
} catch (NoSuchElementException e) {
}
models.add(model);
} else if (result instanceof JSONArray) {
JSONArray tpl = (JSONArray) result;
String name = tpl.getString(getTemplateIndex(template, "username"));
model = (CamsodaModel) camsoda.createModel(name);
model.setSortOrder(tpl.getFloat(getTemplateIndex(template, "sort_value")));
model.setDescription(tpl.getString(getTemplateIndex(template, "subject_html")));
String preview = "https:" + tpl.getString(getTemplateIndex(template, "thumb"));
model.setPreview(preview);
model.setOnlineStateByStatus(tpl.getString(getTemplateIndex(template, "status")));
String displayName = tpl.getString(getTemplateIndex(template, "display_name"));
model.setDisplayName(displayName.replaceAll("[^a-zA-Z0-9]", ""));
if (model.getDisplayName().isBlank()) {
model.setDisplayName(name);
}
models.add(model);
JSONArray template = json.getJSONArray("template");
JSONArray results = json.getJSONArray("results");
for (int i = 0; i < results.length(); i++) {
JSONObject result = results.getJSONObject(i);
Object templateObject = result.get("tpl");
CamsodaModel model;
try {
if (templateObject instanceof JSONObject) {
JSONObject tpl = (JSONObject) templateObject;
String name = tpl.getString(Integer.toString(getTemplateIndex(template, "username")));
model = (CamsodaModel) camsoda.createModel(name);
model.setDescription(tpl.getString(Integer.toString(getTemplateIndex(template, "subject_html"))));
model.setSortOrder(tpl.getFloat(Integer.toString(getTemplateIndex(template, "sort_value"))));
model.setNew(result.optBoolean("new"));
model.setGender(tpl.getString(Integer.toString(getTemplateIndex(template, "gender"))));
String preview = "https:" + tpl.getString(Integer.toString(getTemplateIndex(template, "thumb")));
model.setPreview(preview);
String displayName = tpl.getString(Integer.toString(getTemplateIndex(template, "display_name")));
model.setDisplayName(displayName.replaceAll("[^a-zA-Z0-9]", ""));
if (model.getDisplayName().isBlank()) {
model.setDisplayName(name);
}
} catch (Exception e) {
LOG.warn("Couldn't parse one of the models: {}", result, e);
model.setOnlineState(tpl.getString(Integer.toString(getTemplateIndex(template, "stream_name"))).isEmpty() ? OFFLINE : ONLINE);
try {
String statusIndex = Integer.toString(getTemplateIndex(template, "status"));
if (tpl.has(statusIndex)) {
model.setOnlineStateByStatus(tpl.getString(statusIndex));
}
} catch (NoSuchElementException e) {
}
models.add(model);
} else if (templateObject instanceof JSONArray) {
JSONArray tpl = (JSONArray) templateObject;
String name = tpl.getString(getTemplateIndex(template, "username"));
model = (CamsodaModel) camsoda.createModel(name);
model.setSortOrder(tpl.getFloat(getTemplateIndex(template, "sort_value")));
model.setDescription(tpl.getString(getTemplateIndex(template, "subject_html")));
String preview = "https:" + tpl.getString(getTemplateIndex(template, "thumb"));
model.setPreview(preview);
model.setOnlineStateByStatus(tpl.getString(getTemplateIndex(template, "status")));
String displayName = tpl.getString(getTemplateIndex(template, "display_name"));
model.setDisplayName(displayName.replaceAll("[^a-zA-Z0-9]", ""));
if (model.getDisplayName().isBlank()) {
model.setDisplayName(name);
}
models.add(model);
}
} catch (Exception e) {
LOG.warn("Couldn't parse one of the models: {}", result, e);
}
return models;
} else {
LOG.debug("Response was not successful: {}", json);
return Collections.emptyList();
}
return models;
} else {
throw new HttpException(response.code(), response.message());
}

View File

@ -47,6 +47,7 @@ public class CamsodaModel extends AbstractModel {
private static final Logger LOG = LoggerFactory.getLogger(CamsodaModel.class);
private transient List<StreamSource> streamSources = null;
private transient boolean isNew;
private transient String gender;
private float sortOrder = 0;
private Random random = new Random();
@ -344,4 +345,12 @@ public class CamsodaModel extends AbstractModel {
public void setNew(boolean isNew) {
this.isNew = isNew;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}