Skip to content

Commit 67a478b

Browse files
committed
SR: fix missing host in videoUrl
1 parent 942fe94 commit 67a478b

File tree

5 files changed

+755
-22
lines changed

5 files changed

+755
-22
lines changed

src/main/java/de/mediathekview/mserver/crawler/sr/SrCrawler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ protected RecursiveTask<Set<Film>> createCrawlerTask() {
5858
ServerMessages.DEBUG_ALL_SENDUNG_FOLGEN_COUNT, getSender().getName(), filmDtos.size());
5959
getAndSetMaxCount(filmDtos.size());
6060

61-
return new SrFilmDetailTask(this, filmDtos);
61+
return new SrFilmDetailTask(this, filmDtos, SrConstants.URL_BASE);
6262
} catch (final InterruptedException ex) {
6363
LOG.debug("{} crawler interrupted.", getSender().getName(), ex);
6464
Thread.currentThread().interrupt();

src/main/java/de/mediathekview/mserver/crawler/sr/tasks/SrFilmDetailTask.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import de.mediathekview.mserver.daten.Resolution;
88
import de.mediathekview.mserver.base.utils.DateUtils;
99
import de.mediathekview.mserver.base.utils.HtmlDocumentUtils;
10+
import de.mediathekview.mserver.base.utils.UrlUtils;
1011
import de.mediathekview.mserver.crawler.ard.json.ArdVideoInfoDto;
1112
import de.mediathekview.mserver.crawler.ard.json.ArdVideoInfoJsonDeserializer;
1213
import de.mediathekview.mserver.crawler.basic.AbstractCrawler;
@@ -44,10 +45,14 @@ public class SrFilmDetailTask extends AbstractDocumentTask<Film, SrTopicUrlDTO>
4445
private static final String VIDEO_DETAIL_ATTRIBUTE = "data-mediacollection-ardplayer";
4546
private static final String VIDEO_DETAIL_SELECTOR = "div[" + VIDEO_DETAIL_ATTRIBUTE + "]";
4647

48+
private final String baseUrl;
49+
4750
public SrFilmDetailTask(
4851
final AbstractCrawler crawler,
49-
final Queue<SrTopicUrlDTO> urlToCrawlDTOs) {
52+
final Queue<SrTopicUrlDTO> urlToCrawlDTOs,
53+
final String aBaseUrl) {
5054
super(crawler, urlToCrawlDTOs);
55+
baseUrl = aBaseUrl;
5156
}
5257

5358
private static Optional<String> parseDescription(final Document aDocument) {
@@ -185,7 +190,7 @@ protected void processDocument(final SrTopicUrlDTO aUrlDTO, final Document aDocu
185190
@Override
186191
protected AbstractUrlTask<Film, SrTopicUrlDTO> createNewOwnInstance(
187192
final Queue<SrTopicUrlDTO> aURLsToCrawl) {
188-
return new SrFilmDetailTask(crawler, aURLsToCrawl);
193+
return new SrFilmDetailTask(crawler, aURLsToCrawl, baseUrl);
189194
}
190195

191196
/**
@@ -223,6 +228,7 @@ private Optional<ArdVideoInfoDto> parseUrls(final Document aDocument) {
223228

224229
String url = videoDetailUrl.get();
225230
url = addMissingProtocol(url);
231+
url = UrlUtils.addDomainIfMissing(url, baseUrl);
226232

227233
try {
228234
final ArdVideoInfoDto dto =

src/test/java/de/mediathekview/mserver/crawler/sr/tasks/SrFilmDetailTaskNoFilmTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public void test() {
9494

9595
private Set<Film> executeTask(final SrCrawler crawler, final String aTheme, final String aRequestUrl) {
9696
return new SrFilmDetailTask(
97-
crawler, createCrawlerUrlDto(aTheme, aRequestUrl))
97+
crawler, createCrawlerUrlDto(aTheme, aRequestUrl), getWireMockBaseUrlSafe())
9898
.invoke();
9999
}
100100
}

src/test/java/de/mediathekview/mserver/crawler/sr/tasks/SrFilmDetailTaskTest.java

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
package de.mediathekview.mserver.crawler.sr.tasks;
22

3+
import static org.hamcrest.CoreMatchers.equalTo;
4+
import static org.hamcrest.CoreMatchers.notNullValue;
5+
import static org.hamcrest.MatcherAssert.assertThat;
6+
7+
import de.mediathekview.mserver.base.webaccess.JsoupConnection;
8+
import de.mediathekview.mserver.crawler.sr.SrCrawler;
39
import de.mediathekview.mserver.daten.Film;
410
import de.mediathekview.mserver.daten.GeoLocations;
511
import de.mediathekview.mserver.daten.Sender;
6-
import de.mediathekview.mserver.base.webaccess.JsoupConnection;
7-
import de.mediathekview.mserver.crawler.sr.SrCrawler;
812
import de.mediathekview.mserver.testhelper.AssertFilm;
913
import de.mediathekview.mserver.testhelper.JsoupMock;
14+
import java.time.Duration;
15+
import java.time.LocalDateTime;
16+
import java.util.Arrays;
17+
import java.util.Collection;
18+
import java.util.Set;
1019
import org.junit.Before;
1120
import org.junit.Test;
1221
import org.junit.runner.RunWith;
1322
import org.junit.runners.Parameterized;
1423
import org.mockito.Mock;
1524
import org.mockito.MockitoAnnotations;
1625

17-
import java.time.Duration;
18-
import java.time.LocalDateTime;
19-
import java.util.Arrays;
20-
import java.util.Collection;
21-
import java.util.Set;
22-
23-
import static org.hamcrest.CoreMatchers.equalTo;
24-
import static org.hamcrest.CoreMatchers.notNullValue;
25-
import static org.hamcrest.MatcherAssert.assertThat;
26-
2726
@RunWith(Parameterized.class)
2827
public class SrFilmDetailTaskTest extends SrTaskTestBase {
2928

@@ -43,11 +42,6 @@ public class SrFilmDetailTaskTest extends SrTaskTestBase {
4342

4443
@Mock JsoupConnection jsoupConnection;
4544

46-
@Before
47-
public void setUp() {
48-
MockitoAnnotations.openMocks(this);
49-
}
50-
5145
public SrFilmDetailTaskTest(
5246
final String aRequestUrl,
5347
final String aFilmPageFile,
@@ -111,9 +105,29 @@ public static Collection<Object[]> data() {
111105
"https://srstorage01-a.akamaihd.net/Video/FS/STH/Schengen_-_Wie_entstand_das_Europa_ohne_Grenzen_SENDEFASSUNG_L.mp4",
112106
"https://srstorage01-a.akamaihd.net/Video/FS/STH/Schengen_-_Wie_entstand_das_Europa_ohne_Grenzen_SENDEFASSUNG_P.mp4"
113107
},
108+
{
109+
"https://www.sr-mediathek.de/index.php?seite=7&id=77119",
110+
"/sr/sr_film_page3_missing_host_in_url.html",
111+
"/sr_player/mc.php?id=77119&tbl=&pnr=0&hd=0&devicetype=",
112+
"/sr/sr_film_video_details2.json",
113+
"SAARTHEMA",
114+
"SAARTHEMA - Schengen",
115+
LocalDateTime.of(2019, 8, 15, 0, 0, 0),
116+
Duration.ofMinutes(43).plusSeconds(18),
117+
"An jeder Grenze der Welt ist es ein Begriff: Schengen heißt eines der wichtigsten Visa, die es heute gibt. Am 14. Juni 1985 unterzeichneten die Vertreter der EG-Staaten Deutschland, Frankreich, Belgien, Niederlande und Luxemburg das Schengener-Abkommen, das im Laufe der Jahre von fast allen EU-Staaten ratifiziert wurde und uns in Europa offene Grenzen gebracht hat.",
118+
"https://www.sr-mediathek.de/sr_player/ut.php?file=STH_20190815.xml",
119+
"https://srstorage01-a.akamaihd.net/Video/FS/STH/Schengen_-_Wie_entstand_das_Europa_ohne_Grenzen_SENDEFASSUNG_M.mp4",
120+
"https://srstorage01-a.akamaihd.net/Video/FS/STH/Schengen_-_Wie_entstand_das_Europa_ohne_Grenzen_SENDEFASSUNG_L.mp4",
121+
"https://srstorage01-a.akamaihd.net/Video/FS/STH/Schengen_-_Wie_entstand_das_Europa_ohne_Grenzen_SENDEFASSUNG_P.mp4"
122+
}
114123
});
115124
}
116125

126+
@Before
127+
public void setUp() {
128+
MockitoAnnotations.openMocks(this);
129+
}
130+
117131
@Test
118132
public void test() {
119133
jsoupConnection =
@@ -147,6 +161,6 @@ public void test() {
147161

148162
private Set<Film> executeTask(
149163
final SrCrawler crawler, final String aTheme, final String aRequestUrl) {
150-
return new SrFilmDetailTask(crawler, createCrawlerUrlDto(aTheme, aRequestUrl)).invoke();
164+
return new SrFilmDetailTask(crawler, createCrawlerUrlDto(aTheme, aRequestUrl), getWireMockBaseUrlSafe()).invoke();
151165
}
152166
}

0 commit comments

Comments
 (0)