-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
9,206 additions
and
18,568 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
52 changes: 52 additions & 0 deletions
52
src/test/java/de/mediathekview/mserver/crawler/orfon/OrfOnAZTaskTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package de.mediathekview.mserver.crawler.orfon; | ||
|
||
import static org.junit.Assert.assertTrue; | ||
import static org.junit.jupiter.api.Assertions.assertIterableEquals; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.Queue; | ||
import java.util.Set; | ||
import java.util.concurrent.ConcurrentLinkedQueue; | ||
|
||
import org.junit.Test; | ||
|
||
import de.mediathekview.mserver.crawler.orfon.task.OrfOnAZTask; | ||
import de.mediathekview.mserver.testhelper.WireMockTestBase; | ||
|
||
import static java.util.Arrays.asList; | ||
|
||
|
||
public class OrfOnAZTaskTest extends WireMockTestBase { | ||
|
||
@Test | ||
public void test() { | ||
setupSuccessfulJsonResponse("/azTask", "/orfOn/letter_1.json"); | ||
Set<OrfOnBreadCrumsUrlDTO> result = executeTask("/azTask"); | ||
List<OrfOnBreadCrumsUrlDTO> expectedResult = generateExpectedResult(); | ||
assertTrue(result.size() == 9); | ||
assertIterableEquals(result, expectedResult); | ||
} | ||
|
||
private Set<OrfOnBreadCrumsUrlDTO> executeTask(String... requestUrl) { | ||
final Queue<OrfOnBreadCrumsUrlDTO> input = new ConcurrentLinkedQueue<>(); | ||
for (String url : requestUrl) { | ||
input.add(new OrfOnBreadCrumsUrlDTO("",getWireMockBaseUrlSafe() + url)); | ||
} | ||
return new OrfOnAZTask(OrfOnEpisodeTaskTest.createCrawler(), input).invoke(); | ||
} | ||
|
||
private List<OrfOnBreadCrumsUrlDTO> generateExpectedResult() { | ||
ArrayList<OrfOnBreadCrumsUrlDTO> expectedResult = new ArrayList<>(asList( | ||
new OrfOnBreadCrumsUrlDTO("", "https://api-tvthek.orf.at/api/v4.3/profile/13892414/episodes?limit=200"), | ||
new OrfOnBreadCrumsUrlDTO("", "https://api-tvthek.orf.at/api/v4.3/profile/8850620/episodes?limit=200"), | ||
new OrfOnBreadCrumsUrlDTO("", "https://api-tvthek.orf.at/api/v4.3/profile/13895942/episodes?limit=200"), | ||
new OrfOnBreadCrumsUrlDTO("", "https://api-tvthek.orf.at/api/v4.3/profile/8850612/episodes?limit=200"), | ||
new OrfOnBreadCrumsUrlDTO("", "https://api-tvthek.orf.at/api/v4.3/profile/13890803/episodes?limit=200"), | ||
new OrfOnBreadCrumsUrlDTO("", "https://api-tvthek.orf.at/api/v4.3/profile/13894465/episodes?limit=200"), | ||
new OrfOnBreadCrumsUrlDTO("", "https://api-tvthek.orf.at/api/v4.3/profile/13732047/episodes?limit=200"), | ||
new OrfOnBreadCrumsUrlDTO("", "https://api-tvthek.orf.at/api/v4.3/profile/13895899/episodes?limit=200"), | ||
new OrfOnBreadCrumsUrlDTO("", "https://api-tvthek.orf.at/api/v4.3/profile/13887359/episodes?limit=200"))); | ||
return expectedResult; | ||
} | ||
} |
142 changes: 142 additions & 0 deletions
142
src/test/java/de/mediathekview/mserver/crawler/orfon/OrfOnEpisodeTaskTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
package de.mediathekview.mserver.crawler.orfon; | ||
|
||
import static org.junit.Assert.assertNotNull; | ||
import static org.junit.Assert.assertTrue; | ||
import static org.junit.jupiter.api.Assertions.assertEquals; | ||
|
||
|
||
import java.net.MalformedURLException; | ||
import java.net.URL; | ||
import java.time.LocalDateTime; | ||
import java.util.ArrayList; | ||
import java.util.Collection; | ||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.Optional; | ||
import java.util.Queue; | ||
import java.util.Set; | ||
import java.util.concurrent.ConcurrentLinkedQueue; | ||
import java.util.concurrent.ForkJoinPool; | ||
|
||
import org.junit.Test; | ||
|
||
import de.mediathekview.mlib.daten.FilmUrl; | ||
import de.mediathekview.mlib.daten.GeoLocations; | ||
import de.mediathekview.mlib.daten.Resolution; | ||
import de.mediathekview.mlib.messages.listener.MessageListener; | ||
import de.mediathekview.mserver.base.config.MServerConfigManager; | ||
import de.mediathekview.mserver.crawler.orfon.task.OrfOnEpisodeTask; | ||
import de.mediathekview.mserver.progress.listeners.SenderProgressListener; | ||
|
||
|
||
public class OrfOnEpisodeTaskTest extends OrfOnEpisodesTaskTest { | ||
|
||
@Test | ||
public void test() { | ||
setupSuccessfulJsonResponse("/episode1", "/orfOn/episode_1.json"); | ||
setupSuccessfulJsonResponse("/episode2", "/orfOn/episode_2.json"); | ||
Set<OrfOnVideoInfoDTO> result = executeTask("/episode1", "/episode2"); | ||
Map<String, OrfOnVideoInfoDTO> expectedResult = generateExpectedResult(); | ||
assertTrue(result.size() == 2); | ||
for (OrfOnVideoInfoDTO actual : result) { | ||
OrfOnVideoInfoDTO expected = expectedResult.get(actual.getId().get()); | ||
assertNotNull(expected); | ||
assertVideoInfoDto(expected, actual); | ||
} | ||
} | ||
|
||
private Set<OrfOnVideoInfoDTO> executeTask(String... requestUrl) { | ||
final Queue<OrfOnBreadCrumsUrlDTO> input = new ConcurrentLinkedQueue<>(); | ||
for (String url : requestUrl) { | ||
input.add(new OrfOnBreadCrumsUrlDTO("",getWireMockBaseUrlSafe() + url)); | ||
} | ||
return new OrfOnEpisodeTask(OrfOnEpisodeTaskTest.createCrawler(), input).invoke(); | ||
} | ||
|
||
private Map<String, OrfOnVideoInfoDTO> generateExpectedResult() { | ||
try { | ||
Map<String,OrfOnVideoInfoDTO> expectedResult = Map.of( | ||
"14207792", new OrfOnVideoInfoDTO( | ||
Optional.of("14207792"), | ||
Optional.of("ORF 1"), | ||
Optional.of("Servus Kasperl: Kasperl & Strolchi: Koko und Maximilian"), | ||
Optional.of("Servus Kasperl: Kasperl und Strolchi: Koko und Maximilian vom 04.01.2024 um 07:07 Uhr"), | ||
Optional.of("Servus Kasperl"), | ||
Optional.of("ORF Kids | Servus Kasperl"), | ||
Optional.of(LocalDateTime.of(2024,01,04,07,07,38)), | ||
Optional.of(java.time.Duration.parse("PT21M56S")), | ||
Optional.of("Kasperl und Strolchi besuchen den Zirkusdirektor des Zirkus Kindleroni. Dieser ist verzweifelt, weil sein Stallbursche krank ist und er die ganze Arbeit alleine kaum schaffen kann. Doch da kommt Hilfe durch Maximilian, der Arbeit sucht. Sofort darf Maximilian die Stelle als Stallbursche antreten. Eine seiner Aufgaben ist es auch auf Koko, den Papagei des Direktors, aufzupassen. Dieser ist in Gefahr, weil ein Räuber vor hat ihn zu stehlen.\r\n" | ||
+ "Bildquelle: ORF"), | ||
Optional.of(new URL("https://tvthek.orf.at/profile/Servus-Kasperl/3272601/Servus-Kasperl-Kasperl-Strolchi-Koko-und-Maximilian/14207792")), | ||
Optional.of(List.of(GeoLocations.GEO_NONE)), | ||
Optional.of(new URL("https://api-tvthek.orf.at/api/v4.3/subtitle/885340")), | ||
Optional.of(Map.of(Resolution.NORMAL, new FilmUrl("https://apasfiis.sf.apa.at/ipad/cms-worldwide/2024-01-04_0707_tl_01_Servus-Kasperl-_____14207792__o__6332192865__s15543049_9__ORF1HD_07081012P_07300711P_QXB.mp4/playlist.m3u8", 0L))), | ||
Optional.of(Set.of( | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0166/92/07aead27b4c0b09b36750db54b8ce15ff9b8499c.ttml"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0166/92/4dd6932d7cf6ceaad90a536c3e03981267e32941.vtt"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0166/92/09477f02c5e0392ecd2f717461ed136237d70050.srt"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0166/92/808e2453d38fd8a5e4fab4794cc034ee89fcfd9c.xml"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0166/92/8547597f31429d87a5418918ae471b44fcf9ab55.smi") | ||
))), | ||
"14207790", new OrfOnVideoInfoDTO( | ||
Optional.of("14207790"), | ||
Optional.of("ORF Kids"), | ||
Optional.of("ABC Bär"), | ||
Optional.of("ABC Bär vom 04.01.2024 um 06:45 Uhr"), | ||
Optional.of("ABC-Bär"), | ||
Optional.of("ORF Kids | Lernen mit Spaß"), | ||
Optional.of(LocalDateTime.of(2024,01,04,06,45)), | ||
Optional.of(java.time.Duration.parse("PT13M29S")), | ||
Optional.of("Der ABC Bär und seine Tierfreunde reisen mit ihrem lustigen Baumhaus durch das Land, um ihre Zahl- und Buchstabenspiele aufzuführen und erleben dabei jede Menge spannender Geschichten.\r\n" | ||
+ "Bildquelle: ORF"), | ||
Optional.of(new URL("https://tvthek.orf.at/profile/ABC-Baer/4611813/ABC-Baer/14207790")), | ||
Optional.of(List.of(GeoLocations.GEO_AT)), | ||
Optional.of(new URL("https://api-tvthek.orf.at/api/v4.3/subtitle/885332")), | ||
Optional.of(Map.of(Resolution.NORMAL, new FilmUrl("https://apasfiis.sf.apa.at/ipad/cms-austria/2024-01-04_0645_tl_00_ABC-Baer_____14207790__o__4346842346__s15542921_1__KIDS1_06363007P_06500003P_QXB.mp4/playlist.m3u8", 0L))), | ||
Optional.of(Set.of( | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0166/92/b682365a2a3fd1d45a2f029a597735a9df5b7524.ttml"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0166/92/20c53ed98f58a5045da663191516bc7fbf09e3d2.srt"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0166/92/c50d4ed5c4f912e8d7f7b5e94cd9155bd31b247d.vtt"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0166/92/1f178ebeae4aea09e03697e85082701de6df436c.xml"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0166/92/7096926d900006d0d196e1dab952a62200118c2c.smi") | ||
))) | ||
); | ||
return expectedResult; | ||
} catch (MalformedURLException e) { | ||
e.printStackTrace(); | ||
} | ||
return null; | ||
} | ||
|
||
protected static void assertVideoInfoDto(OrfOnVideoInfoDTO expected, OrfOnVideoInfoDTO actual) { | ||
assertEquals(expected.getAired(), actual.getAired()); | ||
assertEquals(expected.getChannel(), actual.getChannel()); | ||
assertEquals(expected.getDescription(), actual.getDescription()); | ||
assertEquals(expected.getDuration(), actual.getDuration()); | ||
assertEquals(expected.getGeorestriction(), actual.getGeorestriction()); | ||
assertEquals(expected.getId(), actual.getId()); | ||
assertEquals(expected.getTitle(), actual.getTitle()); | ||
assertEquals(expected.getTitleWithDate(), actual.getTitleWithDate()); | ||
assertEquals(expected.getTopic(), actual.getTopic()); | ||
assertEquals(expected.getTopicForArchive(), actual.getTopicForArchive()); | ||
assertEquals(expected.getWebsite(), actual.getWebsite()); | ||
assertEquals(expected.getVideoUrls().get(), actual.getVideoUrls().get()); | ||
assertEquals(expected.getSubtitleUrls(), actual.getSubtitleUrls()); | ||
if (expected.getSubtitleSource().isPresent()) { | ||
int subtitleSourceExpectedStringlength = expected.getSubtitleSource().get().toString().indexOf("subtitle"); | ||
int subtitleSourceActStringlength = actual.getSubtitleSource().get().toString().indexOf("subtitle"); | ||
assertTrue(subtitleSourceExpectedStringlength > 0 && subtitleSourceActStringlength > 0); | ||
assertEquals(expected.getSubtitleSource().get().toString().substring(subtitleSourceExpectedStringlength), actual.getSubtitleSource().get().toString().substring(subtitleSourceActStringlength)); // ignore localhost+port | ||
} | ||
} | ||
|
||
protected static OrfOnCrawler createCrawler() { | ||
final ForkJoinPool forkJoinPool = new ForkJoinPool(); | ||
final Collection<MessageListener> nachrichten = new ArrayList<>(); | ||
final Collection<SenderProgressListener> fortschritte = new ArrayList<>(); | ||
return new OrfOnCrawler(forkJoinPool, nachrichten, fortschritte, new MServerConfigManager("MServer-JUnit-Config.yaml")); | ||
} | ||
|
||
|
||
|
||
} |
127 changes: 127 additions & 0 deletions
127
src/test/java/de/mediathekview/mserver/crawler/orfon/OrfOnEpisodesTaskTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
package de.mediathekview.mserver.crawler.orfon; | ||
|
||
import static org.junit.Assert.assertNotNull; | ||
import static org.junit.Assert.assertTrue; | ||
|
||
import java.net.MalformedURLException; | ||
import java.net.URL; | ||
import java.time.LocalDateTime; | ||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.Optional; | ||
import java.util.Queue; | ||
import java.util.Set; | ||
import java.util.concurrent.ConcurrentLinkedQueue; | ||
|
||
import org.junit.Test; | ||
|
||
import de.mediathekview.mlib.daten.FilmUrl; | ||
import de.mediathekview.mlib.daten.GeoLocations; | ||
import de.mediathekview.mlib.daten.Resolution; | ||
import de.mediathekview.mserver.crawler.orfon.task.OrfOnEpisodesTask; | ||
import de.mediathekview.mserver.testhelper.WireMockTestBase; | ||
|
||
public class OrfOnEpisodesTaskTest extends WireMockTestBase { | ||
|
||
@Test | ||
public void test() { | ||
setupSuccessfulJsonResponse("/episodes", "/orfOn/episodes_3.json"); | ||
setupSuccessfulJsonResponse("/api/v4.3/subtitle/868782", "/orfOn/subtitle_868782.json"); | ||
Set<OrfOnVideoInfoDTO> result = executeTask("/episodes"); | ||
Map<String, OrfOnVideoInfoDTO> expectedResult = generateExpectedResult(); | ||
assertTrue(result.size() == 3); | ||
for (OrfOnVideoInfoDTO actual : result) { | ||
OrfOnVideoInfoDTO expected = expectedResult.get(actual.getId().get()); | ||
assertNotNull(expected); | ||
OrfOnEpisodeTaskTest.assertVideoInfoDto(expected, actual); | ||
} | ||
} | ||
|
||
private Set<OrfOnVideoInfoDTO> executeTask(String... requestUrl) { | ||
final Queue<OrfOnBreadCrumsUrlDTO> input = new ConcurrentLinkedQueue<>(); | ||
for (String url : requestUrl) { | ||
input.add(new OrfOnBreadCrumsUrlDTO("",getWireMockBaseUrlSafe() + url)); | ||
} | ||
return new OrfOnEpisodesTask(OrfOnEpisodeTaskTest.createCrawler(), input).invoke(); | ||
} | ||
|
||
private Map<String, OrfOnVideoInfoDTO> generateExpectedResult() { | ||
try { | ||
Map<String,OrfOnVideoInfoDTO> expectedResult = Map.of( | ||
"14201133", new OrfOnVideoInfoDTO( | ||
Optional.of("14201133"), | ||
Optional.of("ORF 1"), | ||
Optional.of("Wischen ist Macht: Alles für den Hugo"), | ||
Optional.of("Wischen ist Macht: Alles für den Hugo vom 14.11.2023 um 00:33 Uhr"), | ||
Optional.of("Wischen ist Macht"), | ||
Optional.of("Serie"), | ||
Optional.of(LocalDateTime.of(2023,11,14,00,33,03)), | ||
Optional.of(java.time.Duration.parse("PT24M50S")), | ||
Optional.of("Spezialauftrag für \"Dreck.Weg.Sendracek\": Die russische Botschafterin lädt zu einer Gala und"), | ||
Optional.of(new URL("https://tvthek.orf.at/profile/Wischen-ist-Macht/13891227/Wischen-ist-Macht-Alles-fuer-den-Hugo/14201133")), | ||
Optional.of(List.of(GeoLocations.GEO_AT)), | ||
Optional.of(new URL("https://api-tvthek.orf.at/api/v4.3/subtitle/868782")), | ||
Optional.of(Map.of(Resolution.NORMAL, new FilmUrl("https://apasfiis.sf.apa.at/ipad/cms-austria/2023-11-14_0033_in_01_Wischen-ist-Mac_____14201133__o__1340615864__s15523109_QXB.mp4/playlist.m3u8", 0L))), | ||
Optional.of(Set.of( | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/a1ab1313ca03ba35c75d39e08c59840bc97aba76.ttml"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/6cd8a1899f5b56f919a6d809fe001ce3acaf4ce8.smi"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/79738b7eb874c151cde04ec6367a444bd5999db1.srt"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/a0467e2fdfb637c00fe6a450f003cedcf70128fa.xml"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/4b1c81a007271ee90224a9555494148e3116a00e.vtt") | ||
)) | ||
), | ||
"14202094", new OrfOnVideoInfoDTO( | ||
Optional.of("14202094"), | ||
Optional.of("ORF 1"), | ||
Optional.of("Wischen ist Macht: Shit Happens"), | ||
Optional.of("Wischen ist Macht: Shit Happens vom 21.11.2023 um 00:04 Uhr"), | ||
Optional.of("Wischen ist Macht"), | ||
Optional.of("Wischen ist Macht"), | ||
Optional.of(LocalDateTime.of(2023,11,21,00,04,21)), | ||
Optional.of(java.time.Duration.parse("PT22M12S")), | ||
Optional.of("Dass Ex-Rockstar Johnny Woody gerade seinen Abgang ins Jenseits plant, passt Michelle gar nicht in den Kram - hat er ihr doch immer noch nicht die ausstehenden Honorare überwiesen. Johnny fängt sich jedoch wieder und \"Dreck:Weg.Sendracek\" treten ihren Dienst an. Bei der Arbeit findet Michelle heraus, dass Johnny eine 10.000 Dollar-Gitarre besitzt und er vielleicht doch nicht so knapp bei Kasse ist, woraufhin sie einen Plan schmiedet. Dann aber wird Michelle in die Beziehungskrise zwischen Johnny und seine Freundin Pamela hineingezogen, während seine Frau Janis gewohnt alkoholisiert durchs Haus geistert.\r\n" | ||
+ "Mit Ursula Strauss (Michelle Sendracek), Stefano Bernardin (Fernando Pablo Rigoberto Sanchez de la Luz), Zeynep Buyrac (Mira Petrenko), Manuel Sefciuc (Valentin Gradischnig), Lilian Jane Gartner (Zoe), Wolfram Berger (Johnny), Eva Maria Marold (Janis), Doris Hindinger (Pamela), Helmut Bohatsch (Bertram) u.a.\r\n" | ||
+ "Bildquelle: ORF/Fabio Eppensteiner"), | ||
Optional.of(new URL("https://tvthek.orf.at/profile/Wischen-ist-Macht/13891227/Wischen-ist-Macht-Shit-Happens/14202094")), | ||
Optional.of(List.of(GeoLocations.GEO_AT)), | ||
Optional.of(new URL("https://api-tvthek.orf.at/api/v4.3/subtitle/868782")), | ||
Optional.of(Map.of(Resolution.NORMAL, new FilmUrl("https://apasfiis.sf.apa.at/ipad/cms-austria/2023-11-21_0004_in_01_Wischen-ist-Mac_____14202094__o__1166314613__s15511282_QXB.mp4/playlist.m3u8", 0L))), | ||
Optional.of(Set.of( | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/a1ab1313ca03ba35c75d39e08c59840bc97aba76.ttml"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/6cd8a1899f5b56f919a6d809fe001ce3acaf4ce8.smi"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/79738b7eb874c151cde04ec6367a444bd5999db1.srt"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/a0467e2fdfb637c00fe6a450f003cedcf70128fa.xml"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/4b1c81a007271ee90224a9555494148e3116a00e.vtt") | ||
)) | ||
), | ||
"14202095", new OrfOnVideoInfoDTO( | ||
Optional.of("14202095"), | ||
Optional.of("ORF 1"), | ||
Optional.of("Wischen ist Macht: Fußball ist meine Religion"), | ||
Optional.of("Wischen ist Macht: Fußball ist meine Religion vom 21.11.2023 um 00:27 Uhr"), | ||
Optional.of("Wischen ist Macht"), | ||
Optional.of("Serie"), | ||
Optional.of(LocalDateTime.of(2023,11,21,00,27,17)), | ||
Optional.of(java.time.Duration.parse("PT25M49S")), | ||
Optional.of("Michelle und ihr Team rücken im Fußballstadion an"), | ||
Optional.of(new URL("https://tvthek.orf.at/profile/Wischen-ist-Macht/13891227/Wischen-ist-Macht-Fussball-ist-meine-Religion/14202095")), | ||
Optional.of(List.of(GeoLocations.GEO_AT)), | ||
Optional.of(new URL("https://api-tvthek.orf.at/api/v4.3/subtitle/868782")), | ||
Optional.of(Map.of(Resolution.NORMAL, new FilmUrl("https://apasfiis.sf.apa.at/ipad/cms-austria/2023-11-21_0027_in_01_Wischen-ist-Mac_____14202095__o__7468851165__s15511283_QXB.mp4/playlist.m3u8", 0L))), | ||
Optional.of(Set.of( | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/a1ab1313ca03ba35c75d39e08c59840bc97aba76.ttml"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/6cd8a1899f5b56f919a6d809fe001ce3acaf4ce8.smi"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/79738b7eb874c151cde04ec6367a444bd5999db1.srt"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/a0467e2fdfb637c00fe6a450f003cedcf70128fa.xml"), | ||
new URL("https://api-tvthek.orf.at/assets/subtitles/0162/100/4b1c81a007271ee90224a9555494148e3116a00e.vtt") | ||
)) | ||
)); | ||
return expectedResult; | ||
} catch (MalformedURLException e) { | ||
e.printStackTrace(); | ||
} | ||
return null; | ||
} | ||
|
||
|
||
} |
Oops, something went wrong.