Skip to content

Commit 62ed7f7

Browse files
committed
change ard topic search
2 parents 731e813 + ab48d1d commit 62ed7f7

File tree

8 files changed

+113
-117
lines changed

8 files changed

+113
-117
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ sourceCompatibility = JavaVersion.VERSION_17
2727
targetCompatibility = JavaVersion.VERSION_17
2828
group = 'de.mediathekview'
2929
archivesBaseName = "MServer"
30-
version = '3.1.280'
30+
version = '3.1.281'
3131

3232
def jarName = 'MServer.jar'
3333
def mainClass = 'mServer.Main'

src/main/java/mServer/crawler/sender/ard/ArdConstants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class ArdConstants {
1414
public static final String TOPIC_URL = API_URL + "/page-gateway/widgets/ard/asset/%s?pageSize=%d";
1515
public static final String DAY_PAGE_URL = "https://programm-api.ard.de/program/api/program?day=%s&channelIds=%s&mode=channel";
1616

17-
public static final int TOPICS_COMPILATION_PAGE_SIZE = 200;
17+
public static final int TOPICS_COMPILATION_PAGE_SIZE = 100;
1818
public static final int TOPIC_PAGE_SIZE = 50;
1919

2020
public static final String DEFAULT_CLIENT = "ard";

src/main/java/mServer/crawler/sender/ard/ArdCrawler.java

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,6 @@ public class ArdCrawler extends MediathekCrawler {
2727
= DateTimeFormatter.ofPattern("yyyy-MM-dd");
2828

2929
public static final String[] MISSING_TOPIC_IDS = new String[]{
30-
// Dahoam is dahoam
31-
"Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy9icm9hZGNhc3RTZXJpZXM6L2JyZGUvZmVybnNlaGVuL2JheWVyaXNjaGVzLWZlcm5zZWhlbi9zZW5kdW5nZW4vZGFob2FtLWlzLWRhaG9hbQ",
32-
// Rote Rosen
33-
"Y3JpZDovL3dkci5kZS9vbmUvcm90ZXJvc2Vu",
34-
// Sturm der Liebe
35-
"Y3JpZDovL2Rhc2Vyc3RlLmRlL3N0dXJtIGRlciBsaWViZQ",
36-
// in aller freundschaft -die jungen ärzte
37-
"Y3JpZDovL21kci5kZS9zZW5kZXJlaWhlbi9zdGFmZmVsc2VyaWUtaW4tYWxsZXItZnJldW5kc2NoYWZ0LWRpZS1qdW5nZW4tYWVyenRl",
38-
"Y3JpZDovL21kci5kZS9zZW5kZXJlaWhlbi8wNGVkZmFlOS1hYTBlLTQ4MjEtYTk4Mi0yNmRiZDdjZjEyZTY",
39-
"Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy9icm9hZGNhc3RTZXJpZXM6L2JyZGUvZmVybnNlaGVuL2JheWVyaXNjaGVzLWZlcm5zZWhlbi9zZW5kdW5nZW4vc3BpZWxmaWxtZS1pbS1icg",
40-
// wann kommst du meine wunden...
41-
"Y3JpZDovL3N3ci5kZS9zZGIvc3RJZC8xNjY3",
42-
// oldhenry
43-
"Y3JpZDovL2Rhc2Vyc3RlLmRlL29sZC1oZW5yeQ",
44-
// evertyhing (bis 5.1.)
45-
"Y3JpZDovL2Rhc2Vyc3RlLmRlL2V2ZXJ5dGhpbmctZXZlcnl3aGVyZS1hbGwtYXQtb25jZQ"
4630
};
4731

4832
public ArdCrawler(FilmeSuchen ssearch, int startPrio) {
@@ -154,9 +138,15 @@ private Set<ArdFilmInfoDto> getTopicsEntries() throws ExecutionException, Interr
154138
}
155139

156140
Log.sysLog("ard mediathek topics: " + topics.size());
157-
addAdditionalTopics(topics);
158-
Log.sysLog("ard mediathek topics with additional: " + topics.size());
159-
ConcurrentLinkedQueue<CrawlerUrlDTO> topicUrls = new ConcurrentLinkedQueue<>(topics);
141+
142+
final ArdTopicGroupsTask groupsToAsset = new ArdTopicGroupsTask(this, new ConcurrentLinkedQueue<>(topics));
143+
final Set<CrawlerUrlDTO> assitUrls = new HashSet<>();
144+
assitUrls.addAll(forkJoinPool.submit(groupsToAsset).get());
145+
Log.sysLog("ard sender group assit tasks: " + assitUrls.size());
146+
addAdditionalTopics(assitUrls);
147+
Log.sysLog("ard mediathek assit tasks with additional: " + assitUrls.size());
148+
149+
ConcurrentLinkedQueue<CrawlerUrlDTO> topicUrls = new ConcurrentLinkedQueue<>(assitUrls);
160150

161151
final ArdTopicPageTask topicTask = new ArdTopicPageTask(this, topicUrls);
162152
final Set<ArdFilmInfoDto> filmInfos = forkJoinPool.submit(topicTask).get();

src/main/java/mServer/crawler/sender/ard/json/ArdTeasersDeserializer.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,11 @@ private Optional<String> toId(final JsonObject teaserObject) {
5252
}
5353

5454
private ArdFilmInfoDto createFilmInfo(final String id, final int numberOfClips) {
55-
final String url = String.format(ArdConstants.ITEM_URL, id);
55+
String refId = id;
56+
if(id.contains(":")) {
57+
refId = id.replace(":", "%3A");
58+
}
59+
final String url = String.format(ArdConstants.ITEM_URL, refId);
5660
return new ArdFilmInfoDto(id, url, numberOfClips);
5761
}
5862
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package mServer.crawler.sender.ard.json;
2+
3+
import com.google.gson.JsonArray;
4+
import com.google.gson.JsonDeserializationContext;
5+
import com.google.gson.JsonDeserializer;
6+
import com.google.gson.JsonElement;
7+
import mServer.crawler.sender.ard.ArdConstants;
8+
import mServer.crawler.sender.base.CrawlerUrlDTO;
9+
import mServer.crawler.sender.base.JsonUtils;
10+
11+
import java.lang.reflect.Type;
12+
import java.util.*;
13+
14+
public class ArdTopicGroupsDeserializer implements JsonDeserializer<Set<CrawlerUrlDTO>> {
15+
private static final String ELEMENT_WIDGETS = "widgets";
16+
private static final String ELEMENT_LINKS = "links";
17+
private static final String ELEMENT_TARGET = "self";
18+
private static final String ELEMENT_HREF = "href";
19+
private static final int MAX_PAGE_SIZE = ArdConstants.TOPIC_PAGE_SIZE;
20+
21+
22+
@Override
23+
public Set<CrawlerUrlDTO> deserialize(
24+
JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
25+
final Set<CrawlerUrlDTO> result = new HashSet<>();
26+
27+
if (JsonUtils.hasElements(jsonElement, ELEMENT_WIDGETS)) {
28+
final JsonArray widgets = jsonElement.getAsJsonObject().getAsJsonArray(ELEMENT_WIDGETS);
29+
widgets.forEach(widget -> parseWidget(widget.getAsJsonObject()).ifPresent(result::add));
30+
}
31+
32+
return result;
33+
}
34+
35+
private Optional<CrawlerUrlDTO> parseWidget(final JsonElement compilation) {
36+
Optional<String> totalElements = JsonUtils.getElementValueAsString(compilation, "pagination", "totalElements");
37+
if (totalElements.isEmpty() || totalElements.get() == null || totalElements.get().trim().isEmpty() || totalElements.get().trim().equalsIgnoreCase("0")) {
38+
return Optional.empty();
39+
}
40+
if (JsonUtils.hasElements(compilation, ELEMENT_LINKS)) {
41+
final JsonElement selfLink =
42+
compilation.getAsJsonObject().get(ELEMENT_LINKS).getAsJsonObject().get(ELEMENT_TARGET);
43+
final Optional<String> url = JsonUtils.getElementValueAsString(selfLink, ELEMENT_HREF);
44+
45+
if (url.isPresent()) {
46+
String x = url.get().replaceAll("pageSize=\\d+", "pageSize="+MAX_PAGE_SIZE);
47+
return Optional.of(new CrawlerUrlDTO(x));
48+
}
49+
}
50+
51+
return Optional.empty();
52+
}
53+
}

src/main/java/mServer/crawler/sender/ard/json/ArdTopicsLetterDeserializer.java

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ public class ArdTopicsLetterDeserializer implements JsonDeserializer<PaginationU
2727
private static final String ELEMENT_PUBLICATION_SERVICE = "publicationService";
2828
private static final String ATTRIBUTE_NAME = "name";
2929

30-
private static final String ATTRIBUTE_ID = "id";
31-
3230
@Override
3331
public PaginationUrlDto deserialize(
3432
final JsonElement jsonElement, final Type type, final JsonDeserializationContext context) {
@@ -72,25 +70,10 @@ private int getJsonElementAsIntOrNullIfNotExist(final JsonElement element) {
7270
private Set<CrawlerUrlDTO> parseTeaser(final JsonObject teaserObject) {
7371
final Set<CrawlerUrlDTO> results = new HashSet<>();
7472

75-
final Optional<String> id;
76-
77-
if (JsonUtils.checkTreePath(teaserObject, ELEMENT_LINKS, ELEMENT_TARGET)) {
78-
final JsonObject targetObject =
79-
teaserObject.get(ELEMENT_LINKS).getAsJsonObject().get(ELEMENT_TARGET).getAsJsonObject();
80-
id = JsonUtils.getAttributeAsString(targetObject, ATTRIBUTE_ID);
81-
} else {
82-
id = JsonUtils.getAttributeAsString(teaserObject, ATTRIBUTE_ID);
73+
final Optional<String> urlToGroup = JsonUtils.getElementValueAsString(teaserObject, ELEMENT_LINKS, ELEMENT_TARGET, "href");
74+
if (isRelevant(teaserObject) && urlToGroup.isPresent()) {
75+
results.add(new CrawlerUrlDTO(urlToGroup.get()));
8376
}
84-
85-
if (isRelevant(teaserObject)) {
86-
id.ifPresent(
87-
nonNullId ->
88-
results.add(
89-
new CrawlerUrlDTO(
90-
String.format(
91-
ArdConstants.TOPIC_URL, nonNullId, ArdConstants.TOPIC_PAGE_SIZE))));
92-
}
93-
9477
return results;
9578
}
9679

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package mServer.crawler.sender.ard.tasks;
2+
3+
import com.google.gson.reflect.TypeToken;
4+
import jakarta.ws.rs.client.WebTarget;
5+
import java.lang.reflect.Type;
6+
import java.util.HashSet;
7+
import java.util.concurrent.ConcurrentLinkedQueue;
8+
9+
import mServer.crawler.sender.MediathekReader;
10+
import mServer.crawler.sender.ard.json.ArdTopicGroupsDeserializer;
11+
import mServer.crawler.sender.base.AbstractRecursivConverterTask;
12+
import mServer.crawler.sender.base.CrawlerUrlDTO;
13+
14+
public class ArdTopicGroupsTask extends ArdTaskBase<CrawlerUrlDTO, CrawlerUrlDTO> {
15+
private static final Type DTO_TYPE_TOKEN =
16+
new TypeToken<HashSet<CrawlerUrlDTO>>() {}.getType();
17+
18+
public ArdTopicGroupsTask(
19+
final MediathekReader crawler,
20+
final ConcurrentLinkedQueue<CrawlerUrlDTO> urlToCrawlDtos) {
21+
super(crawler, urlToCrawlDtos);
22+
registerJsonDeserializer(DTO_TYPE_TOKEN, new ArdTopicGroupsDeserializer());
23+
}
24+
25+
@Override
26+
protected AbstractRecursivConverterTask<CrawlerUrlDTO, CrawlerUrlDTO> createNewOwnInstance(
27+
final ConcurrentLinkedQueue<CrawlerUrlDTO> aElementsToProcess) {
28+
return new ArdTopicGroupsTask(crawler, aElementsToProcess);
29+
}
30+
31+
@Override
32+
protected void processRestTarget(final CrawlerUrlDTO aDTO, final WebTarget aTarget) {
33+
taskResults.addAll(deserialize(aTarget, DTO_TYPE_TOKEN));
34+
}
35+
36+
37+
}

src/main/java/mServer/crawler/sender/ard/tasks/ArdTopicPageTask.java

Lines changed: 4 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -34,80 +34,7 @@ public class ArdTopicPageTask extends ArdTaskBase<ArdFilmInfoDto, CrawlerUrlDTO>
3434
private static final Set<String> TOPICS_LOAD_ALL_PAGES = new HashSet<>();
3535

3636
static {
37-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3N3ci5kZS8yNDEwMzE1Ng");
38-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3N3ci5kZS9zZGIvc3RJZC8xMzM3");
39-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3N3ci5kZS9zZGIvc3RJZC8xMjY4");
40-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3N3ci5kZS9zZGIvc3RJZC8xMzA1");
41-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3N3ci5kZS8yNDEwMzIzNA");
42-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3N3ci5kZS8yNDEwMzAzNA");
43-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy8yOGEwMzU4Yi00N2ViLTQ0MDktOGFmZi02ZjVkMDE5NDA2NDc");
44-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy8wYTNlMzRiYy01OWRhLTRjY2UtOTJlOS01MTAxMjAzZmMzMWM");
45-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3dkci5kZS93ZHJyZXRybw");
46-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3dkci5kZS93ZHJyZXRyb3NwZXppYWw");
47-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3dkci5kZS93ZHJyZXRyb3Nwb3J0");
48-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3NyLW9ubGluZS5kZS9SRVRSTy1BUw");
49-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3NyLW9ubGluZS5kZS9SRVRSTy1EU0Q");
50-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3NyLW9ubGluZS5kZS9SRVRSTy1IRA");
51-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3NyLW9ubGluZS5kZS9SRVRSTy1JRA");
52-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3NyLW9ubGluZS5kZS9SRVRSTy1XTQ");
53-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3JiYi5kZS9ha3R1ZWxsZXMtbWFnYXppbg");
54-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3JiYi5kZS9iZXJpY2h0ZS1kb2t1cy1yZXBvcnRhZ2Vu");
55-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3JiYi5kZS9iZXJsaW4tc3RlbGx0LXZvcg");
56-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3JiYi1vbmxpbmUuZGUvYmVybGluZXItYWJlbmRzY2hhdQ");
57-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3JiYi5kZS9kYXMtcHJvZmls");
58-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3JiYi5kZS9tb3NhaWs");
59-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3JiYi5kZS93aWUtaWNoLWFuZ2VmYW5nZW4taGFiZQ");
60-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL25kci5kZS80NTkx");
61-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL25kci5kZS80NTg3");
62-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2hyLW9ubGluZS8zODIyMDA5Nw");
63-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2hyLW9ubGluZS8zODIyMDEzNQ");
64-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2hyLW9ubGluZS8zODIyMDA5NQ");
65-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2hyLW9ubGluZS8zODIyMDA5Ng");
66-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3JhZGlvYnJlbWVuLmRlL2IwYTJlZWFlLWI2NjAtNDI5Yi05ZTE3LTM5YzlkZDhmNTc4Ng");
67-
// Tatort
68-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhdG9ydA");
69-
// Filme im Ersten
70-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2Rhc2Vyc3RlLmRlL2Zlcm5zZWhmaWxtZSBpbSBlcnN0ZW4");
71-
// Sportschau
72-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2Rhc2Vyc3RlLmRlL3Nwb3J0c2NoYXU");
73-
// temporary load all => remove if old entries exists
74-
// MDR in aller Freundschaft
75-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL21kci5kZS9zZW5kZXJlaWhlbi9zdGFmZmVsc2VyaWUtaW4tYWxsZXItZnJldW5kc2NoYWZ0");
76-
// Verrückt nach Meer
77-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy92ZXJydWVja3QtbmFjaC1tZWVy");
78-
// Dahoam is dahoam
79-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy9icm9hZGNhc3RTZXJpZXM6L2JyZGUvZmVybnNlaGVuL2JheWVyaXNjaGVzLWZlcm5zZWhlbi9zZW5kdW5nZW4vZGFob2FtLWlzLWRhaG9hbQ");
80-
// Rote Rosen
81-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3dkci5kZS9vbmUvcm90ZXJvc2Vu");
82-
// Sturm der Liebe
83-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2Rhc2Vyc3RlLmRlL3N0dXJtIGRlciBsaWViZQ");
84-
// in aller freundschaft -die jungen ärzte
85-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL21kci5kZS9zZW5kZXJlaWhlbi9zdGFmZmVsc2VyaWUtaW4tYWxsZXItZnJldW5kc2NoYWZ0LWRpZS1qdW5nZW4tYWVyenRl");
86-
// tokyo vice
87-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2Rhc2Vyc3RlLmRlL3Rva3lvLXZpY2U");
88-
// um Himmels willen
89-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3dkci5kZS9VbSBIaW1tZWxzIFdpbGxlbiBPTkU");
90-
// Rentnercops
91-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2Rhc2Vyc3RlLmRlL3JlbnRuZXJjb3Bz");
92-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL3dkci5kZS9yZW50bmVyY29wcw");
93-
// alles klara
94-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL21kci5kZS9zZW5kZXJlaWhlbi9zdGFmZmVsc2VyaWUtYWxsZXMta2xhcmE");
95-
// bergauf bergab
96-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy9icm9hZGNhc3RTZXJpZXM6L2JyZGUvZmVybnNlaGVuL2JheWVyaXNjaGVzLWZlcm5zZWhlbi9zZW5kdW5nZW4vYmVyZ2F1Zi1iZXJnYWI");
97-
// HIP
98-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL25kci5kZS80NzQ0");
99-
// Nordstory
100-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL25kci5kZS8xNDk1");
101-
// Dr.Mertens
102-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL21kci5kZS9zZW5kZXJlaWhlbi8wNGVkZmFlOS1hYTBlLTQ4MjEtYTk4Mi0yNmRiZDdjZjEyZTY");
103-
// BR Filme Serien
104-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy9icm9hZGNhc3RTZXJpZXM6L2JyZGUvZmVybnNlaGVuL2JheWVyaXNjaGVzLWZlcm5zZWhlbi9zZW5kdW5nZW4vc3BpZWxmaWxtZS1pbS1icg");
105-
// hubert ohne staller
106-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy9ici1odWJlcnQtb2huZS1zdGFsbGVy");
107-
// lohnt sich das
108-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy9mYzkyMWQxMC1iY2VjLTQxZmYtOWY3ZC05ODI0YzM0ZDY1MmY");
109-
// Morden im Norden
110-
TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL25kci5kZS80OTU1");
37+
// example: TOPICS_LOAD_ALL_PAGES.add("Y3JpZDovL2Rhc2Vyc3RlLmRlL3Nwb3J0c2NoYXU");
11138
}
11239

11340
public ArdTopicPageTask(MediathekReader aCrawler,
@@ -186,7 +113,9 @@ private String changePageNumber(final WebTarget aTarget, final int newPageNumber
186113
.getUri()
187114
.getRawQuery()
188115
.replaceAll(
189-
URL_PAGE_NUMBER_REPLACE_REGEX, PAGE_NUMBER_URL_ENCODED + newPageNumber))
116+
URL_PAGE_NUMBER_REPLACE_REGEX, PAGE_NUMBER_URL_ENCODED + newPageNumber)
117+
.replaceAll(
118+
"pageNumber=\\d+", "pageNumber=" + newPageNumber))
190119
.build()
191120
.toString()
192121
: aTarget.queryParam(PAGE_NUMBER, newPageNumber).getUri().toString();

0 commit comments

Comments
 (0)