From 1e582f9cba3185dd6cdc6c778a71b65f19512f42 Mon Sep 17 00:00:00 2001 From: StefRe Date: Thu, 29 Oct 2020 23:18:39 +0100 Subject: [PATCH] =?UTF-8?q?SISIS:=20fix=20regex=20for=20cover=20URL=20for?= =?UTF-8?q?=20Dresden=20St=C3=A4dtische=20Bibliotheken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The url starts with "/webOPACClient/" here, which is also part of the opac_url, so we retrieve just the part starting with "jsp/result..." Eliminate duplicate definition of the regex in parse_search and loadDetail. --- .../main/java/de/geeksfactory/opacclient/apis/SISIS.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/opacclient/libopac/src/main/java/de/geeksfactory/opacclient/apis/SISIS.java b/opacclient/libopac/src/main/java/de/geeksfactory/opacclient/apis/SISIS.java index 010b057a3..eb7b5e40b 100644 --- a/opacclient/libopac/src/main/java/de/geeksfactory/opacclient/apis/SISIS.java +++ b/opacclient/libopac/src/main/java/de/geeksfactory/opacclient/apis/SISIS.java @@ -196,6 +196,8 @@ public class SISIS extends OkHttpBaseApi implements OpacApi { protected long logged_in; protected Account logged_in_as; protected static final String ENCODING = "UTF-8"; + protected static final Pattern coverPattern = Pattern.compile( + "\\$\\.ajax\\(\\{\\s*url:\\s*'(?:/webOPACClient/)?(jsp/result/cover.jsp\\?[^']+)'"); protected String getDefaultEncoding() { return ENCODING; @@ -472,9 +474,7 @@ public SearchRequestResult parse_search(String html, int page) // covers loaded with AJAX (seen in Wuppertal) if (tr.children().size() > 3 && tr.child(3).html().contains("jsp/result/cover.jsp")) { - Pattern pattern = Pattern.compile( - "\\$\\.ajax\\(\\{\\s*url:\\s*'(jsp/result/cover.jsp\\?[^']+)',"); - Matcher matcher = pattern.matcher(tr.child(3).html()); + Matcher matcher = coverPattern.matcher(tr.child(3).html()); if (matcher.find()) { String url = opac_url + "/" + matcher.group(1); futures.add(CompletableFuture.runAsync(() -> { @@ -744,8 +744,6 @@ protected DetailedItem loadDetail(String html) throws IOException { ENCODING); String coverJs = null; - Pattern coverPattern = Pattern.compile("\\$\\.ajax\\(\\{[\\n\\s]*url: '(jsp/result/cover" + - ".jsp\\?[^']+')"); Matcher coverMatcher = coverPattern.matcher(html); if (coverMatcher.find()) { coverJs = httpGet(opac_url + "/" + coverMatcher.group(1), ENCODING);