Fix Camsoda thumbnails

This commit is contained in:
0xb00bface 2021-12-11 16:22:29 +01:00
parent 68c68a126a
commit 91b82b16a9
2 changed files with 30 additions and 27 deletions

View File

@ -1,21 +1,5 @@
package ctbrec.ui.sites.camsoda;
import static ctbrec.Model.State.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ctbrec.Model;
import ctbrec.StringUtil;
import ctbrec.io.HttpException;
@ -25,14 +9,26 @@ import ctbrec.ui.SiteUiFactory;
import ctbrec.ui.tabs.PaginatedScheduledService;
import javafx.concurrent.Task;
import okhttp3.Request;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import static ctbrec.Model.State.OFFLINE;
import static ctbrec.Model.State.ONLINE;
public class CamsodaUpdateService extends PaginatedScheduledService {
private static final Logger LOG = LoggerFactory.getLogger(CamsodaUpdateService.class);
private String url;
private boolean loginRequired;
private Camsoda camsoda;
private final String url;
private final boolean loginRequired;
private final Camsoda camsoda;
int modelsPerPage = 50;
private Predicate<CamsodaModel> filter;
@ -46,13 +42,13 @@ public class CamsodaUpdateService extends PaginatedScheduledService {
@Override
protected Task<List<Model>> createTask() {
return new Task<List<Model>>() {
return new Task<>() {
@Override
public List<Model> call() throws IOException {
return loadOnlineModels().stream()
.sorted((m1,m2) -> (int)(m2.getSortOrder() - m1.getSortOrder()))
.sorted((m1, m2) -> (int) (m2.getSortOrder() - m1.getSortOrder()))
.filter(filter)
.skip( (page-1) * (long)modelsPerPage)
.skip((page - 1) * (long) modelsPerPage)
.limit(modelsPerPage)
.collect(Collectors.toList());
}
@ -70,7 +66,7 @@ public class CamsodaUpdateService extends PaginatedScheduledService {
var request = new Request.Builder().url(url).build();
try (var response = camsoda.getHttpClient().execute(request)) {
if (response.isSuccessful()) {
return parseModels(response.body().string());
return parseModels(Objects.requireNonNull(response.body(), "HTTP response body is null").string());
} else {
throw new HttpException(response.code(), response.message());
}
@ -105,8 +101,12 @@ public class CamsodaUpdateService extends PaginatedScheduledService {
CamsodaModel model = (CamsodaModel) camsoda.createModel(name);
model.setSortOrder(tpl.getFloat(getTemplateIndex(template, "sort_value")));
model.setDescription(tpl.getString(getTemplateIndex(template, "subject_html")));
var preview = "https:" + tpl.getString(getTemplateIndex(template, "thumb"));
var preview = tpl.getString(getTemplateIndex(template, "thumb"));
if (preview.startsWith("//")) {
preview = "https:" + preview;
}
model.setPreview(preview);
LOG.info("Preview: {}", preview);
model.setOnlineStateByStatus(tpl.getString(getTemplateIndex(template, "status")));
var displayName = tpl.getString(getTemplateIndex(template, "display_name"));
model.setDisplayName(displayName.replaceAll("[^a-zA-Z0-9]", ""));
@ -124,7 +124,10 @@ public class CamsodaUpdateService extends PaginatedScheduledService {
model.setSortOrder(tpl.getFloat(Integer.toString(getTemplateIndex(template, "sort_value"))));
model.setNew(result.optBoolean("new"));
model.setGender(tpl.getString(Integer.toString(getTemplateIndex(template, "gender"))));
var preview = "https:" + tpl.getString(Integer.toString(getTemplateIndex(template, "thumb")));
var preview = tpl.getString(Integer.toString(getTemplateIndex(template, "thumb")));
if (preview.startsWith("//")) {
preview = "https:" + preview;
}
model.setPreview(preview);
var displayName = tpl.getString(Integer.toString(getTemplateIndex(template, "display_name")));
model.setDisplayName(displayName.replaceAll("[^a-zA-Z0-9]", ""));
@ -154,7 +157,7 @@ public class CamsodaUpdateService extends PaginatedScheduledService {
return i;
}
}
throw new NoSuchElementException(string + " not found in template: " + template.toString());
throw new NoSuchElementException(string + " not found in template: " + template);
}
public void setFilter(Predicate<CamsodaModel> filter) {

View File

@ -461,7 +461,7 @@ public class ThumbCell extends StackPane {
throw new HttpException(resp.code(), resp.message());
}
} catch (IOException e) {
LOG.warn("Error loading thumbnail: {}", e.getLocalizedMessage());
LOG.warn("Error loading thumbnail: {} {}", url, e.getLocalizedMessage());
}
};
}