diff --git a/src/main/java/de/mediathekview/mserver/base/Consts.java b/src/main/java/de/mediathekview/mserver/base/Consts.java index 1bcf0f682508351e524045a6e9866f03c04dc929..2da2d2a2aaa0ba77c741518393a8c090e21bf436 100644 --- a/src/main/java/de/mediathekview/mserver/base/Consts.java +++ b/src/main/java/de/mediathekview/mserver/base/Consts.java @@ -9,6 +9,7 @@ public final class Consts { public static final String ATTRIBUTE_CONTENT = "content"; public static final String ATTRIBUTE_HREF = "href"; + public static final String ATTRIBUTE_SRC = "src"; public static final String ATTRIBUTE_TITLE = "title"; private Consts() { diff --git a/src/main/java/de/mediathekview/mserver/crawler/ard/json/ArdMediaArrayToDownloadUrlsConverter.java b/src/main/java/de/mediathekview/mserver/crawler/ard/json/ArdMediaArrayToDownloadUrlsConverter.java index be0e3aedba69c6909bac5aa48c9c210efcb70680..a5a18af7050039f9d1071968a36b5182e32a47b8 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/ard/json/ArdMediaArrayToDownloadUrlsConverter.java +++ b/src/main/java/de/mediathekview/mserver/crawler/ard/json/ArdMediaArrayToDownloadUrlsConverter.java @@ -249,7 +249,9 @@ public class ArdMediaArrayToDownloadUrlsConverter { int qualityNumber; try { if (aQualityAsText.equals("auto")) { - qualityNumber = -1; + // Some films only contains "auto" quality with a m3u8-url + // treat quality "auto" as NORMAL though the m3u8-url is returned + return Optional.of(Resolution.NORMAL); } else { qualityNumber = Integer.parseInt(aQualityAsText); } diff --git a/src/main/java/de/mediathekview/mserver/crawler/ard/json/ArdVideoInfoJsonDeserializer.java b/src/main/java/de/mediathekview/mserver/crawler/ard/json/ArdVideoInfoJsonDeserializer.java index b3343486d3bbd838406fb6ae041d7847cf605204..1329ce962e322254a49bd8190192dbde305213cf 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/ard/json/ArdVideoInfoJsonDeserializer.java +++ b/src/main/java/de/mediathekview/mserver/crawler/ard/json/ArdVideoInfoJsonDeserializer.java @@ -1,19 +1,35 @@ package de.mediathekview.mserver.crawler.ard.json; -import java.lang.reflect.Type; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import de.mediathekview.mlib.daten.Resolution; +import de.mediathekview.mlib.tool.MVHttpClient; import de.mediathekview.mserver.crawler.basic.AbstractCrawler; +import de.mediathekview.mserver.crawler.basic.M3U8Dto; +import de.mediathekview.mserver.crawler.basic.M3U8Parser; +import java.io.IOException; +import java.lang.reflect.Type; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** - * Converts json with basic video from - * http://www.ardmediathek.de/play/media/[documentId]?devicetype=pc&features=flash to a map of - * {@link Resolution} with corresponding urls. + * Converts json with basic video from http://www.ardmediathek.de/play/media/[documentId]?devicetype=pc&features=flash to a map of {@link + * Resolution} with corresponding urls. */ public class ArdVideoInfoJsonDeserializer implements JsonDeserializer<ArdVideoInfoDTO> { + private static final String ELEMENT_SUBTITLE_URL = "_subtitleUrl"; + + private static final Logger LOG = LogManager.getLogger(ArdVideoInfoJsonDeserializer.class); + private final AbstractCrawler crawler; public ArdVideoInfoJsonDeserializer(final AbstractCrawler aCrawler) { @@ -29,9 +45,62 @@ public class ArdVideoInfoJsonDeserializer implements JsonDeserializer<ArdVideoIn videoInfo.setSubtitleUrl(subtitleElement.getAsString()); } - ArdMediaArrayToDownloadUrlsConverter.toDownloadUrls(aJsonElement, crawler).entrySet() - .forEach(e -> videoInfo.put(e.getKey(), e.getValue().toString())); + final Map<Resolution, URL> resolutionUrlMap = ArdMediaArrayToDownloadUrlsConverter.toDownloadUrls(aJsonElement, crawler); + + // if map contains only a m3u8 url, load the m3u8 file and use the containing urls + if (resolutionUrlMap.size() == 1 + && resolutionUrlMap.containsKey(Resolution.NORMAL) + && resolutionUrlMap.get(Resolution.NORMAL).getFile().endsWith("m3u8")) { + + loadM3U8(resolutionUrlMap); + } + + resolutionUrlMap.forEach((key, value) -> videoInfo.put(key, value.toString())); return videoInfo; } + private void loadM3U8(Map<Resolution, URL> resolutionUrlMap) { + final Optional<String> m3u8Content = readContent(resolutionUrlMap.get(Resolution.NORMAL)); + resolutionUrlMap.clear(); + if (m3u8Content.isPresent()) { + + M3U8Parser parser = new M3U8Parser(); + List<M3U8Dto> m3u8Data = parser.parse(m3u8Content.get()); + + m3u8Data.forEach( + entry -> { + Optional<Resolution> resolution = entry.getResolution(); + if (resolution.isPresent()) { + try { + resolutionUrlMap.put(resolution.get(), new URL(entry.getUrl())); + } catch (MalformedURLException e) { + LOG.error("ArdVideoInfoJsonDeserializer: invalid url " + entry.getUrl(), e); + } + } + }); + } + } + + /** + * reads an url. + * + * @param aUrl the url + * @return the content of the url + */ + private static Optional<String> readContent(final URL aUrl) { + OkHttpClient httpClient = MVHttpClient.getInstance().getHttpClient(); + Request request = new Request.Builder().url(aUrl).build(); + try (okhttp3.Response response = httpClient.newCall(request).execute()) { + if (response.isSuccessful()) { + return Optional.of(response.body().string()); + } else { + LOG.error( + String.format("ArdVideoInfoJsonDeserializer: Request '%s' failed: %s", aUrl, response.code())); + } + } catch (IOException ex) { + LOG.error("ArdVideoInfoJsonDeserializer: ", ex); + } + + return Optional.empty(); + } } diff --git a/src/main/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmInfoDto.java b/src/main/java/de/mediathekview/mserver/crawler/basic/FilmInfoDto.java similarity index 88% rename from src/main/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmInfoDto.java rename to src/main/java/de/mediathekview/mserver/crawler/basic/FilmInfoDto.java index 2cc7a30af50ae8bf40a113970310f5af56904075..a402b561c0f9b75071c7e3af993e7ebe9d467cdd 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmInfoDto.java +++ b/src/main/java/de/mediathekview/mserver/crawler/basic/FilmInfoDto.java @@ -1,10 +1,10 @@ -package de.mediathekview.mserver.crawler.rbb.parser; +package de.mediathekview.mserver.crawler.basic; import de.mediathekview.mserver.crawler.basic.CrawlerUrlDTO; import java.time.Duration; import java.time.LocalDateTime; -public class RbbFilmInfoDto extends CrawlerUrlDTO { +public class FilmInfoDto extends CrawlerUrlDTO { private String topic; private String title; @@ -13,7 +13,7 @@ public class RbbFilmInfoDto extends CrawlerUrlDTO { private String description; private String website; - public RbbFilmInfoDto(String aUrl) { + public FilmInfoDto(String aUrl) { super(aUrl); } diff --git a/src/main/java/de/mediathekview/mserver/crawler/basic/M3U8Parser.java b/src/main/java/de/mediathekview/mserver/crawler/basic/M3U8Parser.java index b44326f00dda5d8d66a3625cc9cdb196250f59b0..d11cb1b6897daaad32914d153627de46081f01d4 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/basic/M3U8Parser.java +++ b/src/main/java/de/mediathekview/mserver/crawler/basic/M3U8Parser.java @@ -6,23 +6,24 @@ import java.util.List; import java.util.Optional; /** - * Parser für M3U8-Dateien + * Parses M3U8 files. */ public class M3U8Parser { + public List<M3U8Dto> parse(String aM3U8Data) { List<M3U8Dto> result = new ArrayList<>(); - + List<String[]> pairs = getLinePairs(aM3U8Data); - for(String[] pair : pairs) { + for (String[] pair : pairs) { M3U8Dto dto = new M3U8Dto(prepareUrl(pair[1])); parseMeta(pair[0], dto); - + result.add(dto); } - - result.sort(Comparator.comparing((M3U8Dto dto) -> { + + result.sort(Comparator.comparing((M3U8Dto dto) -> { Optional<String> optional = dto.getMeta(M3U8Constants.M3U8_RESOLUTION); - if(optional.isPresent()) { + if (optional.isPresent()) { return optional.get(); } return ""; @@ -30,29 +31,35 @@ public class M3U8Parser { return result; } - + private static void parseMeta(String aLine, M3U8Dto aDto) { int index = aLine.indexOf(':'); if (index > 0) { String line = aLine.substring(index + 1); - - while((index = line.indexOf(',')) > 0) { + + while ((index = line.indexOf(',')) > 0) { // Sicherstellen, dass Index für , nicht innerhalb eines mit " begrenzten Wertes liegt int indexQuote = line.indexOf('\"'); while (indexQuote + 1 < index) { indexQuote = line.indexOf('\"', indexQuote + 1); index = line.indexOf(',', indexQuote + 1); } - - parseMetaParameter(line.substring(0, index), aDto); - - line = line.substring(index + 1); + + if (index > 0) { + + parseMetaParameter(line.substring(0, index), aDto); + + line = line.substring(index + 1); + } else { + // if no , found after the last quote + break; + } } - + parseMetaParameter(line, aDto); } } - + private static void parseMetaParameter(String aParameter, M3U8Dto aDto) { String[] parameterParts = aParameter.split("="); aDto.addMeta(parameterParts[0], parameterParts[1]); @@ -60,31 +67,33 @@ public class M3U8Parser { /** * Bereitet URL für MV auf, so dass Downloads über FFMPEG möglich it + * * @param aUrl die URL aus der m3u8-Datei * @return die URL für den Download */ private static String prepareUrl(String aUrl) { String url = aUrl; - + int indexSuffix = aUrl.lastIndexOf("m3u8"); if (indexSuffix > 0) { url = aUrl.substring(0, indexSuffix + 4); } - + return url; } - + /** * Ermittelt die Paare aus den zusammengehörenden Meta- und URL-Zeilen + * * @param aM3U8Data M3U8-Inhalt * @return liste der Zeilenpaare. Im Array ist Index 0 die Metazeile, Index 1 die URL-Zeile */ private static List<String[]> getLinePairs(String aM3U8Data) { List<String[]> pairs = new ArrayList<>(); - + Optional<String> currentMeta = Optional.empty(); Optional<String> currentUrl = Optional.empty(); - + String[] lines = aM3U8Data.split("\n"); for (String line : lines) { if (line.startsWith("#EXT-X-STREAM-INF")) { @@ -92,14 +101,14 @@ public class M3U8Parser { } else if (line.startsWith("http")) { currentUrl = Optional.of(line); } - + if (currentMeta.isPresent() && currentUrl.isPresent()) { - pairs.add(new String[] { currentMeta.get(), currentUrl.get() }); + pairs.add(new String[]{currentMeta.get(), currentUrl.get()}); currentMeta = Optional.empty(); currentUrl = Optional.empty(); } } - + return pairs; } } diff --git a/src/main/java/de/mediathekview/mserver/crawler/hr/tasks/HrSendungsfolgedetailsTask.java b/src/main/java/de/mediathekview/mserver/crawler/hr/tasks/HrSendungsfolgedetailsTask.java index d9a1dfe191634b04710c5d604dbfca94e3c9663f..a223f043838e3ba5d2d1c5d2b480f3eb53722219 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/hr/tasks/HrSendungsfolgedetailsTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/hr/tasks/HrSendungsfolgedetailsTask.java @@ -1,5 +1,7 @@ package de.mediathekview.mserver.crawler.hr.tasks; +import static de.mediathekview.mserver.base.Consts.ATTRIBUTE_SRC; + import java.net.MalformedURLException; import java.net.URL; import java.time.Duration; @@ -26,7 +28,6 @@ import mServer.crawler.CrawlerTool; public class HrSendungsfolgedetailsTask extends AbstractDocumentTask<Film, CrawlerUrlDTO> { private static final String ATTRIBUTE_DATETIME = "datetime"; - private static final String ATTRIBUTE_SRC = "src"; private static final Logger LOG = LogManager.getLogger(HrSendungsfolgedetailsTask.class); private static final long serialVersionUID = 6138774185290017974L; private static final String THEMA_SELECTOR = ".c-programHeader__headline.text__headline"; diff --git a/src/main/java/de/mediathekview/mserver/crawler/ndr/NdrConstants.java b/src/main/java/de/mediathekview/mserver/crawler/ndr/NdrConstants.java new file mode 100644 index 0000000000000000000000000000000000000000..d201ec181a75d1b0a5ece0ba5a8656faa0ea2bb6 --- /dev/null +++ b/src/main/java/de/mediathekview/mserver/crawler/ndr/NdrConstants.java @@ -0,0 +1,12 @@ +package de.mediathekview.mserver.crawler.ndr; + +public final class NdrConstants { + + /** + * Base url of the RBB mediathek. + */ + public static final String URL_BASE = "https://www.ndr.de"; + + private NdrConstants() { + } +} diff --git a/src/main/java/de/mediathekview/mserver/crawler/ndr/parser/NdrFilmDeserializer.java b/src/main/java/de/mediathekview/mserver/crawler/ndr/parser/NdrFilmDeserializer.java index 179691d3b14b20098fa0cdf069d0aa892e2a0c8b..0cdac51c832ba61d35448b6f7a49cded8083c4c7 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/ndr/parser/NdrFilmDeserializer.java +++ b/src/main/java/de/mediathekview/mserver/crawler/ndr/parser/NdrFilmDeserializer.java @@ -1,77 +1,191 @@ package de.mediathekview.mserver.crawler.ndr.parser; -import java.lang.reflect.Type; -import java.net.MalformedURLException; -import java.net.URL; +import static de.mediathekview.mserver.base.Consts.ATTRIBUTE_CONTENT; +import static de.mediathekview.mserver.base.Consts.ATTRIBUTE_SRC; + +import de.mediathekview.mserver.base.utils.HtmlDocumentUtils; +import de.mediathekview.mserver.base.utils.UrlUtils; +import de.mediathekview.mserver.crawler.basic.CrawlerUrlDTO; +import de.mediathekview.mserver.crawler.ndr.NdrConstants; +import de.mediathekview.mserver.crawler.basic.FilmInfoDto; import java.time.Duration; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.Optional; -import java.util.UUID; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import de.mediathekview.mlib.daten.Film; -import de.mediathekview.mlib.daten.FilmUrl; -import de.mediathekview.mserver.base.utils.JsonUtils; -import de.mediathekview.mserver.crawler.ard.json.ArdMediaArrayToDownloadUrlsConverter; -import de.mediathekview.mserver.crawler.basic.AbstractCrawler; -import mServer.crawler.CrawlerTool; - -public class NdrFilmDeserializer implements JsonDeserializer<Optional<Film>> { - private static final String ELEMENT_DURATION = "_duration"; - private static final String ELEMENT_MEDIA_ARRAY = "_mediaArray"; - private static final Logger LOG = LogManager.getLogger(NdrFilmDeserializer.class); - private final AbstractCrawler crawler; - private final String title; - private final String thema; - private final LocalDateTime time; - private final String url; - - public NdrFilmDeserializer(final AbstractCrawler aCrawler, final String aTitel, final String aURL, - final String aThema, final LocalDateTime aTime) { - crawler = aCrawler; - title = aTitel; - url = aURL; - thema = aThema; - time = aTime; - } +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; - @Override - public Optional<Film> deserialize(final JsonElement aElement, final Type aType, - final JsonDeserializationContext aContext) { - if (JsonUtils.hasElements(aElement, Optional.of(crawler), ELEMENT_MEDIA_ARRAY, - ELEMENT_DURATION)) { - final JsonObject baseObj = aElement.getAsJsonObject(); +public class NdrFilmDeserializer { - final Duration dauer = - Duration.of(baseObj.get(ELEMENT_DURATION).getAsLong(), ChronoUnit.SECONDS); + private static final String TITLE_SELECTOR = "meta[name=title]"; + private static final String TOPIC1_SELECTOR = "header > h1 > span[itemprop=headline]"; + private static final String TOPIC2_SELECTOR = "span[itemprop=alternateName]"; + private static final String EPISODE_SELECTOR = "header > h1 > span[itemprop=episodeNumber]"; + private static final String DESCRIPTION_SELECTOR = "meta[name=description]"; + private static final String TIME_SELECTOR2 = "span[itemprop=datePublished]"; + private static final String TIME_SELECTOR3 = "span[itemprop=uploadDate]"; + private static final String DURATION_SELECTOR = "span[itemprop=duration]"; + private static final String START_DATE_SELECTOR = "span[itemprop=startDate]"; + private static final String END_DATE_SELECTOR = "span[itemprop=endDate]"; + private static final String IFRAME_SELECTOR = "iframe"; - final Film newFilm = - new Film(UUID.randomUUID(), crawler.getSender(), title, thema, time, dauer); + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); - ArdMediaArrayToDownloadUrlsConverter.toDownloadUrls(baseObj, crawler).entrySet() - .forEach(e -> newFilm.addUrl(e.getKey(), CrawlerTool.uriToFilmUrl(e.getValue()))); + /** + * deserializes film infos. + * + * @param aUrlDto the topic dto. + * @param aDocument the html document. + * @return the extracted film infos. + */ + public Optional<FilmInfoDto> deserialize(final CrawlerUrlDTO aUrlDto, final Document aDocument) { - final Optional<FilmUrl> defaultUrl = newFilm.getDefaultUrl(); - if (defaultUrl.isPresent()) { - newFilm.setGeoLocations( - CrawlerTool.getGeoLocations(crawler.getSender(), defaultUrl.get().getUrl().toString())); - } + Optional<String> topic = parseTopic(aDocument); + Optional<String> title = parseTitle(aDocument); + Optional<String> description = HtmlDocumentUtils.getElementAttributeString(DESCRIPTION_SELECTOR, ATTRIBUTE_CONTENT, aDocument); + Optional<String> videoUrl = parseVideoUrl(aDocument); + final Optional<LocalDateTime> time = parseDate(aDocument); + final Optional<Duration> duration = parseDuration(aDocument); + + if (topic.isPresent() && title.isPresent() && videoUrl.isPresent()) { + FilmInfoDto dto = new FilmInfoDto(videoUrl.get()); + dto.setTopic(topic.get().trim()); + dto.setTitle(title.get().trim()); + + description.ifPresent(dto::setDescription); + duration.ifPresent(dto::setDuration); + time.ifPresent(dto::setTime); + dto.setWebsite(aUrlDto.getUrl()); + + return Optional.of(dto); + } - try { - newFilm.setWebsite(new URL(url)); - } catch (final MalformedURLException malformedURLException) { - // I don't know why how and when this can happen but you know. - LOG.fatal("Something went terrible wrong on converting the actual website url to a url.", - malformedURLException); + return Optional.empty(); + } + + private static Optional<String> parseTopic(final Document aDocument) { + Optional<String> topic = HtmlDocumentUtils.getElementString(TOPIC1_SELECTOR, aDocument); + + if (!topic.isPresent()) { + Elements topicElements = aDocument.select(TOPIC2_SELECTOR); + + // sometimes there are several elements of TOPIC2_SELECTOR and the first one is empty + for (Element topicElement : topicElements) { + final String text = topicElement.text(); + if (!text.isEmpty()) { + topic = Optional.of(text); + break; + } } - return Optional.of(newFilm); + + } + + return topic; + } + + private static Optional<String> parseTitle(final Document aDocument) { + Optional<String> title = HtmlDocumentUtils.getElementAttributeString(TITLE_SELECTOR, ATTRIBUTE_CONTENT, aDocument); + Optional<String> episode = HtmlDocumentUtils.getElementString(EPISODE_SELECTOR, aDocument); + + if (title.isPresent() && episode.isPresent()) { + final String titleValue = String.format("%s (%s)", title.get().trim(), episode.get()); + return Optional.of(titleValue); + } + + return title; + } + + private static Optional<LocalDateTime> parseDate(final Document aDocument) { + Optional<String> dateTime + = HtmlDocumentUtils.getElementAttributeString(START_DATE_SELECTOR, ATTRIBUTE_CONTENT, aDocument); + + if (!dateTime.isPresent() || dateTime.get().isEmpty()) { + dateTime = HtmlDocumentUtils.getElementAttributeString(TIME_SELECTOR2, ATTRIBUTE_CONTENT, aDocument); + } + if (!dateTime.isPresent() || dateTime.get().isEmpty()) { + dateTime = HtmlDocumentUtils.getElementAttributeString(TIME_SELECTOR3, ATTRIBUTE_CONTENT, aDocument); + } + + if (dateTime.isPresent() && !dateTime.get().isEmpty()) { + LocalDateTime localDateTime + = LocalDateTime.parse(dateTime.get(), DATE_TIME_FORMATTER); + return Optional.of(localDateTime); } + return Optional.empty(); } + private static Optional<Duration> parseDuration(final Document aDocument) { + Optional<String> duration + = HtmlDocumentUtils.getElementAttributeString(DURATION_SELECTOR, ATTRIBUTE_CONTENT, aDocument); + if (duration.isPresent() && !duration.get().isEmpty()) { + return parseDurationStringValue(duration.get()); + } + + return calculateDuration(aDocument); + } + + private static Optional<Duration> calculateDuration(final Document aDocument) { + Optional<String> startDate = HtmlDocumentUtils.getElementAttributeString(START_DATE_SELECTOR, ATTRIBUTE_CONTENT, aDocument); + Optional<String> endDate = HtmlDocumentUtils.getElementAttributeString(END_DATE_SELECTOR, ATTRIBUTE_CONTENT, aDocument); + + if (!startDate.isPresent() || !endDate.isPresent()) { + return Optional.empty(); + } + + LocalDateTime startDateTime + = LocalDateTime.parse(startDate.get(), DATE_TIME_FORMATTER); + LocalDateTime endDateTime + = LocalDateTime.parse(endDate.get(), DATE_TIME_FORMATTER); + + long seconds = ChronoUnit.SECONDS.between(startDateTime, endDateTime); + return Optional.of(Duration.ofSeconds(seconds)); + } + + private static Optional<Duration> parseDurationStringValue(final String aDuration) { + final String[] parts = aDuration.split(":"); + int index = 0; + Long durationValue = 0L; + + if (parts.length == 3) { + durationValue += (Long.parseLong(parts[index]) * 3600); + index++; + } + if (parts.length >= 2) { + durationValue += (Long.parseLong(parts[index])) * 60; + index++; + } + if (parts.length >= 1) { + durationValue += (Long.parseLong(parts[index])); + } + + return Optional.of(Duration.ofSeconds(durationValue)); + } + + private Optional<String> parseVideoUrl(final Document aDocument) { + + // From + // http://www.ndr.de/fernsehen/sendungen/sportclub/schwenker172-ardplayer_image-58390aa6-8e8a-458b-b3a7-d7b23e91e186_theme-ndrde.html + // To + // http://www.ndr.de/fernsehen/sendungen/sportclub/schwenker172-ardjson_image-58390aa6-8e8a-458b-b3a7-d7b23e91e186.json + final Optional<String> playerUrl = HtmlDocumentUtils.getElementAttributeString(IFRAME_SELECTOR, ATTRIBUTE_SRC, aDocument); + if (playerUrl.isPresent()) { + String url = playerUrl.get() + .replaceAll("ardplayer", "ardjson") + .replaceAll("_theme-ndrde.html", ".json"); + + // remove query parameter "autoplay" + int jsonIndex = url.lastIndexOf("?autoplay"); + if (jsonIndex > 0) { + url = url.substring(0, jsonIndex); + } + + url = UrlUtils.addDomainIfMissing(url, NdrConstants.URL_BASE); + return Optional.of(url); + } + + return Optional.empty(); + } } diff --git a/src/main/java/de/mediathekview/mserver/crawler/ndr/tasks/NdrSendungsfolgedetailsTask.java b/src/main/java/de/mediathekview/mserver/crawler/ndr/tasks/NdrSendungsfolgedetailsTask.java index fe780b8ed34ec49b1dfed4db9d11b95f73af4404..4505d3bc01d59af90c5f7a97603b28cc5cb1a283 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/ndr/tasks/NdrSendungsfolgedetailsTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/ndr/tasks/NdrSendungsfolgedetailsTask.java @@ -1,120 +1,116 @@ package de.mediathekview.mserver.crawler.ndr.tasks; -import java.lang.reflect.Type; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeParseException; -import java.util.Optional; -import java.util.concurrent.ConcurrentLinkedQueue; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.Response; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.glassfish.jersey.client.filter.EncodingFilter; -import org.glassfish.jersey.message.DeflateEncoder; -import org.glassfish.jersey.message.GZipEncoder; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; import de.mediathekview.mlib.daten.Film; +import de.mediathekview.mlib.daten.Resolution; +import de.mediathekview.mlib.daten.Sender; +import de.mediathekview.mserver.base.utils.UrlUtils; +import de.mediathekview.mserver.crawler.ard.json.ArdVideoInfoDTO; +import de.mediathekview.mserver.crawler.ard.json.ArdVideoInfoJsonDeserializer; import de.mediathekview.mserver.crawler.basic.AbstractCrawler; import de.mediathekview.mserver.crawler.basic.AbstractDocumentTask; import de.mediathekview.mserver.crawler.basic.AbstractUrlTask; import de.mediathekview.mserver.crawler.basic.CrawlerUrlDTO; +import de.mediathekview.mserver.crawler.ndr.NdrConstants; import de.mediathekview.mserver.crawler.ndr.parser.NdrFilmDeserializer; +import de.mediathekview.mserver.crawler.basic.FilmInfoDto; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Optional; +import java.util.UUID; +import java.util.concurrent.ConcurrentLinkedQueue; +import mServer.crawler.CrawlerTool; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jsoup.nodes.Document; public class NdrSendungsfolgedetailsTask extends AbstractDocumentTask<Film, CrawlerUrlDTO> { + private static final Logger LOG = LogManager.getLogger(NdrSendungsfolgedetailsTask.class); - private static final String SRC_ARGUMENT = "src"; - private static final String TIME_PATTERN = "dd.MM.yyyy HH:mm 'Uhr'"; - private static final String IFRAME_SELECTOR = ".stagePlayer iframe"; - private static final String TIME_SELECTOR = ".textinfo .subline span:eq(1)"; - private static final String THEMA_SELECTOR = ".textinfo .subline span:eq(0)"; - private static final String TITLE_SELECTOR = ".textinfo h1"; private static final long serialVersionUID = 1614807484305273437L; - private static final String ENCODING_GZIP = "gzip"; - private static final String HEADER_ACCEPT_ENCODING = "Accept-Encoding"; - private static final Type OPTIONAL_FILM_TYPE_TOKEN = new TypeToken<Optional<Film>>() {}.getType(); - private final Client client; + + private final NdrFilmDeserializer filmDetailDeserializer; + private final Gson gson; public NdrSendungsfolgedetailsTask(final AbstractCrawler aCrawler, - final ConcurrentLinkedQueue<CrawlerUrlDTO> aUrlToCrawlDTOs) { - super(aCrawler, aUrlToCrawlDTOs); - client = ClientBuilder.newClient(); - client.register(EncodingFilter.class); - client.register(GZipEncoder.class); - client.register(DeflateEncoder.class); - } + final ConcurrentLinkedQueue<CrawlerUrlDTO> aUrlToCrawlDtos) { + super(aCrawler, aUrlToCrawlDtos); - private String extractAdditionalVideoInfoUrl(final Element aIframeElement) { - // From - // http://www.ndr.de/fernsehen/sendungen/sportclub/schwenker172-ardplayer_image-58390aa6-8e8a-458b-b3a7-d7b23e91e186_theme-ndrde.html - // To - // http://www.ndr.de/fernsehen/sendungen/sportclub/schwenker172-ardjson_image-58390aa6-8e8a-458b-b3a7-d7b23e91e186.json - final String playerUrl = aIframeElement.absUrl(SRC_ARGUMENT); - return playerUrl.replaceAll("ardplayer", "ardjson").replaceAll("_theme-ndrde.html", ".json"); - } - - private LocalDateTime parseTime(final String aText) { - // Parse dates like: 12.11.2017 23:15 Uhr - try { - return LocalDateTime.parse(aText, DateTimeFormatter.ofPattern(TIME_PATTERN)); - } catch (final DateTimeParseException dateTimeParseException) { - LOG.debug( - String.format("The NDR date time \"%s\" can't be parsed. Using actual date time.", aText), - dateTimeParseException); - return LocalDateTime.now(); - } + filmDetailDeserializer = new NdrFilmDeserializer(); + gson = new GsonBuilder() + .registerTypeAdapter(ArdVideoInfoDTO.class, new ArdVideoInfoJsonDeserializer(crawler)) + .create(); } @Override protected AbstractUrlTask<Film, CrawlerUrlDTO> createNewOwnInstance( - final ConcurrentLinkedQueue<CrawlerUrlDTO> aURLsToCrawl) { - return new NdrSendungsfolgedetailsTask(crawler, aURLsToCrawl); + final ConcurrentLinkedQueue<CrawlerUrlDTO> aUrlsToCrawl) { + return new NdrSendungsfolgedetailsTask(crawler, aUrlsToCrawl); } @Override - protected void processDocument(final CrawlerUrlDTO aUrlDTO, final Document aDocument) { - - final Elements titleElement = aDocument.select(TITLE_SELECTOR); - if (titleElement.isEmpty()) { - crawler.printMissingElementErrorMessage("title"); - } else { - final String titel = titleElement.first().text(); - final Elements themaElement = aDocument.select(THEMA_SELECTOR); - final String thema = themaElement.first().text(); - final Elements timeElement = aDocument.select(TIME_SELECTOR); - final LocalDateTime time = parseTime(timeElement.text()); - final String additionalVideoInfoUrl = - extractAdditionalVideoInfoUrl(aDocument.select(IFRAME_SELECTOR).first()); - - final WebTarget target = client.target(additionalVideoInfoUrl); - final Response response = - target.request().header(HEADER_ACCEPT_ENCODING, ENCODING_GZIP).get(); - final String jsonOutput = response.readEntity(String.class); + protected void processDocument(final CrawlerUrlDTO aUrlDto, final Document aDocument) { - final Gson gson = new GsonBuilder().registerTypeAdapter(OPTIONAL_FILM_TYPE_TOKEN, - new NdrFilmDeserializer(crawler, titel, aUrlDTO.getUrl(), thema, time)).create(); + final Optional<FilmInfoDto> filmInfo = filmDetailDeserializer.deserialize(aUrlDto, aDocument); + if (filmInfo.isPresent()) { + FilmInfoDto filmInfoDto = filmInfo.get(); + try { + final ArdVideoInfoDTO videoInfo + = gson.fromJson(new InputStreamReader(new URL(filmInfoDto.getUrl()).openStream(), StandardCharsets.UTF_8), + ArdVideoInfoDTO.class); + if (videoInfo.getSubtitleUrl() != null) { + videoInfo.setSubtitleUrl(UrlUtils.addDomainIfMissing(videoInfo.getSubtitleUrl(), NdrConstants.URL_BASE)); + } - final Optional<Film> newFilm = gson.fromJson(jsonOutput, OPTIONAL_FILM_TYPE_TOKEN); - if (newFilm.isPresent()) { - final Elements descriptionElement = aDocument.select(".textinfo p"); - if (!descriptionElement.isEmpty()) { - newFilm.get().setBeschreibung(descriptionElement.first().text()); + if (!videoInfo.getVideoUrls().isEmpty()) { + Film film = createFilm(filmInfoDto, videoInfo); + taskResults.add(film); + crawler.incrementAndGetActualCount(); + crawler.updateProgress(); + } else { + LOG.error("NdrSendungsfolgedetailsTask: film url list is empty " + aUrlDto.getUrl()); + crawler.incrementAndGetErrorCount(); + crawler.updateProgress(); } - taskResults.add(newFilm.get()); - crawler.incrementAndGetActualCount(); - } else { - crawler.printErrorMessage(); + + } catch (IOException e) { + LOG.error("NdrSendungsfolgedetailsTask: error reading video infos " + filmInfoDto.getUrl(), e); crawler.incrementAndGetErrorCount(); + crawler.updateProgress(); } + + } else { + LOG.error("NdrSendungsfolgedetailsTask: no film found for url " + aUrlDto.getUrl()); + crawler.incrementAndGetErrorCount(); crawler.updateProgress(); } } + private Film createFilm(final FilmInfoDto aFilmInfoDto, final ArdVideoInfoDTO aVideoInfoDto) throws MalformedURLException { + final Film film = new Film(UUID.randomUUID(), Sender.NDR, aFilmInfoDto.getTitle(), + aFilmInfoDto.getTopic(), aFilmInfoDto.getTime(), aFilmInfoDto.getDuration()); + + film.setBeschreibung(aFilmInfoDto.getDescription()); + film.setGeoLocations(CrawlerTool.getGeoLocations(Sender.NDR, aVideoInfoDto.getDefaultVideoUrl())); + film.setWebsite(new URL(aFilmInfoDto.getWebsite())); + if (StringUtils.isNotBlank(aVideoInfoDto.getSubtitleUrl())) { + film.addSubtitle(new URL(aVideoInfoDto.getSubtitleUrl())); + } + addUrls(film, aVideoInfoDto.getVideoUrls()); + return film; + } + + private void addUrls(final Film aFilm, final Map<Resolution, String> aVideoUrls) + throws MalformedURLException { + for (final Entry<Resolution, String> qualitiesEntry : aVideoUrls.entrySet()) { + aFilm.addUrl(qualitiesEntry.getKey(), CrawlerTool.stringToFilmUrl(qualitiesEntry.getValue())); + } + } } diff --git a/src/main/java/de/mediathekview/mserver/crawler/orf/parser/OrfVideoDetailDeserializer.java b/src/main/java/de/mediathekview/mserver/crawler/orf/parser/OrfVideoDetailDeserializer.java index c9702a2a4302823210041d293e4a681df6a0d349..f68d62709e1c2278041f4cf4beee03d56fcfc542 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/orf/parser/OrfVideoDetailDeserializer.java +++ b/src/main/java/de/mediathekview/mserver/crawler/orf/parser/OrfVideoDetailDeserializer.java @@ -1,5 +1,7 @@ package de.mediathekview.mserver.crawler.orf.parser; +import static de.mediathekview.mserver.base.Consts.ATTRIBUTE_SRC; + import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; @@ -24,7 +26,6 @@ public class OrfVideoDetailDeserializer implements JsonDeserializer<Optional<Orf private static final String ATTRIBUTE_DELIVERY = "delivery"; private static final String ATTRIBUTE_PROTOCOL = "protocol"; private static final String ATTRIBUTE_QUALITY = "quality"; - private static final String ATTRIBUTE_SRC = "src"; private static final String ATTRIBUTE_TYPE = "type"; private static final String RELEVANT_DELIVERY = "progressive"; diff --git a/src/main/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmDetailDeserializer.java b/src/main/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmDetailDeserializer.java index e34d17d789a039466899f62ee842db3fe9d26a78..4a595a55fa835e0509b29092cfad8034ef037093 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmDetailDeserializer.java +++ b/src/main/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmDetailDeserializer.java @@ -4,6 +4,7 @@ import static de.mediathekview.mserver.base.Consts.ATTRIBUTE_CONTENT; import de.mediathekview.mserver.base.utils.HtmlDocumentUtils; import de.mediathekview.mserver.crawler.basic.CrawlerUrlDTO; +import de.mediathekview.mserver.crawler.basic.FilmInfoDto; import de.mediathekview.mserver.crawler.rbb.RbbConstants; import java.time.Duration; import java.time.LocalDateTime; @@ -34,7 +35,7 @@ public class RbbFilmDetailDeserializer { * @param aDocument the html document. * @return the extracted film infos. */ - public Optional<RbbFilmInfoDto> deserialize(final CrawlerUrlDTO aUrlDto, final Document aDocument) { + public Optional<FilmInfoDto> deserialize(final CrawlerUrlDTO aUrlDto, final Document aDocument) { Optional<String> topic = HtmlDocumentUtils.getElementAttributeString(TOPIC_SELECTOR, ATTRIBUTE_CONTENT, aDocument); Optional<String> title = HtmlDocumentUtils.getElementAttributeString(TITLE_SELECTOR, ATTRIBUTE_CONTENT, aDocument); @@ -44,7 +45,7 @@ public class RbbFilmDetailDeserializer { final Optional<Duration> duration = parseDuration(aDocument); if (topic.isPresent() && title.isPresent() && videoUrl.isPresent()) { - RbbFilmInfoDto dto = new RbbFilmInfoDto(videoUrl.get()); + FilmInfoDto dto = new FilmInfoDto(videoUrl.get()); dto.setTopic(topic.get()); dto.setTitle(title.get()); diff --git a/src/main/java/de/mediathekview/mserver/crawler/rbb/tasks/RbbFilmTask.java b/src/main/java/de/mediathekview/mserver/crawler/rbb/tasks/RbbFilmTask.java index 38cb2a2bb884586239d8cde3fec8dda3ae615d78..47d8bb2e5193903f42eb9dbd4b7b255ba750e3ad 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/rbb/tasks/RbbFilmTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/rbb/tasks/RbbFilmTask.java @@ -12,7 +12,7 @@ import de.mediathekview.mserver.crawler.basic.AbstractDocumentTask; import de.mediathekview.mserver.crawler.basic.AbstractRecrusivConverterTask; import de.mediathekview.mserver.crawler.basic.CrawlerUrlDTO; import de.mediathekview.mserver.crawler.rbb.parser.RbbFilmDetailDeserializer; -import de.mediathekview.mserver.crawler.rbb.parser.RbbFilmInfoDto; +import de.mediathekview.mserver.crawler.basic.FilmInfoDto; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; @@ -49,9 +49,9 @@ public class RbbFilmTask extends AbstractDocumentTask<Film, CrawlerUrlDTO> { @Override protected void processDocument(CrawlerUrlDTO aUrlDto, Document aDocument) { - final Optional<RbbFilmInfoDto> filmInfo = filmDetailDeserializer.deserialize(aUrlDto, aDocument); + final Optional<FilmInfoDto> filmInfo = filmDetailDeserializer.deserialize(aUrlDto, aDocument); if (filmInfo.isPresent()) { - RbbFilmInfoDto filmInfoDto = filmInfo.get(); + FilmInfoDto filmInfoDto = filmInfo.get(); try { final ArdVideoInfoDTO videoInfo = gson.fromJson(new InputStreamReader(new URL(filmInfoDto.getUrl()).openStream(), StandardCharsets.UTF_8), @@ -81,7 +81,7 @@ public class RbbFilmTask extends AbstractDocumentTask<Film, CrawlerUrlDTO> { return new RbbFilmTask(crawler, aElementsToProcess); } - private Film createFilm(final RbbFilmInfoDto aFilmInfoDto, final ArdVideoInfoDTO aVideoInfoDto) throws MalformedURLException { + private Film createFilm(final FilmInfoDto aFilmInfoDto, final ArdVideoInfoDTO aVideoInfoDto) throws MalformedURLException { final Film film = new Film(UUID.randomUUID(), Sender.RBB, aFilmInfoDto.getTitle(), aFilmInfoDto.getTopic(), aFilmInfoDto.getTime(), aFilmInfoDto.getDuration()); diff --git a/src/main/java/mServer/crawler/FilmeSuchen.java b/src/main/java/mServer/crawler/FilmeSuchen.java index 789b362b1f62cf4761c96aa3f93523eb76670383..5c2737c5979a145548e8f5d5ce87dcec6435942c 100644 --- a/src/main/java/mServer/crawler/FilmeSuchen.java +++ b/src/main/java/mServer/crawler/FilmeSuchen.java @@ -30,7 +30,6 @@ import de.mediathekview.mlib.tool.Log; import mServer.crawler.sender.MediathekHr; import mServer.crawler.sender.MediathekKika; import mServer.crawler.sender.MediathekMdr; -import mServer.crawler.sender.MediathekNdr; import mServer.crawler.sender.MediathekOrf; import mServer.crawler.sender.MediathekPhoenix; import mServer.crawler.sender.MediathekRbb; @@ -74,7 +73,6 @@ public class FilmeSuchen { mediathekListe.add(new MediathekArte_de(this, 0)); mediathekListe.add(new MediathekArte_fr(this, 0)); mediathekListe.add(new MediathekSwr(this, 0)); - mediathekListe.add(new MediathekNdr(this, 1)); mediathekListe.add(new MediathekKika(this, 0)); // Spalte 2 mediathekListe.add(new MediathekMdr(this, 0)); diff --git a/src/main/java/mServer/crawler/sender/MediathekNdr.java b/src/main/java/mServer/crawler/sender/MediathekNdr.java deleted file mode 100644 index dfa27dd08d7456d4ac3d7863add5f2c18e6f3a05..0000000000000000000000000000000000000000 --- a/src/main/java/mServer/crawler/sender/MediathekNdr.java +++ /dev/null @@ -1,443 +0,0 @@ -package mServer.crawler.sender; - -import java.net.MalformedURLException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Date; -import java.util.Iterator; -import org.apache.commons.lang3.time.FastDateFormat; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import de.mediathekview.mlib.Config; -import de.mediathekview.mlib.Const; -import de.mediathekview.mlib.daten.Film; -import de.mediathekview.mlib.daten.Sender; -import de.mediathekview.mlib.tool.Log; -import de.mediathekview.mlib.tool.MSStringBuilder; -import mServer.crawler.CrawlerTool; -import mServer.crawler.FilmeSuchen; -import mServer.crawler.GetUrl; -import mServer.tool.MserverDaten; - -public class MediathekNdr extends MediathekReader implements Runnable { - private class ThemaLaden extends Thread { - - private final GetUrl getUrl = new GetUrl(getWartenSeiteLaden()); - private MSStringBuilder seite1 = new MSStringBuilder(Const.STRING_BUFFER_START_BUFFER); - private MSStringBuilder seite2 = new MSStringBuilder(Const.STRING_BUFFER_START_BUFFER); - private MSStringBuilder seite3 = new MSStringBuilder(Const.STRING_BUFFER_START_BUFFER); - private final ArrayList<String> liste = new ArrayList<>(); - - @Override - public void run() { - try { - meldungAddThread(); - final Iterator<String[]> themaIterator = listeThemen.iterator(); - while (!Config.getStop() && themaIterator.hasNext()) { - final String[] thema = themaIterator.next(); - try { - meldungProgress(thema[1]); - feedEinerSeiteSuchen(thema[0], thema[1] /* thema */); - } catch (final Exception ex) { - Log.errorLog(336901211, ex); - } - } - } catch (final Exception ex) { - Log.errorLog(554632590, ex); - } - meldungThreadUndFertig(); - } - - private long convertDuration(final String duration, final String strUrlFeed) { - long durationInSeconds = 0; - try { - if (!duration.isEmpty()) { - final String[] parts = duration.split(":"); - long power = 1; - durationInSeconds = 0; - for (int i = parts.length - 1; i >= 0; i--) { - durationInSeconds += Long.parseLong(parts[i]) * power; - power *= 60; - } - } - } catch (final NumberFormatException ex) { - if (MserverDaten.debug) { - Log.errorLog(369015497, ex, strUrlFeed); - } - } catch (final Exception ex) { - Log.errorLog(369015497, ex, strUrlFeed); - } - - return durationInSeconds; - } - - private String extractDescription(final MSStringBuilder page) { - final String desc = extractString(page, "<meta property=\"og:description\" content=\"", "\""); - if (desc == null) { - return ""; - } - return desc; - } - - private String extractString(final MSStringBuilder source, final String startMarker, - final String endMarker) { - int start = source.indexOf(startMarker); - if (start == -1) { - return null; - } - start = start + startMarker.length(); - final int end = source.indexOf(endMarker, start); - if (end == -1) { - return null; - } - return source.substring(start, end); - } - - private void feedEinerSeiteSuchen(final String strUrlFeed, final String tthema) { - final String MUSTER_URL = "<a href=\""; - final GetUrl getUrlIo = new GetUrl(getWartenSeiteLaden()); - seite1 = getUrlIo.getUri(SENDER.getName(), strUrlFeed, StandardCharsets.UTF_8, - 3 /* versuche */, seite1, "Thema: " + tthema/* meldung */); - int pos = 0; - String url; - String titel; - String thema = tthema; - String datum = ""; - String zeit = ""; - long durationInSeconds; - String tmp; - boolean tage = false; - try { - meldung(strUrlFeed); - String muster; - if (seite1.indexOf("<strong class=\"time\">") != -1) { - muster = "<strong class=\"time\">"; - tage = true; - } else { - muster = "<span class=\"icon icon_video\"></span>"; - } - while (!Config.getStop() && (pos = seite1.indexOf(muster, pos)) != -1) { - pos += muster.length(); - url = seite1.extract(MUSTER_URL, "\"", pos); - if (url.isEmpty()) { - Log.errorLog(659210274, "keine Url feedEinerSeiteSuchen" + strUrlFeed); - continue; - } - if (!url.startsWith("http")) { - url = "http://www.ndr.de" + url; - } - if (tage) { - // <h3><a href="/fernsehen/epg/import/Rote-Rosen,sendung64120.html" title="Rote Rosen" - // >Rote Rosen (1725)</a></h3> - thema = seite1.extract(MUSTER_URL, " title=\"", "\"", pos, 0, ""); - titel = seite1.extract(MUSTER_URL, ">", "<", pos, 0, ""); - if (titel.contains("(Wdh.)")) { - // dann sollte der Beitrag schon in der Liste sein - continue; - } - if (thema.equals(titel) && thema.contains(" - ")) { - thema = thema.substring(0, thema.indexOf(" - ")).trim(); - titel = titel.substring(titel.indexOf(" - ")); - titel = titel.replace(" - ", "").trim(); - } - } else { - titel = seite1.extract(" title=\"", "\"", pos); - titel = titel.replace("Zum Video:", "").trim(); - } - if (tage) { - tmp = seite1.substring(pos, seite1.indexOf("<", pos)); - datum = tthema; - try { - final Date filmDate = FastDateFormat.getInstance("HH:mm").parse(tmp); - zeit = FastDateFormat.getInstance("HH:mm:ss").format(filmDate); - } catch (final Exception ex) { - Log.errorLog(795623017, "convertDatum: " + strUrlFeed); - } - } else { - tmp = seite1.extract("<div class=\"subline date\">", "<", pos); - final String[] dateValues = parseDateTime(tmp, strUrlFeed); - datum = dateValues[0]; - zeit = dateValues[1]; - } - if (tage) { - // <span class="icon icon_video" aria-label="Länge"></span>29:59</div> - final String duration = seite1.extract("\"Länge\"></span>", "<", pos).trim(); - durationInSeconds = convertDuration(duration, strUrlFeed); - } else { - String duration = seite1.extract("Video (", ")", pos); - duration = duration.replace("min", "").trim(); - durationInSeconds = convertDuration(duration, strUrlFeed); - } - filmSuchen_1(strUrlFeed, thema, titel, url, datum, zeit, durationInSeconds); - } - } catch (final Exception ex) { - Log.errorLog(693219870, strUrlFeed); - } - } - - private void filmSuchen_1(final String strUrlThema, final String thema, final String titel, - final String filmWebsite, String datum, String zeit, final long durationInSeconds) { - // playlist: [ - // { - // 1: - // {src:'http://hds.ndr.de/z/2013/0419/TV-20130419-1010-0801.,hi,hq,.mp4.csmil/manifest.f4m', - // type:"application/f4m+xml"}, - // 2: - // {src:'http://hls.ndr.de/i/2013/0419/TV-20130419-1010-0801.,lo,hi,hq,.mp4.csmil/master.m3u8', - // type:"application/x-mpegURL"}, - // 3: {src:'http://media.ndr.de/progressive/2013/0419/TV-20130419-1010-0801.hi.mp4', - // type:"video/mp4"}, - - // http://media.ndr.de/progressive/2012/0820/TV-20120820-2300-0701.hi.mp4 - // rtmpt://cp160844.edgefcs.net/ondemand/mp4:flashmedia/streams/ndr/2012/0820/TV-20120820-2300-0701.hq.mp4 - seite2 = - getUrl.getUri_Utf(SENDER.getName(), filmWebsite, seite2, "strUrlThema: " + strUrlThema); - final String description = extractDescription(seite2); - // String[] keywords = extractKeywords(seite2); - String subtitle = seite2.extract(",tracks: [{ src: \"", "\""); // ,tracks: [{ src: - // "/fernsehen/sendungen/45_min/video-podcast/ut20448.xml", - // srclang:"de"}] - if (!subtitle.isEmpty()) { - subtitle = "http://www.ndr.de" + subtitle; - // } else { - // System.out.println("Test"); - } - meldung(filmWebsite); - int pos1; - try { - // src="/fernsehen/hallondsopplatt162-player_image-2c09ece0-0508-49bf-b4d6-afff2be2115c_theme-ndrde.html" - // http://www.ndr.de/fernsehen/hallondsopplatt162-ppjson_image-2c09ece0-0508-49bf-b4d6-afff2be2115c.json - // id="pp_hallondsopplatt162" - if (datum.isEmpty()) { - String tmp = seite2.extract("<span itemprop=\"datePublished\"", "</"); - if ((pos1 = tmp.indexOf(">")) != -1) { - tmp = tmp.substring(pos1 + 1, tmp.length()); - final String[] dateValues = parseDateTime(tmp, strUrlThema); - datum = dateValues[0]; - zeit = dateValues[1]; - } - } - - String json = seite2.extract("<meta itemprop=\"embedURL\" content=\"", "\""); - if (!json.isEmpty()) { - json = json.replace("-player.html", "-ardjson.json"); - filmSuchen_2(strUrlThema, thema, titel, filmWebsite, json, datum, zeit, durationInSeconds, - description, subtitle); - - } else { - Log.errorLog(915230214, "auch keine Url: " + filmWebsite); - } - } catch (final Exception ex) { - Log.errorLog(699830157, ex); - } - } - - private void filmSuchen_2(final String strUrlThema, final String thema, final String titel, - final String filmWebsite, final String json, final String datum, final String zeit, - final long durationInSeconds, final String description, String subtitle) { - - seite3 = getUrl.getUri_Utf(SENDER.getName(), json, seite3, "strUrlThema: " + strUrlThema); - String url_hd = "", url_xl = "", url_m = ""; - seite3.extractList("", "", "\"_stream\": \"https://mediandr", "\"", "https://mediandr", - liste); - - for (final String s : liste) { - if (s.endsWith(".hd.mp4")) { - url_hd = s; - } else if (s.endsWith(".hq.mp4")) { - url_xl = s; - } else if (s.endsWith(".hi.mp4")) { - url_m = s; - } - } - liste.clear(); - if (url_xl.isEmpty()) { - url_xl = url_m; - url_m = ""; - } - - final String http = "http:"; - final String https = "https:"; - url_hd = url_hd.replaceFirst(https, http); - url_xl = url_xl.replaceFirst(https, http); - url_m = url_m.replaceFirst(https, http); - - if (subtitle.isEmpty()) { - subtitle = seite3.extract("\"_subtitleUrl\":", "\"/", "\"", "http://www.ndr.de/"); - } - - if (!url_xl.isEmpty()) { - try { - final Film film = CrawlerTool.createFilm(SENDER, url_xl, titel, thema, datum, zeit, - durationInSeconds, filmWebsite, description, url_hd, url_m); - if (!subtitle.isEmpty()) { - film.addSubtitle(new URL(subtitle)); - } - addFilm(film); - } catch (final MalformedURLException uriSyntaxEception) { - LOG.error( - String.format("Der Film \"%s - %s\" konnte nicht umgewandelt werden.", thema, titel), - uriSyntaxEception); - } - } else { - Log.errorLog(915234210, "keine URL im json: " + filmWebsite); - } - } - - /* - * private String[] extractKeywords(MSStringBuilder page) { String keywords = - * extractString(page, "<meta name=\"keywords\" lang=\"de\" content=\"", "\""); if (keywords == - * null) { return new String[]{""}; } String[] k = keywords.split(","); for (int i = 0; i < - * k.length; i++) { k[i] = k[i].trim(); } return k; } - */ - - private String[] parseDateTime(final String dateTimeValue, final String strUrlFeed) { - final String[] dateValues = new String[2]; - dateValues[0] = ""; - dateValues[1] = ""; - - final String dateTime = dateTimeValue.replace("Uhr", "").trim(); - - if (!dateTime.isEmpty()) { - try { - final Date filmDate = FastDateFormat.getInstance("dd.MM.yyyy HH:mm").parse(dateTime); - dateValues[0] = FastDateFormat.getInstance("dd.MM.yyyy").format(filmDate); - dateValues[1] = FastDateFormat.getInstance("HH:mm:ss").format(filmDate); - } catch (final Exception ex) { - Log.errorLog(623657941, "convertDatum: " + strUrlFeed); - } - } - - return dateValues; - } - } - - private static final Logger LOG = LogManager.getLogger(MediathekNdr.class); - public final static Sender SENDER = Sender.NDR; - - private MSStringBuilder seiteAlle = new MSStringBuilder(Const.STRING_BUFFER_START_BUFFER); - - public MediathekNdr(final FilmeSuchen ssearch, final int startPrio) { - super(ssearch, SENDER.getName(), /* threads */ 2, /* urlWarten */ 50, startPrio); - } - - private boolean alleSeiteSuchen(final String strUrlFeed, final String tthema) { - boolean ret = false; - final GetUrl getUrlIo = new GetUrl(getWartenSeiteLaden()); - seiteAlle = getUrlIo.getUri(SENDER.getName(), strUrlFeed, StandardCharsets.UTF_8, - 3 /* versuche */, seiteAlle, "Thema: " + tthema/* meldung */); - int pos1 = 0, pos2, anz1, anz2 = 0; - try { - // <a class="square button" href="/mediathek/mediatheksuche105_broadcast-1391_page-5.html" - // title="Zeige Seite 5"> - // http://www.ndr.de/mediathek/mediatheksuche105_broadcast-30_page-1.html - final String WEITER = " title=\"Zeige Seite "; - while ((pos1 = seiteAlle.indexOf(WEITER, pos1)) != -1) { - pos1 += WEITER.length(); - if ((pos2 = seiteAlle.indexOf("\"", pos1)) != -1) { - final String anz = seiteAlle.substring(pos1, pos2); - try { - anz1 = Integer.parseInt(anz); - if (anz2 < anz1) { - anz2 = anz1; - } - } catch (final Exception ex) { - Log.errorLog(643208979, strUrlFeed); - } - } - } - for (int i = 2; i <= anz2 && i <= 10; ++i) { - // geht bei 2 los da das ja schon die erste Seite ist! - // das: http://www.ndr.de/mediathek/mediatheksuche105_broadcast-30.html - // wird: http://www.ndr.de/mediathek/mediatheksuche105_broadcast-30_page-3.html - final String url_ = strUrlFeed.replace(".html", "_page-" + i + ".html"); - listeThemen.add(new String[] {url_, tthema}); - ret = true; - } - } catch (final Exception ex) { - Log.errorLog(913047821, strUrlFeed); - } - return ret; - } - - // -> erste Seite: - // <h5><a href="/mediathek/mediatheksuche103_broadcast-30.html">Nordmagazin</a></h5> - @Override - protected void addToList() { - // <broadcast id="1391" site="ndrfernsehen">45 Min</broadcast> - final String ADRESSE = "http://www.ndr.de/mediathek/sendungen_a-z/index.html"; - final String MUSTER_URL1 = "<li><a href=\"/mediathek/mediatheksuche105_broadcast-"; - listeThemen.clear(); - - meldungStart(); - - MSStringBuilder seite = new MSStringBuilder(Const.STRING_BUFFER_START_BUFFER); - final GetUrl getUrlIo = new GetUrl(getWartenSeiteLaden()); - seite = getUrlIo.getUri(SENDER.getName(), ADRESSE, StandardCharsets.UTF_8, 5 /* versuche */, - seite, ""/* meldung */); - int pos = 0; - int pos1; - int pos2; - String url = ""; - String thema = ""; - while ((pos = seite.indexOf(MUSTER_URL1, pos)) != -1) { - try { - pos += MUSTER_URL1.length(); - pos1 = pos; - if ((pos2 = seite.indexOf("\"", pos)) != -1) { - url = seite.substring(pos1, pos2); - } - pos1 = seite.indexOf(">", pos); - pos2 = seite.indexOf("<", pos); - if (pos1 != -1 && pos2 != -1 && pos1 < pos2) { - thema = seite.substring(pos1 + 1, pos2); - } - if (url.isEmpty()) { - Log.errorLog(210367600, "keine Url"); - continue; - } - final String url_ = "http://www.ndr.de/mediathek/mediatheksuche105_broadcast-" + url; - final String[] add = new String[] {url_, thema}; - if (CrawlerTool.loadLongMax()) { - if (!alleSeiteSuchen(url_, thema)) { - // dann halt so versuchen - listeThemen.add(add); - } - } else { - listeThemen.add(add); - } - } catch (final Exception ex) { - Log.errorLog(332945670, ex); - } - } - // noch "Verpasst" für die letzten Tage einfügen - // http://www.ndr.de/mediathek/sendung_verpasst/epg1490_date-2014-05-17.html - // http://www.ndr.de/mediathek/sendung_verpasst/epg1490_date-2014-05-17_display-onlyvideo.html - final FastDateFormat formatter1 = FastDateFormat.getInstance("yyyy-MM-dd"); - final FastDateFormat formatter2 = FastDateFormat.getInstance("dd.MM.yyyy"); - final int maxTage = CrawlerTool.loadLongMax() ? 30 : 20; - for (int i = 0; i < maxTage; ++i) { - // https://www.ndr.de/mediathek/sendung_verpasst/epg1490_date-2015-09-05_display-all.html - final String URL = "http://www.ndr.de/mediathek/sendung_verpasst/epg1490_date-"; - final String tag = formatter1.format(new Date().getTime() - 1000 * 60 * 60 * 24 * i); - final String date = formatter2.format(new Date().getTime() - 1000 * 60 * 60 * 24 * i); - // String urlString = URL + tag + "_display-onlyvideo.html"; --> stimmt leider nicht immer - final String urlString = URL + tag + "_display-all.html"; - listeThemen.add(new String[] {urlString, date}); - } - - if (Config.getStop()) { - meldungThreadUndFertig(); - } else if (listeThemen.isEmpty()) { - meldungThreadUndFertig(); - } else { - meldungAddMax(listeThemen.size()); - for (int t = 0; t < getMaxThreadLaufen(); ++t) { - final Thread th = new ThemaLaden(); - th.setName(SENDER.getName() + t); - th.start(); - } - } - } -} diff --git a/src/main/java/mServer/crawler/sender/hr/HrSendungDeserializer.java b/src/main/java/mServer/crawler/sender/hr/HrSendungDeserializer.java index 48ef25d78fa6b923d7a7ab0ae59f726030893d24..c4a9eda74310ed04baef57b07a0cc045ad2ab871 100644 --- a/src/main/java/mServer/crawler/sender/hr/HrSendungDeserializer.java +++ b/src/main/java/mServer/crawler/sender/hr/HrSendungDeserializer.java @@ -1,5 +1,7 @@ package mServer.crawler.sender.hr; +import static de.mediathekview.mserver.base.Consts.ATTRIBUTE_SRC; + import java.net.MalformedURLException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -26,7 +28,6 @@ public class HrSendungDeserializer { private static final String HTML_TAG_VIDEO = "video"; private static final String HTML_ATTRIBUTE_DATETIME = "datetime"; private static final String HTML_ATTRIBUTE_DURATION = "data-duration"; - private static final String HTML_ATTRIBUTE_SRC = "src"; private static final Logger LOG = LogManager.getLogger(HrSendungDeserializer.class); private final DateTimeFormatter dateFormatHtml = @@ -147,7 +148,7 @@ public class HrSendungDeserializer { final Element urlElement = document.select(HTML_TAG_SOURCE).first(); if (urlElement != null) { - url = urlElement.attr(HTML_ATTRIBUTE_SRC); + url = urlElement.attr(ATTRIBUTE_SRC); } return url; diff --git a/src/test/java/de/mediathekview/mserver/crawler/ard/json/ArdVideoInfoJsonDeserializerTest.java b/src/test/java/de/mediathekview/mserver/crawler/ard/json/ArdVideoInfoJsonDeserializerTest.java index 31212bd507439cd7ce58a5743a9e21589dd295b6..6108c6343d20f403b95c74c18c2c7278960f4693 100644 --- a/src/test/java/de/mediathekview/mserver/crawler/ard/json/ArdVideoInfoJsonDeserializerTest.java +++ b/src/test/java/de/mediathekview/mserver/crawler/ard/json/ArdVideoInfoJsonDeserializerTest.java @@ -61,7 +61,13 @@ public class ArdVideoInfoJsonDeserializerTest extends WireMockTestBase { null}, {"/sr/sr_film_video_details1.json", "https://srstorage01-a.akamaihd.net/Video/FS/MT/traumreise_20170926_124001_M.mp4", "https://srstorage01-a.akamaihd.net/Video/FS/MT/traumreise_20170926_124001_L.mp4", - "https://srstorage01-a.akamaihd.net/Video/FS/MT/traumreise_20170926_124001_P.mp4"} + "https://srstorage01-a.akamaihd.net/Video/FS/MT/traumreise_20170926_124001_P.mp4"}, + { + "/ndr/ndr_film_detail_m3u8.json", + "https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_608_av-b.m3u8", + "https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1992_av-b.m3u8", + "https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_3776_av-b.m3u8" + } }); } @@ -82,6 +88,8 @@ public class ArdVideoInfoJsonDeserializerTest extends WireMockTestBase { JsonElement jsonElement = JsonFileReader.readJson(jsonFile); + setupSuccessfulResponse("/i/ndrfs_nds@430233/master.m3u8", "/ndr/ndr_film_detail_m3u8.m3u8"); + AbstractCrawler crawler = Mockito.mock(AbstractCrawler.class); ArdVideoInfoJsonDeserializer target = new ArdVideoInfoJsonDeserializer(crawler); ArdVideoInfoDTO actual = target.deserialize(jsonElement, ArdVideoInfoDTO.class, null); diff --git a/src/test/java/de/mediathekview/mserver/crawler/basic/M3U8ParserTest.java b/src/test/java/de/mediathekview/mserver/crawler/basic/M3U8ParserTest.java index e0cc7e5b59307f206269145994adc99b583d4e1e..9b6ee284c8966f96af4cc09736bda03e32d71397 100644 --- a/src/test/java/de/mediathekview/mserver/crawler/basic/M3U8ParserTest.java +++ b/src/test/java/de/mediathekview/mserver/crawler/basic/M3U8ParserTest.java @@ -1,10 +1,12 @@ package de.mediathekview.mserver.crawler.basic; -import java.util.List; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; -import org.hamcrest.Matchers; import static org.junit.Assert.assertThat; + +import java.util.List; + +import org.hamcrest.Matchers; import org.junit.Test; public class M3U8ParserTest { @@ -13,31 +15,39 @@ public class M3U8ParserTest { public void parseTestSrf() { M3U8Dto[] expected = new M3U8Dto[]{ - createDto("https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_av.m3u8", - new String[]{M3U8Constants.M3U8_PROGRAM_ID, M3U8Constants.M3U8_BANDWIDTH, M3U8Constants.M3U8_CODECS, M3U8Constants.M3U8_CLOSED_CAPTIONS}, - new String[]{"1", "118000", "\"avc1.66.30, mp4a.40.2\"", "NONE"}), - createDto("https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_1_av.m3u8", - new String[]{M3U8Constants.M3U8_PROGRAM_ID, M3U8Constants.M3U8_BANDWIDTH, M3U8Constants.M3U8_CODECS, M3U8Constants.M3U8_CLOSED_CAPTIONS}, - new String[]{"1", "739000", "\"avc1.77.30, mp4a.40.2\"", "NONE"}), - createDto("https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_2_av.m3u8", - new String[]{M3U8Constants.M3U8_PROGRAM_ID, M3U8Constants.M3U8_BANDWIDTH, M3U8Constants.M3U8_CODECS, M3U8Constants.M3U8_CLOSED_CAPTIONS}, - new String[]{"1", "1395000", "\"avc1.77.30, mp4a.40.2\"", "NONE"}), - createDto("https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_a.m3u8", - new String[]{M3U8Constants.M3U8_PROGRAM_ID, M3U8Constants.M3U8_BANDWIDTH, M3U8Constants.M3U8_CODECS, M3U8Constants.M3U8_CLOSED_CAPTIONS}, - new String[]{"1", "23000", "\"mp4a.40.2\"", "NONE"}), + createDto( + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_av.m3u8", + new String[]{M3U8Constants.M3U8_PROGRAM_ID, M3U8Constants.M3U8_BANDWIDTH, M3U8Constants.M3U8_CODECS, + M3U8Constants.M3U8_CLOSED_CAPTIONS}, + new String[]{"1", "118000", "\"avc1.66.30, mp4a.40.2\"", "NONE"}), + createDto( + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_1_av.m3u8", + new String[]{M3U8Constants.M3U8_PROGRAM_ID, M3U8Constants.M3U8_BANDWIDTH, M3U8Constants.M3U8_CODECS, + M3U8Constants.M3U8_CLOSED_CAPTIONS}, + new String[]{"1", "739000", "\"avc1.77.30, mp4a.40.2\"", "NONE"}), + createDto( + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_2_av.m3u8", + new String[]{M3U8Constants.M3U8_PROGRAM_ID, M3U8Constants.M3U8_BANDWIDTH, M3U8Constants.M3U8_CODECS, + M3U8Constants.M3U8_CLOSED_CAPTIONS}, + new String[]{"1", "1395000", "\"avc1.77.30, mp4a.40.2\"", "NONE"}), + createDto( + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_a.m3u8", + new String[]{M3U8Constants.M3U8_PROGRAM_ID, M3U8Constants.M3U8_BANDWIDTH, M3U8Constants.M3U8_CODECS, + M3U8Constants.M3U8_CLOSED_CAPTIONS}, + new String[]{"1", "23000", "\"mp4a.40.2\"", "NONE"}), }; M3U8Parser target = new M3U8Parser(); List<M3U8Dto> actual = target.parse("#EXTM3U\n" - + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=118000,CODECS=\"avc1.66.30, mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" - + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_av.m3u8?start=0.0&end=3305.1\n" - + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=739000,CODECS=\"avc1.77.30, mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" - + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_1_av.m3u8?start=0.0&end=3305.1\n" - + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1395000,CODECS=\"avc1.77.30, mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" - + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_2_av.m3u8?start=0.0&end=3305.1\n" - + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=23000,CODECS=\"mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" - + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_a.m3u8?start=0.0&end=3305.1\n" - + ""); + + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=118000,CODECS=\"avc1.66.30, mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" + + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_av.m3u8?start=0.0&end=3305.1\n" + + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=739000,CODECS=\"avc1.77.30, mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" + + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_1_av.m3u8?start=0.0&end=3305.1\n" + + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1395000,CODECS=\"avc1.77.30, mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" + + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_2_av.m3u8?start=0.0&end=3305.1\n" + + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=23000,CODECS=\"mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" + + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_a.m3u8?start=0.0&end=3305.1\n" + + ""); assertThat(actual, notNullValue()); assertThat(actual.size(), equalTo(4)); @@ -45,6 +55,36 @@ public class M3U8ParserTest { assertThat(actual, Matchers.containsInAnyOrder(expected)); } + @Test + public void parseTestArd() { + + M3U8Dto[] expected = new M3U8Dto[]{ + createDto( + "https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1216_av-b.m3u8", + new String[]{M3U8Constants.M3U8_PROGRAM_ID, M3U8Constants.M3U8_BANDWIDTH, M3U8Constants.M3U8_RESOLUTION, + M3U8Constants.M3U8_CODECS}, + new String[]{"1", "1216000", "640x360", "\"avc1.77.30, mp4a.40.2\""}), + createDto( + "https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1992_av-p.m3u8", + new String[]{M3U8Constants.M3U8_PROGRAM_ID, M3U8Constants.M3U8_BANDWIDTH, M3U8Constants.M3U8_RESOLUTION, + M3U8Constants.M3U8_CODECS}, + new String[]{"1", "1992000", "960x540", "\"avc1.77.30, mp4a.40.2\""}) + }; + + M3U8Parser target = new M3U8Parser(); + List<M3U8Dto> actual = target.parse("#EXTM3U\n" + + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1216000,RESOLUTION=640x360,CODECS=\"avc1.77.30, mp4a.40.2\"\n" + + "https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1216_av-b.m3u8?sd=10&rebase=on&id=\n" + + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1992000,RESOLUTION=960x540,CODECS=\"avc1.77.30, mp4a.40.2\"\n" + + "https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1992_av-p.m3u8?sd=10&rebase=on&id=\n" + + ""); + + assertThat(actual, notNullValue()); + assertThat(actual.size(), equalTo(2)); + + assertThat(actual, Matchers.containsInAnyOrder(expected)); + } + private static M3U8Dto createDto(String aUrl, String[] keys, String[] values) { M3U8Dto dto = new M3U8Dto(aUrl); diff --git a/src/test/java/de/mediathekview/mserver/crawler/ndr/parser/NdrFilmDetailDeserializerTest.java b/src/test/java/de/mediathekview/mserver/crawler/ndr/parser/NdrFilmDetailDeserializerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..03bb508d39a94815170447675ad9f861ffee290e --- /dev/null +++ b/src/test/java/de/mediathekview/mserver/crawler/ndr/parser/NdrFilmDetailDeserializerTest.java @@ -0,0 +1,125 @@ +package de.mediathekview.mserver.crawler.ndr.parser; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import de.mediathekview.mserver.crawler.basic.CrawlerUrlDTO; +import de.mediathekview.mserver.crawler.basic.FilmInfoDto; +import de.mediathekview.mserver.testhelper.FileReader; +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.Collection; +import java.util.Optional; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +@RunWith(Parameterized.class) +public class NdrFilmDetailDeserializerTest { + + @Parameterized.Parameters + public static Collection<Object[]> data() { + return Arrays.asList( + new Object[][]{ + { + "https://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/Sass-So-isst-der-Norden,sendung563148.html", + "/ndr/ndr_film_detail1.html", + // url uses localhost because of wiremock for other tests + "http://localhost:8589/fernsehen/sendungen/sass-so-isst-der-norden/sass404-ardjson_image-5a3e2524-70e1-45f1-96da-27bf9d5c8137.json", + "Sass: So isst der Norden", + "Deftige Eintopfgerichte aus Bremen", + "Rainer Sass macht mit seiner mobilen Küche Station auf dem Bremer Domshof. Mit seinen Kochpartnern vom dortigen Markt bereitet er Deftiges aus frischem Gemüse zu.", + LocalDateTime.of(2018, 3, 18, 16, 30, 0), + Duration.ofMinutes(30).plusSeconds(6) + }, + { + "https://www.ndr.de/fernsehen/Folge-2881-Der-langersehnte-Antrag,sturmderliebe1816.html", + "/ndr/ndr_film_detail2.html", + // url uses localhost because of wiremock for other tests + "http://localhost:8589/fernsehen/sturmderliebe1816-ardjson_image-a5409105-e38b-4847-ba32-fc2c337d7515.json", + "Sturm der Liebe", + "Folge 2881: Der langersehnte Antrag", + "André fasst sich ein Herz und macht Melli den geplanten Antrag. Währenddessen ist Romy enttäuscht, dass Paul lediglich eine gute Freundin in ihr sieht.", + LocalDateTime.of(2018, 3, 15, 8, 10, 0), + Duration.ofMinutes(48).plusSeconds(34) + }, + { + "https://www.ndr.de/fernsehen/sendungen/zapp/Mehr-europaeische-Kontroversen-zeigen,zapp11204.html", + "/ndr/ndr_film_detail3.html", + "https://www.ndr.de/fernsehen/sendungen/zapp/zapp11204-ardjson_image-00b52c24-345e-4e7e-ac78-30573c9294bc.json", + "ZAPP", + "Giegold: \"Mehr europäische Kontroversen zeigen\"", + "Der Europaabgeordnete Sven Giegold (Grüne) fordert im ZAPP Interview einen Europakanal und kritisiert, dass die Gesetzgebung in Brüssel viel zu selten Thema ist.", + LocalDateTime.of(2018, 3, 28, 23, 20, 0), + Duration.ofSeconds(155) + }, + { + "https://www.ndr.de/fernsehen/Sturm-der-Liebe,sendung756612.html", + "/ndr/ndr_film_detail4.html", + "https://www.ndr.de/fernsehen/sturmderliebe1822-ardjson_image-1afbd693-e72e-406a-abec-7b7f7d0bb66f.json", + "Sturm der Liebe", + "Sturm der Liebe (2883)", + "Werner setzt Christoph mit seinem Wissen unter Druck. In die Enge getrieben, verliert Christoph daraufhin die Beherrschung und es kommt zu einer lebensbedrohlichen Situation.", + LocalDateTime.of(2018, 3, 20, 8, 10, 0), + Duration.ofMinutes(49).plusSeconds(28) + }, + { + "https://www.ndr.de/fernsehen/sendungen/tatort/Blutschuld,sendung751232.html", + "/ndr/ndr_film_detail_m3u8.html", + "https://www.ndr.de/fernsehen/livestream/livestream217-ardjson_image-5e9560f0-bc96-4d5b-8a92-cddd3f77966f.json", + "Tatort", + "Blutschuld", + "Der Abfallunternehmer Harald Kosen ist in seinem Schlafzimmer erschlagen worden. Die Kommissare Saalfeld und Keppler sind geschockt von dem kaltblütigen Vorgehen des Mörders.", + LocalDateTime.of(2018, 3, 20, 22, 0, 0), + Duration.ofMinutes(90) + } + }); + } + + private final String requestUrl; + private final String htmlPage; + private final String expectedVideoUrl; + private final String expectedTopic; + private final String expectedTitle; + private final String expectedDescription; + private final LocalDateTime expectedTime; + private final Duration expectedDuration; + + public NdrFilmDetailDeserializerTest(final String aRequestUrl, final String aHtmlPage, final String aExpectedVideoUrl, + final String aExpectedTopic, final String aExpectedTitle, final String aExpectedDescription, final LocalDateTime aExpectedTime, + final Duration aExpectedDuration) { + + requestUrl = aRequestUrl; + htmlPage = aHtmlPage; + expectedVideoUrl = aExpectedVideoUrl; + expectedTopic = aExpectedTopic; + expectedTitle = aExpectedTitle; + expectedDescription = aExpectedDescription; + expectedTime = aExpectedTime; + expectedDuration = aExpectedDuration; + } + + @Test + public void deserializeTest() { + + final String htmlContent = FileReader.readFile(htmlPage); + final Document document = Jsoup.parse(htmlContent); + + final NdrFilmDeserializer target = new NdrFilmDeserializer(); + final Optional<FilmInfoDto> actual = target.deserialize(new CrawlerUrlDTO(requestUrl), document); + + assertThat(actual.isPresent(), equalTo(true)); + FilmInfoDto dto = actual.get(); + + assertThat(dto.getTopic(), equalTo(expectedTopic)); + assertThat(dto.getTitle(), equalTo(expectedTitle)); + assertThat(dto.getDescription(), equalTo(expectedDescription)); + assertThat(dto.getWebsite(), equalTo(requestUrl)); + assertThat(dto.getDuration(), equalTo(expectedDuration)); + assertThat(dto.getTime(), equalTo(expectedTime)); + assertThat(dto.getUrl(), equalTo(expectedVideoUrl)); + } +} diff --git a/src/test/java/de/mediathekview/mserver/crawler/ndr/tasks/NdrSendungsfolgeDetailsTaskTest.java b/src/test/java/de/mediathekview/mserver/crawler/ndr/tasks/NdrSendungsfolgeDetailsTaskTest.java new file mode 100644 index 0000000000000000000000000000000000000000..8bf8c8e9d3854189197fefc390d702a0872b66d1 --- /dev/null +++ b/src/test/java/de/mediathekview/mserver/crawler/ndr/tasks/NdrSendungsfolgeDetailsTaskTest.java @@ -0,0 +1,126 @@ +package de.mediathekview.mserver.crawler.ndr.tasks; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import de.mediathekview.mlib.daten.Film; +import de.mediathekview.mlib.daten.GeoLocations; +import de.mediathekview.mlib.daten.Sender; +import de.mediathekview.mserver.crawler.basic.CrawlerUrlDTO; +import de.mediathekview.mserver.testhelper.AssertFilm; +import de.mediathekview.mserver.testhelper.JsoupMock; +import java.io.IOException; +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.Collection; +import java.util.Set; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.ExecutionException; +import org.jsoup.Jsoup; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.modules.junit4.PowerMockRunnerDelegate; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({Jsoup.class}) +@PowerMockRunnerDelegate(Parameterized.class) +@PowerMockIgnore("javax.net.ssl.*") +public class NdrSendungsfolgeDetailsTaskTest extends NdrTaskTestBase { + + @Parameterized.Parameters + public static Collection<Object[]> data() { + return Arrays.asList( + new Object[][]{ + { + "https://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/Sass-So-isst-der-Norden,sendung563148.html", + "/ndr/ndr_film_detail1.html", + "/fernsehen/sendungen/sass-so-isst-der-norden/sass404-ardjson_image-5a3e2524-70e1-45f1-96da-27bf9d5c8137.json", + "/ndr/ndr_film_detail1.json", + "Sass: So isst der Norden", + "Deftige Eintopfgerichte aus Bremen", + "Rainer Sass macht mit seiner mobilen Küche Station auf dem Bremer Domshof. Mit seinen Kochpartnern vom dortigen Markt bereitet er Deftiges aus frischem Gemüse zu.", + LocalDateTime.of(2018, 3, 18, 16, 30, 0), + Duration.ofMinutes(30).plusSeconds(6), + "https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hi.mp4", + "https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hq.mp4", + "https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hd.mp4", + "", + GeoLocations.GEO_NONE + }, + { + "https://www.ndr.de/fernsehen/Folge-2881-Der-langersehnte-Antrag,sturmderliebe1816.html", + "/ndr/ndr_film_detail2.html", + "/fernsehen/sturmderliebe1816-ardjson_image-a5409105-e38b-4847-ba32-fc2c337d7515.json", + "/ndr/ndr_film_detail2.json", + "Sturm der Liebe", + "Folge 2881: Der langersehnte Antrag", + "André fasst sich ein Herz und macht Melli den geplanten Antrag. Währenddessen ist Romy enttäuscht, dass Paul lediglich eine gute Freundin in ihr sieht.", + LocalDateTime.of(2018, 3, 15, 8, 10, 0), + Duration.ofMinutes(48).plusSeconds(34), + "https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.hi.mp4", + "https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.hq.mp4", + "https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.hd.mp4", + "https://www.ndr.de/media/ut65560.html", + GeoLocations.GEO_DE + } + }); + } + + private final String requestUrl; + private final String htmlPage; + private final String jsonUrl; + private final String jsonFile; + private final String expectedTopic; + private final String expectedTitle; + private final String expectedDescription; + private final LocalDateTime expectedTime; + private final Duration expectedDuration; + private final String expectedUrlSmall; + private final String expectedUrlNormal; + private final String expectedUrlHd; + private final String expectedSubtitle; + private final GeoLocations expectedGeo; + + public NdrSendungsfolgeDetailsTaskTest(final String aRequestUrl, final String aHtmlPage, final String aJsonUrl, final String aJsonFile, + final String aExpectedTopic, final String aExpectedTitle, final String aExpectedDescription, final LocalDateTime aExpectedTime, + final Duration aExpectedDuration, final String aExpectedUrlSmall, final String aExpectedUrlNormal, final String aExpectedUrlHd, + final String aExpectedSubtitle, final GeoLocations aExpectedGeo) { + requestUrl = aRequestUrl; + htmlPage = aHtmlPage; + jsonUrl = aJsonUrl; + jsonFile = aJsonFile; + expectedTopic = aExpectedTopic; + expectedTitle = aExpectedTitle; + expectedDescription = aExpectedDescription; + expectedTime = aExpectedTime; + expectedDuration = aExpectedDuration; + expectedUrlSmall = aExpectedUrlSmall; + expectedUrlNormal = aExpectedUrlNormal; + expectedUrlHd = aExpectedUrlHd; + expectedSubtitle = aExpectedSubtitle; + expectedGeo = aExpectedGeo; + } + + @Test + public void test() throws IOException, ExecutionException, InterruptedException { + JsoupMock.mock(requestUrl, htmlPage); + setupSuccessfulJsonResponse(jsonUrl, jsonFile); + + final ConcurrentLinkedQueue<CrawlerUrlDTO> urls = new ConcurrentLinkedQueue<>(); + urls.add(new CrawlerUrlDTO(requestUrl)); + + final NdrSendungsfolgedetailsTask target = new NdrSendungsfolgedetailsTask(createCrawler(), urls); + final Set<Film> actual = target.invoke(); + + assertThat(actual.size(), equalTo(1)); + AssertFilm.assertEquals(actual.iterator().next(), Sender.NDR, expectedTopic, expectedTitle, expectedTime, expectedDuration, + expectedDescription, + requestUrl, new GeoLocations[]{expectedGeo}, expectedUrlSmall, expectedUrlNormal, expectedUrlHd, expectedSubtitle); + } + +} diff --git a/src/test/java/de/mediathekview/mserver/crawler/ndr/tasks/NdrTaskTestBase.java b/src/test/java/de/mediathekview/mserver/crawler/ndr/tasks/NdrTaskTestBase.java new file mode 100644 index 0000000000000000000000000000000000000000..8757a5d7cf5f75fb4e6df0517924a21a556dffd9 --- /dev/null +++ b/src/test/java/de/mediathekview/mserver/crawler/ndr/tasks/NdrTaskTestBase.java @@ -0,0 +1,22 @@ +package de.mediathekview.mserver.crawler.ndr.tasks; + +import de.mediathekview.mlib.messages.listener.MessageListener; +import de.mediathekview.mserver.base.config.MServerConfigManager; +import de.mediathekview.mserver.crawler.ndr.NdrCrawler; +import de.mediathekview.mserver.progress.listeners.SenderProgressListener; +import de.mediathekview.mserver.testhelper.WireMockTestBase; +import java.util.ArrayList; +import java.util.Collection; +import java.util.concurrent.ForkJoinPool; + +public abstract class NdrTaskTestBase extends WireMockTestBase { + + protected MServerConfigManager rootConfig = MServerConfigManager.getInstance("MServer-JUnit-Config.yaml"); + + protected NdrCrawler createCrawler() { + ForkJoinPool forkJoinPool = new ForkJoinPool(); + Collection<MessageListener> nachrichten = new ArrayList<>(); + Collection<SenderProgressListener> fortschritte = new ArrayList<>(); + return new NdrCrawler(forkJoinPool, nachrichten, fortschritte, rootConfig); + } +} diff --git a/src/test/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmDetailDeserializerTest.java b/src/test/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmDetailDeserializerTest.java index aa6a7c84cafbea7390b14eb8079154bbf3adec15..4d9c5c0d4bc18b0690d9411b448360a4a9ca0c8a 100644 --- a/src/test/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmDetailDeserializerTest.java +++ b/src/test/java/de/mediathekview/mserver/crawler/rbb/parser/RbbFilmDetailDeserializerTest.java @@ -4,6 +4,7 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; import de.mediathekview.mserver.crawler.basic.CrawlerUrlDTO; +import de.mediathekview.mserver.crawler.basic.FilmInfoDto; import de.mediathekview.mserver.testhelper.FileReader; import java.time.Duration; import java.time.LocalDateTime; @@ -65,10 +66,10 @@ public class RbbFilmDetailDeserializerTest { final Document document = Jsoup.parse(htmlContent); final RbbFilmDetailDeserializer target = new RbbFilmDetailDeserializer(); - final Optional<RbbFilmInfoDto> actual = target.deserialize(new CrawlerUrlDTO(requestUrl), document); + final Optional<FilmInfoDto> actual = target.deserialize(new CrawlerUrlDTO(requestUrl), document); assertThat(actual.isPresent(), equalTo(true)); - RbbFilmInfoDto dto = actual.get(); + FilmInfoDto dto = actual.get(); assertThat(dto.getTopic(), equalTo(expectedTopic)); assertThat(dto.getTitle(), equalTo(expectedTitle)); diff --git a/src/test/resources/ndr/ndr_film_detail1.html b/src/test/resources/ndr/ndr_film_detail1.html new file mode 100644 index 0000000000000000000000000000000000000000..4b0bec210370c1d6836687d5104bfdc8e44502bc --- /dev/null +++ b/src/test/resources/ndr/ndr_film_detail1.html @@ -0,0 +1,701 @@ +<!DOCTYPE html> +<html lang="de" xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" prefix="og: http://ogp.me/ns#"> +<!-- base_head --> +<head> + +<title>Deftige Eintopfgerichte aus Bremen | NDR.de - Fernsehen - Sendungen A-Z - Rainer Sass - So isst der Norden</title> +<meta charset="utf-8"> +<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<meta name="title" content="Deftige Eintopfgerichte aus Bremen " /> +<meta property="og:title" content="Deftige Eintopfgerichte aus Bremen "/> +<meta name="description" content="Rainer Sass macht mit seiner mobilen Küche Station auf dem Bremer Domshof. Mit seinen Kochpartnern vom dortigen Markt bereitet er Deftiges aus frischem Gemüse zu." /> +<meta property="og:description" content="Rainer Sass macht mit seiner mobilen Küche Station auf dem Bremer Domshof. Mit seinen Kochpartnern vom dortigen Markt bereitet er Deftiges aus frischem Gemüse zu." /> +<meta property="og:image" content="https://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/sendungsbild45850_v-contentxl.jpg" /> +<link rel="canonical" href="/fernsehen/sendungen/sass-so-isst-der-norden/Sass-So-isst-der-Norden,sendung563148.html" /> +<meta name="twitter:card" content="summary_large_image"> +<meta name="twitter:creator" content="@ndr"> +<meta name="twitter:site" content="@ndr"> +<meta name="twitter:domain" content="https://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/Sass-So-isst-der-Norden,sendung563148.html"/> +<meta name="twitter:title" content="Deftige Eintopfgerichte aus Bremen "/> +<meta name="twitter:description" content="Rainer Sass macht mit seiner mobilen Küche Station auf dem Bremer Domshof. Mit seinen Kochpartnern vom dortigen Markt bereitet er Deftiges aus frischem Gemüse zu."/> +<meta name="twitter:image:src" content="https://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/sendungsbild45850_v-contentxl.jpg" /> +<meta name="keywords" lang="de" content="Lebensmittel,NDR,Norddeutscher Rundfunk,Norddeutschland,Radio,Fernsehen,TV" /> +<meta name="author" content="NDR" /> +<meta name="generator" content="orig2" /> +<meta name="robots" content="index, follow, noarchive" /> +<meta name="language" content="de" /> +<link rel="icon" href="/favicon.ico" type="image/x-icon" /> +<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> +<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png"> +<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png"> +<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png"> +<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png"> +<link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png"> +<link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png"> +<link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png"> +<link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png"> +<link rel="icon" type="image/png" href="/favicon-196x196.png" sizes="196x196"> +<link rel="icon" type="image/png" href="/favicon-160x160.png" sizes="160x160"> +<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"> +<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"> +<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"> +<meta name="msapplication-TileColor" content="#0c1754"> +<meta name="msapplication-TileImage" content="/mstile-144x144.png"> +<link type="text/css" rel="stylesheet" href="/resources/css/generated/ndrmerged.css" media="all" /> +<!--[if lte IE 8]> +<link type="text/css" rel="stylesheet" href="/resources/css/ie.css" media="all" /> +<![endif]--> +<!--[if IE 9 ]> +<link type="text/css" rel="stylesheet" href="/resources/css/ie9.css" media="all" /> +<![endif]--> +<link type="text/css" rel="stylesheet" href="/resources/css/generated/print.css" media="print" /> +<script type="text/javascript" src="/common/resources/lib/ndrde_base.js"></script> +<script type="text/javascript" src="/resources/js/scripts.js"></script> +<!--[if lt IE 9]> +<script> +document.createElement('header'); +document.createElement('nav'); +document.createElement('section'); +document.createElement('article'); +document.createElement('aside'); +document.createElement('footer'); +document.createElement('hgroup'); +</script> +<![endif]--> +</head> +<body class="branding tv ndrtv_1514" > +<a href="#content" title="Skip to content" class="skiplink">Direkt zum Inhalt</a> +<div id="page"> +<header id="pageheader" role="navigation"> +<div class="mainnav"> +<a id="dachmarkenlogo" href="/index.html" > +<span class="invisible srlabel">zur NDR Homepage</span> +<svg width="100%" height="100%" viewBox="0 -0.096 64 40"> +<path fill="#ffffff" d="M8.923,32.342L3.524,22.62v9.723H0V15.671h3.699l5.624,10.373V15.671h3.524v16.671H8.923z M12.847,15.671V0 +h1.975v15.671H12.847z M12.847,39.465v-7.123h1.975v7.123H12.847z M20.72,15.671c4.124,0,6.249,1.975,6.249,5.798v5.024 +c0,3.924-2.049,5.849-6.249,5.849h-5.898V15.671H20.72z M20.395,29.193c2,0,2.974-1,2.974-3.049v-4.299c0-2.024-1-3.024-2.974-3.024 +h-1.774v10.372H20.395z M37.341,32.342l-2.974-6.398h-2v6.398h-3.699V15.671h5.824c4.099,0,6.048,1.625,6.048,5.099 +c0,2.299-0.85,3.674-2.75,4.499l3.524,7.073H37.341z M34.642,22.919c1.475,0,2.349-0.85,2.349-2.274 +c0-1.475-0.649-2.024-2.349-2.024h-2.35v4.299H34.642z"/> +<path fill="#ffffff" d="M43.571,32.27v-2.647h2.038v2.647H43.571z"/> +<path fill="#ffffff" d="M53.002,32.268l-0.045-0.99c-0.273,0.275-0.652,0.542-1.138,0.801c-0.478,0.251-1.004,0.385-1.581,0.401 +c-0.842-0.016-1.501-0.316-1.979-0.902c-0.516-0.594-0.773-1.395-0.773-2.402V23.27c0.015-2.383,0.925-3.582,2.73-3.598 +c0.607,0.016,1.126,0.137,1.559,0.363c0.432,0.218,0.811,0.496,1.137,0.831v-5.108h1.943v16.51H53.002z M52.911,22.447 +c-0.198-0.203-0.476-0.41-0.833-0.621c-0.38-0.187-0.772-0.289-1.176-0.304c-1.014,0-1.504,0.671-1.473,2.014v5.244 +c0.015,1.218,0.499,1.834,1.45,1.85c0.403-0.016,0.803-0.137,1.199-0.363c0.358-0.21,0.636-0.41,0.833-0.597V22.447z"/> +<path fill="#ffffff" d="M64.171,28.972c-0.045,2.339-1.237,3.528-3.575,3.567c-2.467-0.07-3.693-1.344-3.677-3.82v-5.18 +c0.03-2.562,1.286-3.859,3.768-3.891c2.307,0.062,3.469,1.291,3.484,3.685v3.217h-5.285v2.398c-0.016,1.191,0.54,1.795,1.666,1.811 +c0.54,0.016,0.966-0.129,1.278-0.435c0.281-0.29,0.422-0.764,0.422-1.422v-0.459h1.918V28.972z M62.298,23.2 +c-0.015-1.243-0.582-1.873-1.7-1.888c-1.141,0.016-1.719,0.645-1.734,1.888v1.735h3.435V23.2z"/> +<image src="/resources/images/logos/NDR_logo.png" width="100%" height="100%" /> +</svg> +<span id="claim"> +<svg width="100%" height="100%" viewBox="18.923 35.779 69 8"> +<path d="M8.923,32.342L3.524,22.62v9.723H0V15.671h3.699l5.624,10.373V15.671h3.524v16.671H8.923z M12.847,15.671V0h1.975v15.671 +H12.847z M12.847,39.465v-7.123h1.975v7.123H12.847z M20.72,15.671c4.124,0,6.249,1.975,6.249,5.798v5.024 +c0,3.924-2.049,5.849-6.249,5.849h-5.898V15.671H20.72z M20.395,29.193c2,0,2.974-1,2.974-3.049v-4.299c0-2.024-1-3.024-2.974-3.024 +h-1.774v10.372H20.395z M37.341,32.342l-2.974-6.398h-2v6.398h-3.699V15.671h5.824c4.099,0,6.048,1.625,6.048,5.099 +c0,2.299-0.85,3.674-2.75,4.499l3.524,7.073H37.341z M34.642,22.919c1.475,0,2.349-0.85,2.349-2.274 +c0-1.475-0.649-2.024-2.349-2.024h-2.35v4.299H34.642z"/> +<path fill="#ffffff" d="M23.036,40.896c0.026,1.634-0.632,2.438-1.975,2.412h-1.394v-6.67H21c0.75,0,1.279,0.193,1.587,0.58 +c0.306,0.393,0.455,0.955,0.449,1.685V40.896z M22.197,38.663c-0.006-0.869-0.391-1.306-1.154-1.312h-0.546v5.245h0.565 +c0.77-0.023,1.148-0.529,1.135-1.518V38.663z"/> +<path fill="#ffffff" d="M26.229,43.309l-0.019-0.426c-0.334,0.323-0.689,0.484-1.064,0.484c-0.388-0.006-0.693-0.125-0.914-0.357 +c-0.218-0.228-0.327-0.536-0.327-0.924v-0.279c0.019-1.03,0.771-1.6,2.258-1.711v-0.674c0.006-0.479-0.207-0.715-0.641-0.709 +c-0.468-0.006-0.699,0.248-0.693,0.764c0,0.02,0,0.075,0,0.167h-0.78v-0.166c0.009-0.952,0.51-1.432,1.502-1.438 +c0.948,0.006,1.422,0.459,1.422,1.357v3.912H26.229z M26.163,40.701c-0.971,0.098-1.453,0.462-1.447,1.092v0.21 +c0,0.447,0.21,0.674,0.631,0.681c0.266,0,0.538-0.144,0.816-0.431V40.701z"/> +<path fill="#ffffff" d="M30.761,42.134c-0.006,0.398-0.142,0.71-0.406,0.937c-0.277,0.224-0.649,0.34-1.119,0.35 +c-1.02-0.016-1.539-0.479-1.558-1.386v-0.292h0.81v0.245c0,0.526,0.255,0.786,0.767,0.779c0.451-0.007,0.68-0.217,0.686-0.631 +c-0.006-0.026-0.009-0.052-0.009-0.078c-0.025-0.248-0.145-0.458-0.359-0.631c-0.211-0.167-0.455-0.336-0.732-0.509 +c-0.271-0.176-0.51-0.386-0.718-0.631c-0.211-0.248-0.32-0.563-0.326-0.944v-0.098c0.013-0.783,0.496-1.181,1.449-1.194 +c0.916,0.013,1.382,0.439,1.401,1.278v0.258h-0.781c0-0.114,0-0.185,0-0.211c-0.006-0.441-0.23-0.662-0.672-0.662 +c-0.224,0-0.385,0.054-0.483,0.162c-0.092,0.108-0.137,0.232-0.137,0.373c0,0.02,0.003,0.042,0.009,0.069 +c0.016,0.114,0.058,0.221,0.127,0.318c0.072,0.102,0.159,0.2,0.26,0.294c0.11,0.085,0.227,0.168,0.35,0.25 +c0.129,0.088,0.258,0.178,0.388,0.27c0.277,0.176,0.523,0.384,0.737,0.623c0.101,0.121,0.181,0.258,0.241,0.412 +c0.05,0.154,0.076,0.332,0.076,0.534V42.134z"/> +<path fill="#ffffff" d="M36.561,41.84c-0.013,0.965-0.577,1.455-1.692,1.468h-1.607v-6.67h1.499 +c1.097-0.006,1.639,0.447,1.626,1.362v0.62c0.006,0.585-0.292,0.952-0.897,1.098c0.708,0.091,1.065,0.521,1.071,1.289V41.84z +M35.546,38.152c0.013-0.551-0.297-0.818-0.929-0.802H34.1v2.081h0.621c0.557,0,0.832-0.305,0.825-0.915V38.152z M35.712,41.105 +c0-0.34-0.068-0.587-0.204-0.741c-0.142-0.154-0.386-0.23-0.73-0.23H34.1v2.462h0.64c0.648-0.006,0.972-0.338,0.972-0.996V41.105z" +/> +<path fill="#ffffff" d="M40.356,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34h-2.202v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M39.576,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M44.139,42.134c-0.006,0.398-0.142,0.71-0.406,0.937c-0.277,0.224-0.649,0.34-1.119,0.35 +c-1.02-0.016-1.539-0.479-1.558-1.386v-0.292h0.81v0.245c0,0.526,0.255,0.786,0.767,0.779c0.451-0.007,0.68-0.217,0.686-0.631 +c-0.006-0.026-0.009-0.052-0.009-0.078c-0.025-0.248-0.145-0.458-0.359-0.631c-0.211-0.167-0.455-0.336-0.732-0.509 +c-0.271-0.176-0.51-0.386-0.718-0.631c-0.211-0.248-0.32-0.563-0.326-0.944v-0.098c0.013-0.783,0.496-1.181,1.449-1.194 +c0.916,0.013,1.382,0.439,1.401,1.278v0.258h-0.781c0-0.114,0-0.185,0-0.211c-0.006-0.441-0.23-0.662-0.672-0.662 +c-0.224,0-0.385,0.054-0.483,0.162c-0.092,0.108-0.137,0.232-0.137,0.373c0,0.02,0.003,0.042,0.009,0.069 +c0.016,0.114,0.058,0.221,0.127,0.318c0.072,0.102,0.159,0.2,0.26,0.294c0.11,0.085,0.227,0.168,0.35,0.25 +c0.129,0.088,0.258,0.178,0.388,0.27c0.277,0.176,0.523,0.384,0.737,0.623c0.101,0.121,0.181,0.258,0.241,0.412 +c0.05,0.154,0.076,0.332,0.076,0.534V42.134z"/> +<path fill="#ffffff" d="M47.02,43.289c-0.265,0.052-0.487,0.078-0.667,0.078c-0.792,0.006-1.182-0.417-1.169-1.272V38.82h-0.67 +v-0.673h0.68v-1.464l0.81-0.143v1.606h0.951v0.673h-0.951v3.309c-0.006,0.382,0.166,0.57,0.516,0.564 +c0.135,0,0.293-0.023,0.473-0.069L47.02,43.289z"/> +<path fill="#ffffff" d="M50.614,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34h-2.202v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M49.833,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M55.468,43.309l-0.019-0.426c-0.334,0.323-0.689,0.484-1.064,0.484c-0.388-0.006-0.693-0.125-0.914-0.357 +c-0.218-0.228-0.327-0.536-0.327-0.924v-0.279c0.019-1.03,0.771-1.6,2.258-1.711v-0.674c0.006-0.479-0.207-0.715-0.641-0.709 +c-0.468-0.006-0.699,0.248-0.693,0.764c0,0.02,0,0.075,0,0.167h-0.78v-0.166c0.009-0.952,0.51-1.432,1.502-1.438 +c0.948,0.006,1.422,0.459,1.422,1.357v3.912H55.468z M55.402,40.701c-0.971,0.098-1.453,0.462-1.447,1.092v0.21 +c0,0.447,0.21,0.674,0.631,0.681c0.266,0,0.538-0.144,0.816-0.431V40.701z"/> +<path fill="#ffffff" d="M61.18,43.308v-3.76c0.006-0.459-0.155-0.685-0.485-0.679c-0.26,0.006-0.504,0.166-0.732,0.479v3.96h-0.81 +v-3.829c-0.006-0.407-0.18-0.61-0.521-0.61c-0.252,0-0.486,0.137-0.701,0.41v4.029h-0.814v-5.161h0.732l0.028,0.449 +c0.319-0.352,0.668-0.527,1.047-0.527c0.467-0.006,0.781,0.204,0.942,0.63c0.129-0.199,0.297-0.355,0.502-0.469 +c0.202-0.107,0.405-0.161,0.611-0.161c0.672,0,1.009,0.43,1.009,1.289v3.95H61.18z"/> +<path fill="#ffffff" d="M67.57,43.308l-1.433-3.85c-0.095-0.267-0.201-0.582-0.317-0.943c-0.124-0.368-0.189-0.562-0.195-0.582 +c0.013,0.146,0.029,0.646,0.049,1.5v3.875h-0.839v-6.67h1.091l1.248,3.332c0.098,0.248,0.202,0.538,0.312,0.87 +c0.11,0.362,0.168,0.549,0.175,0.562c-0.013-0.14-0.025-0.621-0.038-1.441v-3.322h0.839v6.67H67.57z"/> +<path fill="#ffffff" d="M72.568,41.859c-0.013,1.018-0.528,1.538-1.547,1.561c-1.035-0.029-1.552-0.55-1.552-1.562v-2.31 +c0-0.459,0.132-0.825,0.397-1.099c0.259-0.267,0.641-0.404,1.145-0.41c1.025,0.02,1.544,0.524,1.557,1.513V41.859z M71.759,39.571 +c0-0.247-0.065-0.44-0.195-0.58c-0.136-0.133-0.317-0.2-0.542-0.2c-0.222,0-0.398,0.067-0.528,0.2 +c-0.143,0.14-0.214,0.333-0.214,0.58v2.327c0.006,0.508,0.254,0.765,0.743,0.771c0.479,0,0.725-0.257,0.738-0.771V39.571z"/> +<path fill="#ffffff" d="M75.615,39.025c-0.381,0.026-0.668,0.125-0.861,0.298c-0.208,0.173-0.368,0.402-0.478,0.689v3.295h-0.807 +v-5.162h0.78v0.85c0.195-0.306,0.396-0.532,0.6-0.679c0.208-0.146,0.463-0.232,0.766-0.258V39.025z"/> +<path fill="#ffffff" d="M78.298,43.308l-0.019-0.413c-0.114,0.115-0.272,0.226-0.474,0.334c-0.199,0.104-0.418,0.161-0.659,0.167 +c-0.351-0.006-0.625-0.132-0.825-0.376C76.107,42.772,76,42.439,76,42.019v-2.461c0.006-0.993,0.385-1.493,1.137-1.499 +c0.253,0.006,0.469,0.057,0.649,0.151c0.18,0.091,0.338,0.207,0.474,0.346v-2.128h0.81v6.879H78.298z M78.26,39.215 +c-0.083-0.084-0.198-0.17-0.347-0.258c-0.159-0.078-0.322-0.121-0.49-0.127c-0.422,0-0.627,0.28-0.614,0.839v2.186 +c0.006,0.507,0.208,0.764,0.604,0.771c0.168-0.006,0.334-0.057,0.5-0.151c0.149-0.087,0.265-0.17,0.347-0.249V39.215z"/> +<path fill="#ffffff" d="M82.992,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34H80.79v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M82.211,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M86.021,43.308v-3.829c0.006-0.433-0.161-0.646-0.501-0.64c-0.183,0.006-0.349,0.062-0.497,0.166 +c-0.148,0.107-0.262,0.208-0.341,0.303v4h-0.814v-5.161h0.752l0.028,0.483c0.117-0.133,0.27-0.26,0.459-0.381 +c0.18-0.121,0.387-0.184,0.621-0.19c0.729-0.006,1.097,0.407,1.103,1.24v4.009H86.021z"/> +<image src="/resources/images/logos/NDR_claim.png" width="100%" height="100%" /> +</svg> +</span> +</a> +<!-- googleoff: index --> +<nav> +<ul id="navigation" role="navigation" > +<li > +<a href="/nachrichten/index.html" class="mn_item_1">Nachrichten</a> +<ul class="subnav subnav_item_1"> +<li><a href="/nachrichten/niedersachsen/index.html">Niedersachsen</a></li> +<li><a href="/nachrichten/schleswig-holstein/index.html">Schleswig-Holstein</a></li> +<li><a href="/nachrichten/mecklenburg-vorpommern/index.html">Mecklenburg-Vorpommern</a></li> +<li><a href="/nachrichten/hamburg/index.html">Hamburg</a></li> +<li><a href="/nachrichten/wetter/index.html">Wetter</a></li> +<li><a href="/nachrichten/verkehr/index.html">Verkehr</a></li> +</ul> +</li> +<li > +<a href="/sport/index.html" class="mn_item_2">Sport</a> +<ul class="subnav subnav_item_2"> +<li><a href="/sport/fussball/index.html">Fußball</a></li> +<li><a href="/sport/handball/index.html">Handball</a></li> +<li><a href="/sport/mehr_sport/index.html">Mehr Sport</a></li> +<li><a href="/sport/ergebnisse/index.html">Ergebnisse</a></li> +<li><a href="/sport/live/index.html">Live</a></li> +</ul> +</li> +<li > +<a href="/ratgeber/index.html" class="mn_item_3">Ratgeber</a> +<ul class="subnav subnav_item_3"> +<li><a href="/ratgeber/kochen/index.html">Kochen</a></li> +<li><a href="/ratgeber/reise/index.html">Reise</a></li> +<li><a href="/ratgeber/garten/index.html">Garten</a></li> +<li><a href="/ratgeber/gesundheit/index.html">Gesundheit</a></li> +<li><a href="/ratgeber/verbraucher/index.html">Verbraucher</a></li> +</ul> +</li> +<li > +<a href="/kultur/index.html" class="mn_item_4">Kultur</a> +<ul class="subnav subnav_item_4"> +<li><a href="/kultur/musik/index.html">Musik</a></li> +<li><a href="/kultur/film/index.html">Film</a></li> +<li><a href="/kultur/buch/index.html">Buch</a></li> +<li><a href="/kultur/kunst/index.html">Kunst</a></li> +<li><a href="/kultur/geschichte/index.html">Geschichte</a></li> +</ul> +</li> +<li class="active"> +<a href="/fernsehen/index.html" class="mn_item_5 active">Fernsehen</a> +<ul class="subnav subnav_item_5"> +<li><a href="/fernsehen/livestream/index.html">Livestream</a></li> +<li><a class="active" href="/fernsehen/sendungen/index.html">Sendungen A-Z</a></li> +<li><a href="/fernsehen/programm/index.html">Programm</a></li> +<li><a href="/fernsehen/service/index.html">Service</a></li> +<li class="socialmedia-link facebook"><a href="https://www.facebook.com/ndrfernsehen" title="NDR Fernsehen bei Facebook" tabindex="0"><span class="icon icon_facebook"></span><span class="socialmedia-label">NDR Fernsehen bei Facebook</span></a></li> +</ul> +</li> +<li > +<a href="/radio/index.html" class="mn_item_6">Radio</a> +<ul class="subnav subnav_item_6"> +</ul> +</li> +<li > +<a href="/mediathek/index.html" class="mn_item_7">Mediathek</a> +<ul class="subnav subnav_item_7"> +<li><a href="/mediathek/sendung_verpasst/index.html">Sendung verpasst</a></li> +<li><a href="/mediathek/sendungen_a-z/index.html">Sendungen A-Z</a></li> +<li><a href="/mediathek/audio/index.html">Audio</a></li> +</ul> +</li><li id="menusearch"> +<a href="#" class="menusearch" title=""><span class="invisible srlabel">Suche einblenden</span></a> +<div class="quicksearch group"> +<form id="search" action="/suche10.html" method="get"> +<div class="form_element w66"> +<div class="modulepadding"> +<label for="searchword" class="invisible">Suchbegriffe:</label> +<input id="searchword" type="text" name="query" placeholder="Suchbegriff" /> +</div> +</div> +<div class="form_element w33" id="quicksearchsubmit"> +<div class="modulepadding"> +<button type="submit" class="button_sprite w100"><span>Suchen</span></button> +</div> +</div> +<div class="form_element w100"> +<div class="modulepadding"> +<label for="check_mediathek" class="smallelement"> +<input id="check_epg" type="checkbox" name="search_epg" value="1" checked="checked"> +<input id="sort_by_checkbox" type="hidden" name="sort_by" value="date"> +<span>nur im Fernsehprogramm suchen</span></label> +</div> +</div> +</form> +</div> +</li> +</ul> +</nav> +</div> +<div class="subnavbar"> +<div class="branding_nav"> +<nav> +<ul id="branding_navigation" class="sass-so-isst-der-norden"> +<li><a href="/fernsehen/sendungen/sass-so-isst-der-norden/rueckschau/index.html">Rückschau</a></li> +<li><a href="/fernsehen/sendungen/sass-so-isst-der-norden/rezepte/index.html">Rezepte</a></li></ul> +</nav> +</div> +<!-- googleon: index --><div class="horizon"></div> +<div id="brandinglogo"> +<a title="Zur Startseite: Sass: So isst der Norden" href="http://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/index.html"> +<img src="/resources/images/logos/ndr_brand_sprite_ndrtv_1514.png" alt="Sass: So isst der Norden"/> +</a> +</div> +</div> +</header><div class="pagepadding"> +<article class="w66 "> +<div class="modulepadding copytext"> +<div itemscope itemtype="http://schema.org/Episode"> +<header> +<h1><span itemprop="headline">Sass: So isst der Norden</span></h1> +<div class="subtitle"><span itemprop="alternateName">Deftige Eintopfgerichte aus Bremen</span></div><p> +<span itemprop="publication" itemscope itemtype="http://schema.org/BroadcastEvent"> +<span itemprop="startDate" content="2018-03-18T16:30:00.000+01:00"> +Sonntag, 18. März 2018, 16:30</span> bis +<span itemprop="endDate" content="2018-03-18T17:00:00.000+01:00"> +17:00 Uhr</span</span><span class="icon icon_hd" title="HD"></span><br /> +<span style="font-weight:normal;"><span itemprop="publication" itemscope itemtype="http://schema.org/BroadcastEvent"> +<span itemprop="startDate" content="2018-03-20T01:50:00.000+01:00"> +Dienstag, 20. März 2018, 01:50</span> bis +<span itemprop="endDate" content="2018-03-20T02:20:00.000+01:00"> +02:20 Uhr</span</span></span><br /></p> +</header> +<span itemprop="thumbnailUrl" content="https://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/sendungsbild45850_v-einspaltig.jpg"></span> +<!-- start ncc mediaplayer --> +<div class="projekktor_holder " itemscope itemtype="http://schema.org/VideoObject"> +<span itemprop="contentUrl" content="https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hq.mp4" /> +<meta itemprop="embedURL" content="http://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/sass404-player.html" /> +<span itemprop="thumbnailUrl" content="http://www.ndr.de/fernsehen/sass402_v-einspaltig.jpg"></span> +<span itemprop="duration" content="30:06" /> +<span itemprop="uploadDate" content="2018-03-18T16:33:36.531+01:00" /> +<img width="192" height="144" src="/fernsehen/sass402_v-content.jpg" alt="Rainer Sass kocht mit Biogärtner Gernot Riedel in der Bremer Innenstadt " title="Rainer Sass kocht mit Biogärtner Gernot Riedel in der Bremer Innenstadt" width=0 height=0 style='display:none' /> +<iframe +id="pp_sass404" +width="100%" +height="100%" +frameborder="0" +style="display: block;" +webkitAllowFullScreen +mozallowfullscreen +allowFullScreen +src="http://localhost:8589/fernsehen/sendungen/sass-so-isst-der-norden/sass404-ardplayer_image-5a3e2524-70e1-45f1-96da-27bf9d5c8137_theme-ndrde.html?autoplay=false" +></iframe> +<div class="mplayer_textcontent complete_embedded"> +<div class="padding group"> +<div class="functions"> +<div class="social-media meta"> +<a href="http://de.facebook.com/sharer.php?u=https://www.ndr.de%2Ffernsehen%2Fsendungen%2Fsass-so-isst-der-norden%2FDeftige-Eintopfgerichte-aus-Bremen%2Csass404.html&t=Deftige+Eintopfgerichte+aus+Bremen" class="socialmedia"><span class="icon icon_facebook"></span></a> +<a href="http://twitter.com/share?url=https://www.ndr.de%2Ffernsehen%2Fsendungen%2Fsass-so-isst-der-norden%2FDeftige-Eintopfgerichte-aus-Bremen%2Csass404.html&text=Deftige+Eintopfgerichte+aus+Bremen" class="socialmedia"><span class="icon icon_twitter"></span></a> +</div> +<div class="features"> +<div class="rating_wrapper"> +<div class="rating_wrapper"> +<div class="rating" data-rating="4.333333333333333" data-uuid="91f76dd3-7b25-4ba7-9bcf-f321223d1a43" data-obid="91f76dd3-7b25-4ba7-9bcf-f321223d1a43" title="Bisherige Bewertung: 4,33 Sterne bei 9 Bewertungen"> +<ul> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +</ul> +<p> +<span>4,33</span> bei 9 Bewertungen +</p> +</div> +</div> +<div class="rating_confirm"> +<div class="panel send"> +<p>Mit <span class="amount"></span> von 5 Sternen</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>bewerten</a></p> +</div> +<div class="panel response"> +<p>Vielen Dank.</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>schließen</a></p> +</div> +<div class="panel reject"> +<p>Sie haben bereits abgestimmt.</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>schließen</a></p> +</div> +</div> +</div> +</div> +</div> +</div> +<div class="playerfooter group"> +<div class="logo"></div> +</div> +</div> +</div> +<!-- ende mediaplayer --> +<span itemprop="video" itemscope itemtype="http://schema.org/VideoObject"> +<span itemprop="contentUrl" content="https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hq.mp4" /> +<meta itemprop="embedURL" content="https://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/sass404-externalPlayer.html" /> +</span> +<span itemprop="text"><p>Rainer Sass macht Station in der Bremer Innenstadt. Auf dem Domshof bieten von Montag bis Sonnabend mehr als 50 Markthändler regionale Spezialitäten an. In dieser Jahreszeit gibt es auf der Schlemmermeile zwischen Altstadt und Shoppingviertel vor allem jede Menge frisches Herbstgemüse, das Appetit auf deftige Eintöpfe oder vegetarische Gerichte macht.</p> +<div class="contentimage w50"> +<a href="/fernsehen/sendungen/sass-so-isst-der-norden/sendungsbild45854_v-contentgross.jpg" class="zoomimage" title="Rainer Sass und Gernot Riedel zeigen, was man Leckeres aus frischem Gemüse kochen kann. © NDR/dmfilm/Florian Kruck, honorarfrei"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/sendungen/sass-so-isst-der-norden/sendungsbild45854_v-einspaltig.jpg" data-alt="Rainer Sass und Gernot Riedel mit Gemüsekorb. © NDR/dmfilm/Florian Kruck, honorarfrei " data-title="Rainer Sass und Gernot Riedel mit Gemüsekorb." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/sendungen/sass-so-isst-der-norden/sendungsbild45854_v-einspaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Rainer Sass und Gernot Riedel mit Gemüsekorb. © NDR/dmfilm/Florian Kruck, honorarfrei " title="Rainer Sass und Gernot Riedel mit Gemüsekorb." class="img resize" /> +</noscript> +</div> +<div class="zoomtt"> +<span class="icon icon_zoom"></span> +Bild vergrößern +</div> +</a> +<span class="caption">Rainer Sass und Gernot Riedel zeigen, was man Leckeres aus frischem Gemüse kochen kann.</span> +</div><p>An seiner mobilen Küche empfängt Rainer Sass zunächst Gernot Riedel. Gemeinsam mit dem Bremer Biogärtner bereitet er einen herbstlichen Gemüsesalat aus Sellerie, Möhren, Steckrübe, Gurken und Äpfeln zu. Der besondere Clou: Statt mit Öl und Essig veredelt Rainer Sass den Salat mit einer raffinierten Vinaigrette aus gekochtem Lauch und saurer Sahne.</p> +<h3>Steckrüben sind wieder im Trend</h3> +<div class="contentimage w50"> +<a href="/fernsehen/sendungen/sass-so-isst-der-norden/sendungsbild45852_v-contentgross.jpg" class="zoomimage" title="Pinkel ist eine Spezialität aus Bremen und Umgebung. Die deftigen Würste werden gern zu Grünkohl serviert. © NDR/dmfilm/Florian Kruck, honorarfrei"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/sendungen/sass-so-isst-der-norden/sendungsbild45852_v-einspaltig.jpg" data-alt="Rainer Sass und Elke Schmidt mit Pinkel. © NDR/dmfilm/Florian Kruck, honorarfrei " data-title="Rainer Sass und Elke Schmidt mit Pinkel." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/sendungen/sass-so-isst-der-norden/sendungsbild45852_v-einspaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Rainer Sass und Elke Schmidt mit Pinkel. © NDR/dmfilm/Florian Kruck, honorarfrei " title="Rainer Sass und Elke Schmidt mit Pinkel." class="img resize" /> +</noscript> +</div> +<div class="zoomtt"> +<span class="icon icon_zoom"></span> +Bild vergrößern +</div> +</a> +<span class="caption">Pinkel ist eine Spezialität aus Bremen und Umgebung. Die deftigen Würste werden gern zu Grünkohl serviert.</span> +</div><p>Feinkosthändlerin Elke Schmidt hilft Rainer Sass im Anschluss bei der Zubereitung von Steckrüben-Eintopf. Das süßlich schmeckende und vitaminreiche Gemüse war lange Zeit aus der Mode, nicht zuletzt, weil es in Kriegs- und Notzeiten oft als einziges Lebensmittel zur Verfügung stand. Rainer Sass und seine Kochpartnerin verwenden für den Eintopf neben Steckrüben geräucherte Schweinerippchen, Bauchspeck, Möhren und Kartoffeln. Als Einlage kommt eine lokale Wurstspezialität ins Spiel: Bremer Pinkel.</p><div class="contentbox list voll"> +<div class="boxhead">Die Rezepte zur Sendung</div> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/sendungen/sass-so-isst-der-norden/rezepte/gemuesesalat104_v-einspaltig.jpg" data-alt="Lauwarmer Gemüsesalat auf einem Teller © NDR Fotograf: Florian Kruck" data-title="Lauwarmer Gemüsesalat auf einem Teller" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/sendungen/sass-so-isst-der-norden/rezepte/gemuesesalat104_v-einspaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Lauwarmer Gemüsesalat auf einem Teller © NDR Fotograf: Florian Kruck" title="Lauwarmer Gemüsesalat auf einem Teller" class="img resize" /> +</noscript> +</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/ratgeber/kochen/rezepte/rezeptdb6_id-10880_broadcast-1514_station-ndrtv.html" title="Zum Artikel: Link zu einem Rezept für lauwarmen Gemüsesalat" > +Lauwarmer Gemüsesalat +</a> +</h2> +<div class="teasertext"> +<p> +Sättigender als ein Blattsalat, aber dennoch leicht ist dieses Gericht von Rainer Sass. Besonderheit: das cremige Dressing aus püriertem Lauch, Kartoffeln und saurer Sahne. +<a title="Zum Artikel: Lauwarmer Gemüsesalat" href="/ratgeber/kochen/rezepte/rezeptdb6_id-10880_broadcast-1514_station-ndrtv.html" class="cta " >mehr</a> +</p> +</div> +</div> +</div> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/sendungen/sass-so-isst-der-norden/rezepte/eintopf166_v-einspaltig.jpg" data-alt="Steckrübeneintopf mit Pinkel © NDR Fotograf: Florian Kruck" data-title="Steckrübeneintopf mit Pinkel" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/sendungen/sass-so-isst-der-norden/rezepte/eintopf166_v-einspaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Steckrübeneintopf mit Pinkel © NDR Fotograf: Florian Kruck" title="Steckrübeneintopf mit Pinkel" class="img resize" /> +</noscript> +</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/ratgeber/kochen/rezepte/rezeptdb6_id-10881_broadcast-1514_station-ndrtv.html" title="Zum Artikel: Link zu einem Rezept für Steckrübeneintopf mit Pinkel" > +Steckrüben-Eintopf mit Pinkel +</a> +</h2> +<div class="teasertext"> +<p> +Dieser deftige Eintopf mit Gemüse und Schweinefleisch ist genau das Richtige für Herbst und Winter. Als typisch norddeutsche Beilage serviert Rainer Sass Pinkelwürste. +<a title="Zum Artikel: Steckrüben-Eintopf mit Pinkel" href="/ratgeber/kochen/rezepte/rezeptdb6_id-10881_broadcast-1514_station-ndrtv.html" class="cta " >mehr</a> +</p> +</div> +</div> +</div> +</div> +<div class="contentbox list voll"> +<div class="boxhead">Warenkunde</div> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/nachrichten/niedersachsen/steckruebe114_v-einspaltig.jpg" data-alt="Steckrübe © fotolia Fotograf: Gabriele Rohde" data-title="Steckrübe" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/nachrichten/niedersachsen/steckruebe114_v-einspaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Steckrübe © fotolia Fotograf: Gabriele Rohde" title="Steckrübe" class="img resize" /> +</noscript> +</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/ratgeber/kochen/warenkunde/Steckrueben-Tipps-fuer-Einkauf-und-Zubereitung,steckrueben130.html" title="Zum Artikel: Steckrüben - Tipps für Einkauf und Zubereitung" > +Steckrüben: Von der Notration zum Trendgemüse +</a> +</h2> +<div class="teasertext"> +<p> +In schlechten Zeiten haben Steckrüben vielen Menschen das Überleben gesichert, dann wurden sie aus der Küche verbannt. Inzwischen ist die Knolle kulinarisch wieder angesagt. +<a title="Zum Artikel: Steckrüben - Tipps für Einkauf und Zubereitung" href="/ratgeber/kochen/warenkunde/Steckrueben-Tipps-fuer-Einkauf-und-Zubereitung,steckrueben130.html" class="cta " >mehr</a> +</p> +</div> +</div> +</div> +</div> +<div class="contentbox list voll"> +<div class="boxhead">Ratgeber Kochen</div> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/sendungen/45_min/rueckschau/koch168_v-einspaltig.jpg" data-alt="Koch hackt Petersilie klein © © Esther Hildebrandt - Fotolia.com Fotograf: Esther Hildebrandt" data-title="Koch hackt Petersilie klein" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/sendungen/45_min/rueckschau/koch168_v-einspaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Koch hackt Petersilie klein © © Esther Hildebrandt - Fotolia.com Fotograf: Esther Hildebrandt" title="Koch hackt Petersilie klein" class="img resize" /> +</noscript> +</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/ratgeber/kochen/index.html" title="Zum Artikel: Kochen im NDR: Rezepte, Zutaten, Warenkunde" > +Kochen im NDR +</a> +</h2> +<div class="teasertext"> +<p> +Kochen Sie Gerichte aus NDR Sendungen nach und lassen Sie sich von Köchen wie Tim Mälzer oder Rainer Sass inspirieren! Außerdem: Zutaten-Lexikon und Warenkunde. +<a title="Zum Artikel: Kochen im NDR: Rezepte, Zutaten, Warenkunde" href="/ratgeber/kochen/index.html" class="cta " >mehr</a> +</p> +</div> +</div> +</div> +</div></span> +<div class="contentbox w100 broadcastdetails"> +<div class="textpadding"> +<dl> +<dt>Autor/in</dt> +<dd> +Florian Kruck</dd> +<dt>Regie</dt> +<dd> +<span itemprop="director" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Florian Kruck</span></span> +</dd> +<dt>Moderation</dt> +<dd> +Rainer Sass</dd> +<dt>Redaktion</dt> +<dd> +<span itemprop="editor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Matthias Latzel</span></span> +</dd> +</dl> +</div> +</div> +</div> +<!-- allow comment false --> +<div class="meta"> +<a href="#" class="socialmedia to_facebook"><span class="icon icon_facebook"></span></a> +<a href="#" class="socialmedia to_twitter"><span class="icon icon_twitter"></span></a> +<div class="right"> +<a href="#" class="printlink"><span class="icon icon_print"></span>Drucken</a> +<a href="/fernsehen/programm/epg/erinnerung110_sendung-7a5d1402-d431-4ece-99a8-8a4e35e712bc.html" title="Per Email an diese Sendung erinnern" class="epg_reminder"><span class="icon icon_contact"></span>E-Mail Erinnerung</a> +<a href="/fernsehen/sendungen/sass-so-isst-der-norden/sendung563148-termin.ics" title="In meinen Kalender eintragen" class="epg_reminder"><span class="icon icon_calendar_v2"></span>Kalendereintrag</a> +</div> +</div> +<div id="printbox"> +<img src="/resources/images/logos/ndr_printlogo.gif" alt="NDR Logo" title="NDR Logo" /> +<div class="clearfix"> +<span>Dieser Artikel wurde ausgedruckt unter der Adresse:</span> +<span id="article_url"><a href="https://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/Sass-So-isst-der-Norden,sendung563148.html">https://www.ndr.de/fernsehen/sendungen/sass-so-isst-der-norden/Sass-So-isst-der-Norden,sendung563148.html</a></span> +</div> +</div> +</div> +</article> +<aside class="w33"> +<!-- googleoff: index --> +<div class="module box w100"> +<div class="modulepadding"> +<div class="boxhead">Mehr zum Thema</div> +<div class="tagbox"> +<h3><a href="/ratgeber/lebensmittel273.html">Lebensmittel</a></h3></div> +</div> +</div> +<div class="box module w100 tvschedule"> +<div class="modulepadding"> +<div class="boxhead"><span>Jetzt im Fernsehen</span></div> +<div class="teaser list"> +<div class="teaserimage"><div class="image-container"><img width="184" height="104" src="/sport/fussball/hoffmann376_v-einspaltig.jpg" alt="HSV-Präsident Bernd Hoffmann " title="HSV-Präsident Bernd Hoffmann" /></div></div><div class="teaserpadding"> +<p class="subline" style="cursor: pointer;">seit 23:00 Uhr:</p> +<h2><a href="/fernsehen/sendungen/sportclub/Bernd-Hoffmann-zu-Gast-im-Studio,sendung750470.html" title="Sportclub" >Sportclub</a></h2><br clear="all" /> +<a href="/fernsehen/livestream/index.html" class="button" style="position: relative;"><span class="buttonshine"></span><span class="icon icon_video"></span>Livestream starten</a><a href="/fernsehen/programm/index.html" class="button" style="position: relative;"><span class="buttonshine"></span><span class="icon icon_text"></span>Programm</a> +</div> +<table class="tvschedule"> +<caption>TV Programm</caption> +<thead></thead> +<tbody> +<tr><td class="tv_time">23:45</td><td><a href="/fernsehen/sendungen/sportclub/Das-verbotene-Drachenfliegen-in-der-DDR,sendung756608.html" title="Sportclub Story - Die Grenzen des Himmels" >Sportclub Story - Die Grenzen des Himmels</a></td></tr></tbody> +</table> +</div> +</div> +</div> +<div class="module box w100 list"> +<div class="modulepadding"> +<div class="boxhead">Wünsch Dir Deinen NDR</div> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/der_ndr/wunschprogramm178_v-einspaltig.jpg" data-alt="Logo der Aktion Wünsch dir deinen NDR in einem Fensehmonitor, daneben steht ein Hund mit einer Leine im Maul (Montage) © NDR, Nicolas Maack, istockphoto, Fotolia.com Fotograf: George Peters, René Mansi, DragoNika" data-title="Logo der Aktion Wünsch dir deinen NDR in einem Fensehmonitor, daneben steht ein Hund mit einer Leine im Maul (Montage)" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/der_ndr/wunschprogramm178_v-einspaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Logo der Aktion Wünsch dir deinen NDR in einem Fensehmonitor, daneben steht ein Hund mit einer Leine im Maul (Montage) © NDR, Nicolas Maack, istockphoto, Fotolia.com Fotograf: George Peters, René Mansi, DragoNika" title="Logo der Aktion Wünsch dir deinen NDR in einem Fensehmonitor, daneben steht ein Hund mit einer Leine im Maul (Montage)" class="img resize" /> +</noscript> +</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/wuensch_dir_deinen_ndr/Besuch-vom-NDR-Auswahl-der-Teilnehmer,deinndr101.html" title="Zum Artikel: Besuch vom NDR - Auswahl der Teilnehmer" > +Besuch vom NDR - Auswahl der Teilnehmer +</a> +</h2> +<div class="teasertext"> +<p> +Der NDR kommt zu Besuch! Danke für Ihre Bewerbungen. +<a title="Zum Artikel: Besuch vom NDR - Auswahl der Teilnehmer" href="/wuensch_dir_deinen_ndr/Besuch-vom-NDR-Auswahl-der-Teilnehmer,deinndr101.html" class="cta " >mehr</a> +</p> +</div> +</div> +</div> +</div> +</div><!-- googleon: index --> +</aside> +</div> +<!-- googleoff: index --> +<div id="footer"> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Der NDR</h2> +<ul> +<li><a href="/der_ndr/index.html" title="Zum Artikel: Unternehmen" >Unternehmen</a></li> +<li><a href="/der_ndr/presse/index.html" title="Zum Artikel: Presse" >Presse</a></li> +<li><a href="/der_ndr/daten_und_fakten/index.html" title="Zum Artikel: Zahlen, Daten, Fakten" >Zahlen, Daten, Fakten</a></li> +<li><a href="http://www.rundfunkbeitrag.de" title="Link: Alle Informationen zu den Rundfunkgebühren ab 1. Januar 2013" target="_blank">Rundfunkbeitrag</a></li> +<li><a href="/der_ndr/karriere/index.html" title="Zum Artikel: Karriere" >Karriere</a></li> +<li><a href="/der_ndr/standorte_und_adressen/index.html" title="Zum Artikel: Standorte & Adressen" >Standorte & Adressen</a></li> +<li><a href="/der_ndr/technik/index.html" title="Zum Artikel: Technik" >Technik</a></li> +<li><a href="/der_ndr/unternehmen/geschichte/index.html" title="Zum Artikel: NDR Chronik" >NDR Chronik</a></li> +<li><a href="/der_ndr/unternehmen/rundfunkrat/index.html" title="Zum Artikel: NDR Rundfunkrat" >NDR Rundfunkrat</a></li> +<li><a href="/der_ndr/unternehmen/verwaltungsrat/index.html" title="Zum Artikel: NDR Verwaltungsrat" >NDR Verwaltungsrat</a></li> +</ul> +</div> +</div> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Service</h2> +<ul> +<li><a href="/nachrichten/wetter/index.html" title="Zum Artikel: Wetter" >Wetter</a></li> +<li><a href="/nachrichten/verkehr/index.html" title="Zum Artikel: Verkehr" >Verkehr</a></li> +<li><a href="/ratgeber/kochen/index.html" title="Zum Artikel: Rezepte" >Rezepte</a></li> +<li><a href="/fernsehen/videotext/index.html" title="Zum Artikel: NDR Text" >NDR Text</a></li> +<li><a href="/fernsehen/service/leichte_sprache/index.html" title="Zum Artikel: Leichte Sprache im NDR" >Leichte Sprache im NDR</a></li> +<li><a href="http://www.ndrticketshop.de/" title="Link: Externer Link zum NDR Ticketshop" target="_blank">Tickets</a></li> +<li><a href="https://www.ndrshop.de/willkommen" title="Link: Link zum NDR Shop" target="_blank">Shop</a></li> +<li><a href="/service/technische_hilfe/index.html" title="Zum Artikel: Hilfe" >Hilfe</a></li> +<li><a href="/korrekturuebersicht100.html" title="Zum Artikel: Korrekturen" >Korrekturen</a></li> +</ul> +</div> +</div> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Themen</h2> +<ul> +<li><a href="/nachrichten/bundestagswahl_2017/index.html" title="Zum Artikel: Bundestagswahl" >Bundestagswahl</a></li> +<li><a href="/nachrichten/niedersachsen/landtagswahl_2017/index.html" title="Zum Artikel: Niedersachsen-Wahl" >Niedersachsen-Wahl</a></li> +<li><a href="/kultur/elbphilharmonie/index.html" title="Zum Artikel: Elbphilharmonie" >Elbphilharmonie</a></li> +<li><a href="/nachrichten/fluechtlinge/Fluechtlinge-in-Norddeutschland,fluechtlinge603.html" title="Zum Artikel: Flüchtlinge im Norden" >Flüchtlinge im Norden</a></li> +<li><a href="/nachrichten/kreuzfahrtschiffe127.html" title="Zum Artikel: Kreuzschifffahrt im Norden" >Kreuzschifffahrt im Norden</a></li> +<li><a href="/Storytelling-bei-NDRde,storytelling128.html" title="Zum Artikel: Visual Storytelling" >Visual Storytelling</a></li> +<li><a href="/nachrichten/netzwelt/index.html" title="Zum Artikel: Netzwelt" >Netzwelt</a></li> +<li><a href="/nachrichten/netzwelt/NDR-twitter-facebook-googleplus-youtube,ndrsozialenetzwerke101.html" title="Zum Artikel: Social Media" >Social Media</a></li> +<li><a href="/kultur/geschichte/index.html" title="Zum Artikel: Geschichte" >Geschichte</a></li> +<li><a href="/kultur/norddeutsche_sprache/index.html" title="Zum Artikel: Plattdeutsch" >Plattdeutsch</a></li> +<li><a href="/hand_in_hand_fuer_norddeutschland/index.html" title="Zum Artikel: Hand in Hand" >Hand in Hand</a></li> +<li><a href="/home/thema108.html" title="Zum Artikel: Themen A-Z" >Themen A-Z</a></li> +</ul> +</div> +</div><div class="module footerblock w25"> +<div class="modulepadding"> +<h2>NDR Fernsehen</h2> +<ul> +<li><a href="/fernsehen/sendungen/index.html" title="Zum Artikel: Sendungen A-Z" >Sendungen A-Z</a></li> +<li><a href="/fernsehen/programm/index.html" title="Zum Artikel: Programm" >Programm</a></li> +<li><a href="/fernsehen/livestream/index.html" title="Zum Video-Livestream: Livestream" >Livestream</a></li> +<li><a href="http://www.ndr-mitschnittservice.de/" title="Link: Link zum NDR Mitschnittservice mit einer Übersicht der Preise" target="_blank">Mitschnitte</a></li> +<li><a href="/nachrichten/investigation/Ressort-Investigation-im-NDR,investigation102.html" title="Zum Artikel: Ressort Investigation" >Ressort Investigation</a></li> +<li><a href="/fernsehen/50_jahre/index.html" title="Zum Artikel: 50 Jahre NDR Fernsehen" >50 Jahre NDR Fernsehen</a></li> +</ul> +</div> +</div><div class="module footerblock metanav"> +<div class="modulepadding"> +<ul> +<li><a href="/service/impressum/index.html" title="Impressum">Impressum</a></li> +<li><a href="/service/kontakt/index.html" title="Kontakt">Kontakt</a></li> +<li><a href="/service/datenschutz/index.html" title="Datenschutzerklärung">Datenschutz</a></li> +<li><a href="http://www.ard.de" title="ARD.de">ARD.de</a></li> +<li><a href="#" class="showcopyrights">Bildrechte</a></li> +<li id="copy">© Norddeutscher Rundfunk</li> +</ul> +</div> +<!-- Begin Sitestat4 code --> +<script type='text/javascript'> +<!-- +var ZPIX="https://de.sitestat.com/ndr/ndr/s?fernsehen.sendungen.sass-so-isst-der-norden.sendung563148&cid=sendung563148&pdt=20180318T0220&pti=Deftige_Eintopfgerichte_aus_Bremen&otp=program&bra=ndrtv&sid=1514&src=-&ctp="; +function sitestat(ns_l){ns_l+='&ns__t='+(new Date()).getTime();ns_pixelUrl=ns_l; ns_0=document.referrer; ns_0=(ns_0.lastIndexOf('/')==ns_0.length-1)?ns_0.substring(ns_0.lastIndexOf('/'),0):ns_0; if(ns_0.length>0)ns_l+='&ns_referrer='+escape(ns_0); +if(document.images){ns_1=new Image();ns_1.src=ns_l;}else +document.write('<img src="'+ns_l+'" width="1" height="1" alt="" />');} +sitestat("https://de.sitestat.com/ndr/ndr/s?fernsehen.sendungen.sass-so-isst-der-norden.sendung563148&cid=sendung563148&pdt=20180318T0220&pti=Deftige_Eintopfgerichte_aus_Bremen&otp=program&bra=ndrtv&sid=1514&src=-&ctp=-"); +//--> +</script> +<noscript> +<p class="invisible"><img src="https://de.sitestat.com/ndr/ndr/s?fernsehen.sendungen.sass-so-isst-der-norden.sendung563148&cid=sendung563148&pdt=20180318T0220&pti=Deftige_Eintopfgerichte_aus_Bremen&otp=program&bra=ndrtv&sid=1514&src=-&ctp=-" width="1" height="1" alt="" /></p> +</noscript> +<!-- End Sitestat4 code --> +<!-- IVW SZMnG Tag --> +<script type="text/javascript"> +$(document).ready(function() { +window.setTimeout("getivw()", 1); +}); +</script> +</div> +</div> +</div> +<!-- googleon: index --> +</body> +</html> \ No newline at end of file diff --git a/src/test/resources/ndr/ndr_film_detail1.json b/src/test/resources/ndr/ndr_film_detail1.json new file mode 100644 index 0000000000000000000000000000000000000000..d8b800a2f6e4cc9e9bd729d38f0808df0872c106 --- /dev/null +++ b/src/test/resources/ndr/ndr_film_detail1.json @@ -0,0 +1,149 @@ +{ + "_type":"video", + "_isLive":false, + "_dvrEnabled":false, + "_geoblocked":false, + "_defaultQuality":[ + "auto", + 2, + 3, + 1, + 0 + ], + "_audioImage":{ + "s":"/fernsehen/sass402_v-zweispaltig.jpg", + "m":"/fernsehen/sass402_v-contentgross.jpg", + "l":"/fernsehen/sass402_v-ardgalerie.jpg", + "xl":"/fernsehen/sass402_v-contentxl.jpg" + }, + "_previewImage":"/fernsehen/sass402_v-contentxl.jpg", + "_mediaArray":[ + { + "_plugin":0, + "_mediaStreamArray":[ + { + "_quality":"auto", + "_server":"", + "_stream":"https://ndrod-vh.akamaihd.net/z/ndr/2016/1009/TV-20161009-1036-1800.,hi,hq,hd,.mp4.csmil/manifest.f4m", + "_cdn":"akamai" + }, + { + "_quality":0, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.lo.mp4", + "_cdn":"default" + }, + { + "_quality":1, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hi.mp4", + "_cdn":"default" + }, + { + "_quality":2, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hq.mp4", + "_cdn":"default" + }, + { + "_quality":3, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hd.mp4", + "_cdn":"default" + } + ] + }, + { + "_plugin":1, + "_mediaStreamArray":[ + { + "_quality":"auto", + "_server":"", + "_stream":"https://ndrod-vh.akamaihd.net/i/ndr/2016/1009/TV-20161009-1036-1800.,lo,hi,hq,hd,.mp4.csmil/master.m3u8", + "_cdn":"flashhls" + }, + { + "_quality":0, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.lo.mp4", + "_cdn":"default" + }, + { + "_quality":1, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hi.mp4", + "_cdn":"default" + }, + { + "_quality":2, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hq.mp4", + "_cdn":"default" + }, + { + "_quality":3, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive/2016/1009/TV-20161009-1036-1800.hd.mp4", + "_cdn":"default" + } + ] + } + ], + "_duration":1806, + "_sortierArray":[ + 1, + 0 + ], + "agfParams":[ + { + "tracker":"AGF", + "agfGlobalParamsSDK":{ + "clientid":"de-605508", + "vcid":"b04", + "sfcode":"eu", + "prod":"vc", + "apn":"ardplayer", + "apid":"PB226FA86-44DD-42B5-8991-682F1375CB67" + }, + "agfMetaDataSDK":{ + "nol_c2":"p2,Y", + "nol_c7":"p7,sass404", + "nol_c8":"p8,1806", + "nol_c9":"p9,Sass: So isst der Norden_Deftige Eintopfgerichte aus Bremen_09.10.2016_16:30", + "nol_c10":"p10,NDR Fernsehen", + "nol_c12":"p12,Content", + "nol_c15":"p15,196226755_7860199", + "nol_c18":"p18,N", + "censuscategory":"NDR Fernsehen_Sass: So isst der Norden_Deftige Eintopfgerichte aus Bremen_09.10.2016_16:30", + "assetid":"TV-20161009-1036-1800", + "title":"NDR Fernsehen_Sass: So isst der Norden_Deftige Eintopfgerichte aus Bremen_09.10.2016_16:30", + "program":"Sass: So isst der Norden", + "livestream":"no", + "length":"1806", + "type":"content", + "nol_c16":"p16,ARD_Information" + } + } + ], + "comScoreParams":[ + { + "url":"//de.sitestat.com/ndr/ndr/s?html5.player", + "tracker":"COMSCORE", + "islivestream":"1", + "id":"sass404", + "duration":"1806", + "contentId":"sass404", + "publicationDate":"20180318T1633", + "primaryType":"video", + "objectType":"video", + "ns_st_pr":"Sass: So isst der Norden", + "ns_st_ep":"Deftige Eintopfgerichte aus Bremen - 18.03.2018 16:30", + "trackTitle":"Deftige_Eintopfgerichte_aus_Bremen", + "trackTitleEncoded":"Deftige+Eintopfgerichte+aus+Bremen", + "assetFileName":"TV-20161009-1036-1800", + "showId":"1514", + "trackingId":"-", + "trackingContentType":"broadcast" + } + ] +} \ No newline at end of file diff --git a/src/test/resources/ndr/ndr_film_detail2.html b/src/test/resources/ndr/ndr_film_detail2.html new file mode 100644 index 0000000000000000000000000000000000000000..578f1cdbd87f2b0ba13dc9fd57f0b79eef02c056 --- /dev/null +++ b/src/test/resources/ndr/ndr_film_detail2.html @@ -0,0 +1,889 @@ +<!DOCTYPE html> +<html lang="de" itemscope="itemscope" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns# video: http://ogp.me/ns/video#"> +<!-- base_head --> +<head> + +<title>Folge 2881: Der langersehnte Antrag | NDR.de - Fernsehen</title> +<meta charset="utf-8"> +<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<meta name="title" content="Folge 2881: Der langersehnte Antrag " /> +<meta name="googlebot" content="unavailable_after: 22-Mar-2018 08:10:00 CET"/> +<meta name="expires" content="2018-03-22T08:10:00.000"/> +<meta property="og:title" content="Folge 2881: Der langersehnte Antrag "/> +<meta name="description" content="André fasst sich ein Herz und macht Melli den geplanten Antrag. Währenddessen ist Romy enttäuscht, dass Paul lediglich eine gute Freundin in ihr sieht." /> +<meta property="og:description" content="André fasst sich ein Herz und macht Melli den geplanten Antrag. Währenddessen ist Romy enttäuscht, dass Paul lediglich eine gute Freundin in ihr sieht." /> +<meta property="og:image" content="https://www.ndr.de/fernsehen/screenshot494424_v-contentxl.jpg" /> +<link rel="canonical" href="/fernsehen/Folge-2881-Der-langersehnte-Antrag,sturmderliebe1816.html" /> +<meta name="twitter:card" content="summary_large_image"> +<meta name="twitter:creator" content="@ndr"> +<meta name="twitter:site" content="@ndr"> +<meta name="twitter:domain" content="https://www.ndr.de/fernsehen/Folge-2881-Der-langersehnte-Antrag,sturmderliebe1816.html"/> +<meta name="twitter:title" content="Folge 2881: Der langersehnte Antrag "/> +<meta name="twitter:description" content="André fasst sich ein Herz und macht Melli den geplanten Antrag. Währenddessen ist Romy enttäuscht, dass Paul lediglich eine gute Freundin in ihr sieht."/> +<meta name="twitter:image:src" content="https://www.ndr.de/fernsehen/screenshot494424_v-contentxl.jpg" /> +<meta name="medium" content="video" /> +<meta property="og:locale" content="de_DE"/> +<meta property="og:type" content="video.episode"/> +<meta property="og:site_name" content="NDR Mediathek"/> +<meta property="og:url" content="https://www.ndr.de/fernsehen/Folge-2881-Der-langersehnte-Antrag,sturmderliebe1816.html"/> +<meta property="og:video" content="https://www.ndr.de/fernsehen/Folge-2881-Der-langersehnte-Antrag,sturmderliebe1816.html"/> +<meta property="og:video:type" content="text/html"/> +<meta property="video:duration" content="2914"/> +<meta property="video:release_date" content="2018-03-15T08:10:00.000"/> +<meta name="keywords" lang="de" content="Rote Rosen, Telenovela, Lüneburg, Patricia Schäfer, Dana Golombek,Jörg Pintsch, Christian Rudolf, Claus Dieter Clausnitzer, Anja Franke, Gerry Hungbauer" /> +<meta name="author" content="NDR" /> +<meta name="generator" content="orig6" /> +<meta name="robots" content="index, follow, noarchive" /> +<meta name="language" content="de" /> +<link rel="icon" href="/favicon.ico" type="image/x-icon" /> +<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> +<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png"> +<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png"> +<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png"> +<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png"> +<link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png"> +<link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png"> +<link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png"> +<link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png"> +<link rel="icon" type="image/png" href="/favicon-196x196.png" sizes="196x196"> +<link rel="icon" type="image/png" href="/favicon-160x160.png" sizes="160x160"> +<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"> +<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"> +<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"> +<meta name="msapplication-TileColor" content="#0c1754"> +<meta name="msapplication-TileImage" content="/mstile-144x144.png"> +<link type="text/css" rel="stylesheet" href="/resources/css/generated/ndrmerged.css" media="all" /> +<!--[if lte IE 8]> +<link type="text/css" rel="stylesheet" href="/resources/css/ie.css" media="all" /> +<![endif]--> +<!--[if IE 9 ]> +<link type="text/css" rel="stylesheet" href="/resources/css/ie9.css" media="all" /> +<![endif]--> +<link type="text/css" rel="stylesheet" href="/resources/css/generated/print.css" media="print" /> +<script type="text/javascript" src="/common/resources/lib/ndrde_base.js"></script> +<script type="text/javascript" src="/resources/js/scripts.js"></script> +<!--[if lt IE 9]> +<script> +document.createElement('header'); +document.createElement('nav'); +document.createElement('section'); +document.createElement('article'); +document.createElement('aside'); +document.createElement('footer'); +document.createElement('hgroup'); +</script> +<![endif]--> +</head> +<body class="" > +<a href="#content" title="Skip to content" class="skiplink">Direkt zum Inhalt</a> +<div id="page"> +<header id="pageheader" role="navigation"> +<div class="mainnav"> +<a id="dachmarkenlogo" href="/index.html" > +<span class="invisible srlabel">zur NDR Homepage</span> +<svg width="100%" height="100%" viewBox="0 -0.096 64 40"> +<path fill="#ffffff" d="M8.923,32.342L3.524,22.62v9.723H0V15.671h3.699l5.624,10.373V15.671h3.524v16.671H8.923z M12.847,15.671V0 +h1.975v15.671H12.847z M12.847,39.465v-7.123h1.975v7.123H12.847z M20.72,15.671c4.124,0,6.249,1.975,6.249,5.798v5.024 +c0,3.924-2.049,5.849-6.249,5.849h-5.898V15.671H20.72z M20.395,29.193c2,0,2.974-1,2.974-3.049v-4.299c0-2.024-1-3.024-2.974-3.024 +h-1.774v10.372H20.395z M37.341,32.342l-2.974-6.398h-2v6.398h-3.699V15.671h5.824c4.099,0,6.048,1.625,6.048,5.099 +c0,2.299-0.85,3.674-2.75,4.499l3.524,7.073H37.341z M34.642,22.919c1.475,0,2.349-0.85,2.349-2.274 +c0-1.475-0.649-2.024-2.349-2.024h-2.35v4.299H34.642z"/> +<path fill="#ffffff" d="M43.571,32.27v-2.647h2.038v2.647H43.571z"/> +<path fill="#ffffff" d="M53.002,32.268l-0.045-0.99c-0.273,0.275-0.652,0.542-1.138,0.801c-0.478,0.251-1.004,0.385-1.581,0.401 +c-0.842-0.016-1.501-0.316-1.979-0.902c-0.516-0.594-0.773-1.395-0.773-2.402V23.27c0.015-2.383,0.925-3.582,2.73-3.598 +c0.607,0.016,1.126,0.137,1.559,0.363c0.432,0.218,0.811,0.496,1.137,0.831v-5.108h1.943v16.51H53.002z M52.911,22.447 +c-0.198-0.203-0.476-0.41-0.833-0.621c-0.38-0.187-0.772-0.289-1.176-0.304c-1.014,0-1.504,0.671-1.473,2.014v5.244 +c0.015,1.218,0.499,1.834,1.45,1.85c0.403-0.016,0.803-0.137,1.199-0.363c0.358-0.21,0.636-0.41,0.833-0.597V22.447z"/> +<path fill="#ffffff" d="M64.171,28.972c-0.045,2.339-1.237,3.528-3.575,3.567c-2.467-0.07-3.693-1.344-3.677-3.82v-5.18 +c0.03-2.562,1.286-3.859,3.768-3.891c2.307,0.062,3.469,1.291,3.484,3.685v3.217h-5.285v2.398c-0.016,1.191,0.54,1.795,1.666,1.811 +c0.54,0.016,0.966-0.129,1.278-0.435c0.281-0.29,0.422-0.764,0.422-1.422v-0.459h1.918V28.972z M62.298,23.2 +c-0.015-1.243-0.582-1.873-1.7-1.888c-1.141,0.016-1.719,0.645-1.734,1.888v1.735h3.435V23.2z"/> +<image src="/resources/images/logos/NDR_logo.png" width="100%" height="100%" /> +</svg> +<span id="claim"> +<svg width="100%" height="100%" viewBox="18.923 35.779 69 8"> +<path d="M8.923,32.342L3.524,22.62v9.723H0V15.671h3.699l5.624,10.373V15.671h3.524v16.671H8.923z M12.847,15.671V0h1.975v15.671 +H12.847z M12.847,39.465v-7.123h1.975v7.123H12.847z M20.72,15.671c4.124,0,6.249,1.975,6.249,5.798v5.024 +c0,3.924-2.049,5.849-6.249,5.849h-5.898V15.671H20.72z M20.395,29.193c2,0,2.974-1,2.974-3.049v-4.299c0-2.024-1-3.024-2.974-3.024 +h-1.774v10.372H20.395z M37.341,32.342l-2.974-6.398h-2v6.398h-3.699V15.671h5.824c4.099,0,6.048,1.625,6.048,5.099 +c0,2.299-0.85,3.674-2.75,4.499l3.524,7.073H37.341z M34.642,22.919c1.475,0,2.349-0.85,2.349-2.274 +c0-1.475-0.649-2.024-2.349-2.024h-2.35v4.299H34.642z"/> +<path fill="#ffffff" d="M23.036,40.896c0.026,1.634-0.632,2.438-1.975,2.412h-1.394v-6.67H21c0.75,0,1.279,0.193,1.587,0.58 +c0.306,0.393,0.455,0.955,0.449,1.685V40.896z M22.197,38.663c-0.006-0.869-0.391-1.306-1.154-1.312h-0.546v5.245h0.565 +c0.77-0.023,1.148-0.529,1.135-1.518V38.663z"/> +<path fill="#ffffff" d="M26.229,43.309l-0.019-0.426c-0.334,0.323-0.689,0.484-1.064,0.484c-0.388-0.006-0.693-0.125-0.914-0.357 +c-0.218-0.228-0.327-0.536-0.327-0.924v-0.279c0.019-1.03,0.771-1.6,2.258-1.711v-0.674c0.006-0.479-0.207-0.715-0.641-0.709 +c-0.468-0.006-0.699,0.248-0.693,0.764c0,0.02,0,0.075,0,0.167h-0.78v-0.166c0.009-0.952,0.51-1.432,1.502-1.438 +c0.948,0.006,1.422,0.459,1.422,1.357v3.912H26.229z M26.163,40.701c-0.971,0.098-1.453,0.462-1.447,1.092v0.21 +c0,0.447,0.21,0.674,0.631,0.681c0.266,0,0.538-0.144,0.816-0.431V40.701z"/> +<path fill="#ffffff" d="M30.761,42.134c-0.006,0.398-0.142,0.71-0.406,0.937c-0.277,0.224-0.649,0.34-1.119,0.35 +c-1.02-0.016-1.539-0.479-1.558-1.386v-0.292h0.81v0.245c0,0.526,0.255,0.786,0.767,0.779c0.451-0.007,0.68-0.217,0.686-0.631 +c-0.006-0.026-0.009-0.052-0.009-0.078c-0.025-0.248-0.145-0.458-0.359-0.631c-0.211-0.167-0.455-0.336-0.732-0.509 +c-0.271-0.176-0.51-0.386-0.718-0.631c-0.211-0.248-0.32-0.563-0.326-0.944v-0.098c0.013-0.783,0.496-1.181,1.449-1.194 +c0.916,0.013,1.382,0.439,1.401,1.278v0.258h-0.781c0-0.114,0-0.185,0-0.211c-0.006-0.441-0.23-0.662-0.672-0.662 +c-0.224,0-0.385,0.054-0.483,0.162c-0.092,0.108-0.137,0.232-0.137,0.373c0,0.02,0.003,0.042,0.009,0.069 +c0.016,0.114,0.058,0.221,0.127,0.318c0.072,0.102,0.159,0.2,0.26,0.294c0.11,0.085,0.227,0.168,0.35,0.25 +c0.129,0.088,0.258,0.178,0.388,0.27c0.277,0.176,0.523,0.384,0.737,0.623c0.101,0.121,0.181,0.258,0.241,0.412 +c0.05,0.154,0.076,0.332,0.076,0.534V42.134z"/> +<path fill="#ffffff" d="M36.561,41.84c-0.013,0.965-0.577,1.455-1.692,1.468h-1.607v-6.67h1.499 +c1.097-0.006,1.639,0.447,1.626,1.362v0.62c0.006,0.585-0.292,0.952-0.897,1.098c0.708,0.091,1.065,0.521,1.071,1.289V41.84z +M35.546,38.152c0.013-0.551-0.297-0.818-0.929-0.802H34.1v2.081h0.621c0.557,0,0.832-0.305,0.825-0.915V38.152z M35.712,41.105 +c0-0.34-0.068-0.587-0.204-0.741c-0.142-0.154-0.386-0.23-0.73-0.23H34.1v2.462h0.64c0.648-0.006,0.972-0.338,0.972-0.996V41.105z" +/> +<path fill="#ffffff" d="M40.356,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34h-2.202v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M39.576,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M44.139,42.134c-0.006,0.398-0.142,0.71-0.406,0.937c-0.277,0.224-0.649,0.34-1.119,0.35 +c-1.02-0.016-1.539-0.479-1.558-1.386v-0.292h0.81v0.245c0,0.526,0.255,0.786,0.767,0.779c0.451-0.007,0.68-0.217,0.686-0.631 +c-0.006-0.026-0.009-0.052-0.009-0.078c-0.025-0.248-0.145-0.458-0.359-0.631c-0.211-0.167-0.455-0.336-0.732-0.509 +c-0.271-0.176-0.51-0.386-0.718-0.631c-0.211-0.248-0.32-0.563-0.326-0.944v-0.098c0.013-0.783,0.496-1.181,1.449-1.194 +c0.916,0.013,1.382,0.439,1.401,1.278v0.258h-0.781c0-0.114,0-0.185,0-0.211c-0.006-0.441-0.23-0.662-0.672-0.662 +c-0.224,0-0.385,0.054-0.483,0.162c-0.092,0.108-0.137,0.232-0.137,0.373c0,0.02,0.003,0.042,0.009,0.069 +c0.016,0.114,0.058,0.221,0.127,0.318c0.072,0.102,0.159,0.2,0.26,0.294c0.11,0.085,0.227,0.168,0.35,0.25 +c0.129,0.088,0.258,0.178,0.388,0.27c0.277,0.176,0.523,0.384,0.737,0.623c0.101,0.121,0.181,0.258,0.241,0.412 +c0.05,0.154,0.076,0.332,0.076,0.534V42.134z"/> +<path fill="#ffffff" d="M47.02,43.289c-0.265,0.052-0.487,0.078-0.667,0.078c-0.792,0.006-1.182-0.417-1.169-1.272V38.82h-0.67 +v-0.673h0.68v-1.464l0.81-0.143v1.606h0.951v0.673h-0.951v3.309c-0.006,0.382,0.166,0.57,0.516,0.564 +c0.135,0,0.293-0.023,0.473-0.069L47.02,43.289z"/> +<path fill="#ffffff" d="M50.614,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34h-2.202v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M49.833,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M55.468,43.309l-0.019-0.426c-0.334,0.323-0.689,0.484-1.064,0.484c-0.388-0.006-0.693-0.125-0.914-0.357 +c-0.218-0.228-0.327-0.536-0.327-0.924v-0.279c0.019-1.03,0.771-1.6,2.258-1.711v-0.674c0.006-0.479-0.207-0.715-0.641-0.709 +c-0.468-0.006-0.699,0.248-0.693,0.764c0,0.02,0,0.075,0,0.167h-0.78v-0.166c0.009-0.952,0.51-1.432,1.502-1.438 +c0.948,0.006,1.422,0.459,1.422,1.357v3.912H55.468z M55.402,40.701c-0.971,0.098-1.453,0.462-1.447,1.092v0.21 +c0,0.447,0.21,0.674,0.631,0.681c0.266,0,0.538-0.144,0.816-0.431V40.701z"/> +<path fill="#ffffff" d="M61.18,43.308v-3.76c0.006-0.459-0.155-0.685-0.485-0.679c-0.26,0.006-0.504,0.166-0.732,0.479v3.96h-0.81 +v-3.829c-0.006-0.407-0.18-0.61-0.521-0.61c-0.252,0-0.486,0.137-0.701,0.41v4.029h-0.814v-5.161h0.732l0.028,0.449 +c0.319-0.352,0.668-0.527,1.047-0.527c0.467-0.006,0.781,0.204,0.942,0.63c0.129-0.199,0.297-0.355,0.502-0.469 +c0.202-0.107,0.405-0.161,0.611-0.161c0.672,0,1.009,0.43,1.009,1.289v3.95H61.18z"/> +<path fill="#ffffff" d="M67.57,43.308l-1.433-3.85c-0.095-0.267-0.201-0.582-0.317-0.943c-0.124-0.368-0.189-0.562-0.195-0.582 +c0.013,0.146,0.029,0.646,0.049,1.5v3.875h-0.839v-6.67h1.091l1.248,3.332c0.098,0.248,0.202,0.538,0.312,0.87 +c0.11,0.362,0.168,0.549,0.175,0.562c-0.013-0.14-0.025-0.621-0.038-1.441v-3.322h0.839v6.67H67.57z"/> +<path fill="#ffffff" d="M72.568,41.859c-0.013,1.018-0.528,1.538-1.547,1.561c-1.035-0.029-1.552-0.55-1.552-1.562v-2.31 +c0-0.459,0.132-0.825,0.397-1.099c0.259-0.267,0.641-0.404,1.145-0.41c1.025,0.02,1.544,0.524,1.557,1.513V41.859z M71.759,39.571 +c0-0.247-0.065-0.44-0.195-0.58c-0.136-0.133-0.317-0.2-0.542-0.2c-0.222,0-0.398,0.067-0.528,0.2 +c-0.143,0.14-0.214,0.333-0.214,0.58v2.327c0.006,0.508,0.254,0.765,0.743,0.771c0.479,0,0.725-0.257,0.738-0.771V39.571z"/> +<path fill="#ffffff" d="M75.615,39.025c-0.381,0.026-0.668,0.125-0.861,0.298c-0.208,0.173-0.368,0.402-0.478,0.689v3.295h-0.807 +v-5.162h0.78v0.85c0.195-0.306,0.396-0.532,0.6-0.679c0.208-0.146,0.463-0.232,0.766-0.258V39.025z"/> +<path fill="#ffffff" d="M78.298,43.308l-0.019-0.413c-0.114,0.115-0.272,0.226-0.474,0.334c-0.199,0.104-0.418,0.161-0.659,0.167 +c-0.351-0.006-0.625-0.132-0.825-0.376C76.107,42.772,76,42.439,76,42.019v-2.461c0.006-0.993,0.385-1.493,1.137-1.499 +c0.253,0.006,0.469,0.057,0.649,0.151c0.18,0.091,0.338,0.207,0.474,0.346v-2.128h0.81v6.879H78.298z M78.26,39.215 +c-0.083-0.084-0.198-0.17-0.347-0.258c-0.159-0.078-0.322-0.121-0.49-0.127c-0.422,0-0.627,0.28-0.614,0.839v2.186 +c0.006,0.507,0.208,0.764,0.604,0.771c0.168-0.006,0.334-0.057,0.5-0.151c0.149-0.087,0.265-0.17,0.347-0.249V39.215z"/> +<path fill="#ffffff" d="M82.992,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34H80.79v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M82.211,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M86.021,43.308v-3.829c0.006-0.433-0.161-0.646-0.501-0.64c-0.183,0.006-0.349,0.062-0.497,0.166 +c-0.148,0.107-0.262,0.208-0.341,0.303v4h-0.814v-5.161h0.752l0.028,0.483c0.117-0.133,0.27-0.26,0.459-0.381 +c0.18-0.121,0.387-0.184,0.621-0.19c0.729-0.006,1.097,0.407,1.103,1.24v4.009H86.021z"/> +<image src="/resources/images/logos/NDR_claim.png" width="100%" height="100%" /> +</svg> +</span> +</a> +<!-- googleoff: index --> +<nav> +<ul id="navigation" role="navigation" > +<li > +<a href="/nachrichten/index.html" class="mn_item_1">Nachrichten</a> +<ul class="subnav subnav_item_1"> +<li><a href="/nachrichten/niedersachsen/index.html">Niedersachsen</a></li> +<li><a href="/nachrichten/schleswig-holstein/index.html">Schleswig-Holstein</a></li> +<li><a href="/nachrichten/mecklenburg-vorpommern/index.html">Mecklenburg-Vorpommern</a></li> +<li><a href="/nachrichten/hamburg/index.html">Hamburg</a></li> +<li><a href="/nachrichten/wetter/index.html">Wetter</a></li> +<li><a href="/nachrichten/verkehr/index.html">Verkehr</a></li> +</ul> +</li> +<li > +<a href="/sport/index.html" class="mn_item_2">Sport</a> +<ul class="subnav subnav_item_2"> +<li><a href="/sport/fussball/index.html">Fußball</a></li> +<li><a href="/sport/handball/index.html">Handball</a></li> +<li><a href="/sport/mehr_sport/index.html">Mehr Sport</a></li> +<li><a href="/sport/ergebnisse/index.html">Ergebnisse</a></li> +<li><a href="/sport/live/index.html">Live</a></li> +</ul> +</li> +<li > +<a href="/ratgeber/index.html" class="mn_item_3">Ratgeber</a> +<ul class="subnav subnav_item_3"> +<li><a href="/ratgeber/kochen/index.html">Kochen</a></li> +<li><a href="/ratgeber/reise/index.html">Reise</a></li> +<li><a href="/ratgeber/garten/index.html">Garten</a></li> +<li><a href="/ratgeber/gesundheit/index.html">Gesundheit</a></li> +<li><a href="/ratgeber/verbraucher/index.html">Verbraucher</a></li> +</ul> +</li> +<li > +<a href="/kultur/index.html" class="mn_item_4">Kultur</a> +<ul class="subnav subnav_item_4"> +<li><a href="/kultur/musik/index.html">Musik</a></li> +<li><a href="/kultur/film/index.html">Film</a></li> +<li><a href="/kultur/buch/index.html">Buch</a></li> +<li><a href="/kultur/kunst/index.html">Kunst</a></li> +<li><a href="/kultur/geschichte/index.html">Geschichte</a></li> +</ul> +</li> +<li > +<a href="/fernsehen/index.html" class="mn_item_5">Fernsehen</a> +<ul class="subnav subnav_item_5"> +<li><a href="/fernsehen/livestream/index.html">Livestream</a></li> +<li><a href="/fernsehen/sendungen/index.html">Sendungen A-Z</a></li> +<li><a href="/fernsehen/programm/index.html">Programm</a></li> +<li><a href="/fernsehen/service/index.html">Service</a></li> +<li class="socialmedia-link facebook"><a href="https://www.facebook.com/ndrfernsehen" title="NDR Fernsehen bei Facebook" tabindex="0"><span class="icon icon_facebook"></span><span class="socialmedia-label">NDR Fernsehen bei Facebook</span></a></li> +</ul> +</li> +<li > +<a href="/radio/index.html" class="mn_item_6">Radio</a> +<ul class="subnav subnav_item_6"> +</ul> +</li> +<li class="active"> +<a href="/mediathek/index.html" class="mn_item_7 active">Mediathek</a> +<ul class="subnav subnav_item_7"> +<li><a href="/mediathek/sendung_verpasst/index.html">Sendung verpasst</a></li> +<li><a href="/mediathek/sendungen_a-z/index.html">Sendungen A-Z</a></li> +<li><a href="/mediathek/audio/index.html">Audio</a></li> +</ul> +</li><li id="menusearch"> +<a href="#" class="menusearch" title=""><span class="invisible srlabel">Suche einblenden</span></a> +<div class="quicksearch group"> +<form id="search" action="/suche10.html" method="get"> +<div class="form_element w66"> +<div class="modulepadding"> +<label for="searchword" class="invisible">Suchbegriffe:</label> +<input id="searchword" type="text" name="query" placeholder="Suchbegriff" /> +</div> +</div> +<div class="form_element w33" id="quicksearchsubmit"> +<div class="modulepadding"> +<button type="submit" class="button_sprite w100"><span>Suchen</span></button> +</div> +</div> +<div class="form_element w100"> +<div class="modulepadding"> +<label for="check_mediathek" class="smallelement"> +<input id="check_mediathek" type="checkbox" name="search_mediathek" value="1" checked="checked"> +<span>nur in der Mediathek suchen</span></label> +</div> +</div> +</form> +</div> +</li> +</ul> +</nav> +</div> +<div class="subnavbar"> +<!-- googleon: index --><div class="horizon"></div> +<div id="brandinglogo"> +<a title="Zur Startseite: NDR Fernsehen" href="/fernsehen"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="svgbrand logo_ndrtv" viewBox="0 0 160 153" > +<title>NDR Fernsehen</title> +<path class="dm" d="M116.767,75.961c0-4.22-2.272-5.324-6.101-5.324h-6.101v11.166h6.101 +C114.301,81.804,116.767,79.726,116.767,75.961L116.767,75.961z M127.998,106.274h-10.321l-7.726-16.617h-5.192v16.617h-9.608 +V62.979h15.125c9.478,0,15.709,3.115,15.709,13.5c0,5.26-2.077,9.477-7.139,11.424L127.998,106.274L127.998,106.274z"/> +<polygon style="fill:#09E5FF;" points="59.192,62.979 59.192,22.279 54.064,22.279 54.064,62.979 "/> +<path class="dm" d="M81.392,90.176V79.011c0-5.258-2.402-7.854-7.724-7.854H69.06v26.937h4.608 +C78.99,98.095,81.392,95.434,81.392,90.176L81.392,90.176z M90.74,91.085c0,10.97-5.714,15.189-16.228,15.189h-15.32V62.979h15.319 +c10.125,0,16.228,4.479,16.228,15.058L90.74,91.085L90.74,91.085z"/> +<polygon class="dm" points="54.064,106.274 54.064,62.979 44.912,62.979 44.912,89.916 30.307,62.979 20.7,62.979 +20.7,106.274 29.852,106.274 29.852,81.024 43.874,106.274 "/> +<polygon style="fill:#09E5FF;" points="59.192,124.773 59.192,106.274 54.064,106.274 54.064,124.773 "/> +<polygon style="fill:#09E5FF;" points="75.703,118.033 71.259,118.033 71.259,122.948 75.105,122.948 75.105,124.599 +71.259,124.599 71.259,131.74 69.236,131.74 69.236,116.381 75.703,116.381 "/> +<polygon style="fill:#09E5FF;" points="84.039,131.74 77.315,131.74 77.315,116.381 83.815,116.381 83.815,118.033 79.34,118.033 +79.34,122.948 83.276,122.948 83.276,124.599 79.34,124.599 79.34,130.088 84.039,130.088 "/> +<path style="fill:#09E5FF;" d="M94.244,131.74h-2.125l-2.811-6.961l-1.631,0.046v6.915h-2.025v-15.359h3.498 +c1.543,0,2.702,0.423,3.473,1.27c0.631,0.681,0.945,1.597,0.945,2.744c0,1.123-0.308,2.073-0.922,2.844 +c-0.352,0.451-0.836,0.811-1.45,1.079L94.244,131.74z M87.678,123.262h0.832c2.025,0,3.035-0.926,3.035-2.777 +c0-0.847-0.22-1.469-0.662-1.867c-0.428-0.39-1.159-0.585-2.192-0.585h-1.012L87.678,123.262L87.678,123.262z"/> +<path style="fill:#09E5FF;" d="M104.315,131.74h-2.767c-1.589-4.76-2.825-8.805-3.71-12.133c0.029,2.976,0.044,4.735,0.044,5.276 +v6.858h-1.979v-15.359h2.79l0.101,0.325c1.551,4.926,2.739,8.853,3.565,11.786l-0.013-0.755l-0.011-1.203 +c-0.015-1.836-0.023-3.295-0.023-4.374v-5.779h2.002L104.315,131.74L104.315,131.74z"/> +<path style="fill:#09E5FF;" d="M112.362,120.686v-0.505c0-0.675-0.101-1.193-0.304-1.551c-0.277-0.488-0.794-0.731-1.551-0.731 +c-0.637,0-1.117,0.176-1.44,0.528c-0.256,0.277-0.381,0.641-0.381,1.09c0,0.436,0.138,0.878,0.415,1.329 +c0.308,0.486,0.989,1.184,2.046,2.09c1.507,1.291,2.471,2.366,2.89,3.228c0.346,0.698,0.518,1.417,0.518,2.159 +c0,1.163-0.371,2.073-1.113,2.733c-0.704,0.629-1.673,0.945-2.901,0.945c-1.425,0-2.501-0.394-3.228-1.182 +c-0.593-0.652-0.889-1.532-0.889-2.641v-1.249h2.025v0.945c0,1.551,0.704,2.327,2.113,2.327c0.683,0,1.201-0.195,1.553-0.585 +c0.291-0.314,0.438-0.734,0.438-1.26c0-0.532-0.168-1.067-0.505-1.608c-0.346-0.539-1.05-1.262-2.115-2.169 +c-0.899-0.757-1.622-1.478-2.169-2.159c-0.675-0.84-1.012-1.815-1.012-2.924c0-1.065,0.338-1.901,1.012-2.509 +c0.652-0.576,1.574-0.866,2.765-0.866c1.32,0,2.306,0.365,2.957,1.092c0.585,0.643,0.878,1.562,0.878,2.754v0.719L112.362,120.686 +L112.362,120.686z"/> +<polygon style="fill:#09E5FF;" points="123.51,131.74 116.786,131.74 116.786,116.381 123.286,116.381 123.286,118.033 +118.811,118.033 118.811,122.948 122.747,122.948 122.747,124.599 118.811,124.599 118.811,130.088 123.51,130.088 "/> +<polygon style="fill:#09E5FF;" points="133.21,131.74 131.209,131.74 131.209,124.454 127.126,124.454 127.126,131.74 +125.124,131.74 125.124,116.381 127.126,116.381 127.126,122.847 131.209,122.847 131.209,116.381 133.21,116.381 "/> +<polygon style="fill:#09E5FF;" points="142.47,131.74 135.746,131.74 135.746,116.381 142.246,116.381 142.246,118.033 +137.769,118.033 137.769,122.948 141.705,122.948 141.705,124.599 137.769,124.599 137.769,130.088 142.47,130.088 "/> +<path style="fill:#09E5FF;" d="M152.495,131.74h-2.767c-1.589-4.76-2.827-8.805-3.712-12.133c0.031,2.976,0.046,4.735,0.046,5.276 +v6.858h-1.979v-15.359h2.788l0.101,0.325c1.553,4.926,2.742,8.853,3.565,11.786l-0.011-0.755l-0.013-1.203 +c-0.015-1.836-0.021-3.295-0.021-4.374v-5.779h2.002v15.358H152.495z"/> +</svg> +<!--[if lt IE 9]> +<img src="/resources/images/logos/ndr_brand_sprite_ndrtv.png" alt="NDR Fernsehen"/> +<![endif]--> +</a> +</div> +</div> +</header><div class="container w100"> +<!-- start ncc mediaplayer --> +<div class="projekktor_holder stagePlayer" itemscope itemtype="http://schema.org/VideoObject"> +<span itemprop="contentUrl" content="https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.hq.mp4" /> +<meta itemprop="embedURL" content="http://www.ndr.de/fernsehen/sturmderliebe1816-player.html" /> +<span itemprop="thumbnailUrl" content="http://www.ndr.de/fernsehen/screenshot494424_v-einspaltig.jpg"></span> +<span itemprop="duration" content="48:34" /> +<span itemprop="uploadDate" content="2018-03-15T10:49:39.015+01:00" /> +<img width="192" height="144" src="/fernsehen/screenshot494424_v-content.jpg" alt="Heiratsantrag von Andre an Melli. " title="Heiratsantrag von Andre an Melli." width=0 height=0 style='display:none' /> +<iframe +id="pp_sturmderliebe1816" +width="100%" +height="100%" +frameborder="0" +style="display: block;" +webkitAllowFullScreen +mozallowfullscreen +allowFullScreen +src="http://localhost:8589/fernsehen/sturmderliebe1816-ardplayer_image-a5409105-e38b-4847-ba32-fc2c337d7515_theme-ndrde.html?autoplay=true" +></iframe> +<div class="mplayer_textcontent "> +<div class="padding group"> +<div class="textinfo"> +<h1> +Folge 2881: Der langersehnte Antrag +</h1> +<span itemprop="name" content="Video: Folge 2881: Der langersehnte Antrag"></span> +<div class="subline"> +<span itemprop="alternateName">Sturm der Liebe</span> - <span itemprop="datePublished" content="2018-03-15T08:10:00.000+01:00">15.03.2018 08:10 Uhr </span> <span itemprop="author"></span> +</div> +<p itemprop="description">André fasst sich ein Herz und macht Melli den geplanten Antrag. Währenddessen ist Romy enttäuscht, dass Paul lediglich eine gute Freundin in ihr sieht. </p> +</div> +<div class="functions"> +<div class="social-media meta"> +<a href="http://de.facebook.com/sharer.php?u=https://www.ndr.de%2Ffernsehen%2FFolge-2881-Der-langersehnte-Antrag%2Csturmderliebe1816.html&t=Folge+2881%3A+Der+langersehnte+Antrag" class="socialmedia"><span class="icon icon_facebook"></span></a> +<a href="http://twitter.com/share?url=https://www.ndr.de%2Ffernsehen%2FFolge-2881-Der-langersehnte-Antrag%2Csturmderliebe1816.html&text=Folge+2881%3A+Der+langersehnte+Antrag" class="socialmedia"><span class="icon icon_twitter"></span></a> +</div> +<div class="features"> +<div class="rating_wrapper"> +<div class="rating_wrapper"> +<div class="rating" data-rating="0.0" data-uuid="cf71f412-b1f9-4653-b902-ab9b0bfd52f7" data-obid="cf71f412-b1f9-4653-b902-ab9b0bfd52f7" title="Bisherige Bewertung: 0 Sterne bei 0 Bewertungen"> +<ul> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +</ul> +<p> +<span>0</span> bei 0 Bewertungen +</p> +</div> +</div> +<div class="rating_confirm"> +<div class="panel send"> +<p>Mit <span class="amount"></span> von 5 Sternen</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>bewerten</a></p> +</div> +<div class="panel response"> +<p>Vielen Dank.</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>schließen</a></p> +</div> +<div class="panel reject"> +<p>Sie haben bereits abgestimmt.</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>schließen</a></p> +</div> +</div> +</div> +</div> +</div> +</div> +<div class="playerfooter ndrtv group"> +<div class="logo"></div> +<a href="/fernsehen/Sturm-der-Liebe,sendung751918.html" class="button"><span class="buttonshine"></span>Informationen zur Sendung</a> +</div> +</div> +</div> +<!-- ende mediaplayer --></div> +<div class="relatedmedia"> +<div class="container w100"> +<div class="modulepadding"> +<section class="w100 relatedmedia_slider group sliderelement same_serial_program" data-slider='{"elementSelectionType" : "class", "elementClass" : "mediathekslider", "theme" :"ndrslider3-light-theme", "leftMargin" : 30, "rightMargin" : 30, "endless" : false, "viewXS" : 2}'> +<h1><span>Mehr Sturm der Liebe</span></h1> +<div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot494140_v-zweispaltig.jpg" data-alt="Romy genießt auf einem Hochsitz die Nähe zu Paul. " data-title="Romy genießt auf einem Hochsitz die Nähe zu Paul." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot494140_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Romy genießt auf einem Hochsitz die Nähe zu Paul. " title="Romy genießt auf einem Hochsitz die Nähe zu Paul." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>48:43</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2880-Die-Ueberraschung,sturmderliebe1814.html" title="Zum Video: Folge 2880: Die Überraschung" > +Folge 2880: Die Überraschung +</a> +</h2> +<div class="teasertext"> +<div class="subline date">14.03.2018 08:10 Uhr</div> +<div class="subline show">Sturm der Liebe</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot493814_v-zweispaltig.jpg" data-alt="Alicia weigert sich, Christophs "Abschiedsgeschenk" anzunehmen. " data-title="Alicia weigert sich, Christophs "Abschiedsgeschenk" anzunehmen." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot493814_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Alicia weigert sich, Christophs "Abschiedsgeschenk" anzunehmen. " title="Alicia weigert sich, Christophs "Abschiedsgeschenk" anzunehmen." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>48:24</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2879-Alte-Gefuehle,sturmderliebe1810.html" title="Zum Video: Folge 2879: Alte Gefühle" > +Folge 2879: Alte Gefühle +</a> +</h2> +<div class="teasertext"> +<div class="subline date">13.03.2018 08:10 Uhr</div> +<div class="subline show">Sturm der Liebe</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/lindberghs100_v-zweispaltig.jpg" data-alt="Paul ( Sandro Kirtzel) im Gespräch mit seinr Schwester Alicia. " data-title="Paul ( Sandro Kirtzel) im Gespräch mit seinr Schwester Alicia." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/lindberghs100_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Paul ( Sandro Kirtzel) im Gespräch mit seinr Schwester Alicia. " title="Paul ( Sandro Kirtzel) im Gespräch mit seinr Schwester Alicia." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>49:13</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2878-Angespannte-Situation,sturmderliebe1808.html" title="Zum Video: Folge 2878: Angespannte Situation" > +Folge 2878: Angespannte Situation +</a> +</h2> +<div class="teasertext"> +<div class="subline date">12.03.2018 08:10 Uhr</div> +<div class="subline show">Sturm der Liebe</div> +</div> +</div> +</div> +</div> +</div></section> +</div> +</div> +</div> +<div class="relatedmedia"> +<div class="container w100"> +<div class="modulepadding"> +<section class="w100 relatedmedia_slider group sliderelement similar_program" data-slider='{"elementSelectionType" : "class", "elementClass" : "mediathekslider", "theme" :"ndrslider3-light-theme", "leftMargin" : 30, "rightMargin" : 30, "endless" : false, "viewXS" : 2}'> +<h1><span>Das könnte Sie auch interessieren</span></h1> +<div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot494406_v-zweispaltig.jpg" data-alt="Sonja verbringt Zeit mit ihrem Sohn Moritz. " data-title="Sonja verbringt Zeit mit ihrem Sohn Moritz." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot494406_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Sonja verbringt Zeit mit ihrem Sohn Moritz. " title="Sonja verbringt Zeit mit ihrem Sohn Moritz." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>47:49</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2612-Mutter-Sohn-Zeit,roterosen7236.html" title="Zum Video: Folge 2612: Mutter-Sohn-Zeit" > +Folge 2612: Mutter-Sohn-Zeit +</a> +</h2> +<div class="teasertext"> +<div class="subline date">15.03.2018 07:20 Uhr</div> +<div class="subline show">Rote Rosen</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot494126_v-zweispaltig.jpg" data-alt="Torben will sich zum Schein von Carla trennen. " data-title="Torben will sich zum Schein von Carla trennen." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot494126_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Torben will sich zum Schein von Carla trennen. " title="Torben will sich zum Schein von Carla trennen." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>47:50</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2611-Scheidung,roterosen7234.html" title="Zum Video: Folge 2611: Scheidung?" > +Folge 2611: Scheidung? +</a> +</h2> +<div class="teasertext"> +<div class="subline date">14.03.2018 07:20 Uhr</div> +<div class="subline show">Rote Rosen</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot493812_v-zweispaltig.jpg" data-alt="Tilmann kann es kaum glauben, dass Eva den Job in New York absagt. " data-title="Tilmann kann es kaum glauben, dass Eva den Job in New York absagt." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot493812_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Tilmann kann es kaum glauben, dass Eva den Job in New York absagt. " title="Tilmann kann es kaum glauben, dass Eva den Job in New York absagt." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>48:06</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2610-Die-verweigerte-Anstellung,roterosen7232.html" title="Zum Video: Folge 2610: Die verweigerte Anstellung" > +Folge 2610: Die verweigerte Anstellung +</a> +</h2> +<div class="teasertext"> +<div class="subline date">13.03.2018 07:19 Uhr</div> +<div class="subline show">Rote Rosen</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/kasper110_v-zweispaltig.jpg" data-alt="Merle Vanlohen (Anja Franke) trägt Kasper auf dem Arm. " data-title="Merle Vanlohen (Anja Franke) trägt Kasper auf dem Arm." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/kasper110_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Merle Vanlohen (Anja Franke) trägt Kasper auf dem Arm. " title="Merle Vanlohen (Anja Franke) trägt Kasper auf dem Arm." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>48:20</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Rote-Rosen-2609,roterosen7230.html" title="Zum Video: Folge 2609: Kaspars Rückkehr" > +Folge 2609: Kaspars Rückkehr +</a> +</h2> +<div class="teasertext"> +<div class="subline date">12.03.2018 07:20 Uhr</div> +<div class="subline show">Rote Rosen</div> +</div> +</div> +</div> +</div> +</div></section> +</div> +</div> +</div> +<div class="relatedmedia"> +<div class="container w100"> +<div class="modulepadding"> +<section class="w100 relatedmedia_slider group sliderelement same_genre" data-slider='{"elementSelectionType" : "class", "elementClass" : "mediathekslider", "theme" :"ndrslider3-light-theme", "leftMargin" : 30, "rightMargin" : 30, "endless" : false, "viewXS" : 2}'> +<h1><span>Soaps</span></h1> +<div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot494406_v-zweispaltig.jpg" data-alt="Sonja verbringt Zeit mit ihrem Sohn Moritz. " data-title="Sonja verbringt Zeit mit ihrem Sohn Moritz." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot494406_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Sonja verbringt Zeit mit ihrem Sohn Moritz. " title="Sonja verbringt Zeit mit ihrem Sohn Moritz." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>47:49</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2612-Mutter-Sohn-Zeit,roterosen7236.html" title="Zum Video: Folge 2612: Mutter-Sohn-Zeit" > +Folge 2612: Mutter-Sohn-Zeit +</a> +</h2> +<div class="teasertext"> +<div class="subline date">15.03.2018 07:20 Uhr</div> +<div class="subline show">Rote Rosen</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot494140_v-zweispaltig.jpg" data-alt="Romy genießt auf einem Hochsitz die Nähe zu Paul. " data-title="Romy genießt auf einem Hochsitz die Nähe zu Paul." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot494140_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Romy genießt auf einem Hochsitz die Nähe zu Paul. " title="Romy genießt auf einem Hochsitz die Nähe zu Paul." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>48:43</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2880-Die-Ueberraschung,sturmderliebe1814.html" title="Zum Video: Folge 2880: Die Überraschung" > +Folge 2880: Die Überraschung +</a> +</h2> +<div class="teasertext"> +<div class="subline date">14.03.2018 08:10 Uhr</div> +<div class="subline show">Sturm der Liebe</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot494126_v-zweispaltig.jpg" data-alt="Torben will sich zum Schein von Carla trennen. " data-title="Torben will sich zum Schein von Carla trennen." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot494126_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Torben will sich zum Schein von Carla trennen. " title="Torben will sich zum Schein von Carla trennen." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>47:50</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2611-Scheidung,roterosen7234.html" title="Zum Video: Folge 2611: Scheidung?" > +Folge 2611: Scheidung? +</a> +</h2> +<div class="teasertext"> +<div class="subline date">14.03.2018 07:20 Uhr</div> +<div class="subline show">Rote Rosen</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot493814_v-zweispaltig.jpg" data-alt="Alicia weigert sich, Christophs "Abschiedsgeschenk" anzunehmen. " data-title="Alicia weigert sich, Christophs "Abschiedsgeschenk" anzunehmen." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot493814_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Alicia weigert sich, Christophs "Abschiedsgeschenk" anzunehmen. " title="Alicia weigert sich, Christophs "Abschiedsgeschenk" anzunehmen." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>48:24</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2879-Alte-Gefuehle,sturmderliebe1810.html" title="Zum Video: Folge 2879: Alte Gefühle" > +Folge 2879: Alte Gefühle +</a> +</h2> +<div class="teasertext"> +<div class="subline date">13.03.2018 08:10 Uhr</div> +<div class="subline show">Sturm der Liebe</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot493812_v-zweispaltig.jpg" data-alt="Tilmann kann es kaum glauben, dass Eva den Job in New York absagt. " data-title="Tilmann kann es kaum glauben, dass Eva den Job in New York absagt." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot493812_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Tilmann kann es kaum glauben, dass Eva den Job in New York absagt. " title="Tilmann kann es kaum glauben, dass Eva den Job in New York absagt." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>48:06</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2610-Die-verweigerte-Anstellung,roterosen7232.html" title="Zum Video: Folge 2610: Die verweigerte Anstellung" > +Folge 2610: Die verweigerte Anstellung +</a> +</h2> +<div class="teasertext"> +<div class="subline date">13.03.2018 07:19 Uhr</div> +<div class="subline show">Rote Rosen</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/lindberghs100_v-zweispaltig.jpg" data-alt="Paul ( Sandro Kirtzel) im Gespräch mit seinr Schwester Alicia. " data-title="Paul ( Sandro Kirtzel) im Gespräch mit seinr Schwester Alicia." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/lindberghs100_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Paul ( Sandro Kirtzel) im Gespräch mit seinr Schwester Alicia. " title="Paul ( Sandro Kirtzel) im Gespräch mit seinr Schwester Alicia." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>49:13</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Folge-2878-Angespannte-Situation,sturmderliebe1808.html" title="Zum Video: Folge 2878: Angespannte Situation" > +Folge 2878: Angespannte Situation +</a> +</h2> +<div class="teasertext"> +<div class="subline date">12.03.2018 08:10 Uhr</div> +<div class="subline show">Sturm der Liebe</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/kasper110_v-zweispaltig.jpg" data-alt="Merle Vanlohen (Anja Franke) trägt Kasper auf dem Arm. " data-title="Merle Vanlohen (Anja Franke) trägt Kasper auf dem Arm." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/kasper110_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Merle Vanlohen (Anja Franke) trägt Kasper auf dem Arm. " title="Merle Vanlohen (Anja Franke) trägt Kasper auf dem Arm." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>48:20</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/Rote-Rosen-2609,roterosen7230.html" title="Zum Video: Folge 2609: Kaspars Rückkehr" > +Folge 2609: Kaspars Rückkehr +</a> +</h2> +<div class="teasertext"> +<div class="subline date">12.03.2018 07:20 Uhr</div> +<div class="subline show">Rote Rosen</div> +</div> +</div> +</div> +</div> +</div></section> +</div> +</div> +</div><!-- googleoff: index --> +<div id="footer"> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Der NDR</h2> +<ul> +<li><a href="/der_ndr/index.html" title="Zum Artikel: Unternehmen" >Unternehmen</a></li> +<li><a href="/der_ndr/presse/index.html" title="Zum Artikel: Presse" >Presse</a></li> +<li><a href="/der_ndr/daten_und_fakten/index.html" title="Zum Artikel: Zahlen, Daten, Fakten" >Zahlen, Daten, Fakten</a></li> +<li><a href="http://www.rundfunkbeitrag.de" title="Link: Alle Informationen zu den Rundfunkgebühren ab 1. Januar 2013" target="_blank">Rundfunkbeitrag</a></li> +<li><a href="/der_ndr/karriere/index.html" title="Zum Artikel: Karriere" >Karriere</a></li> +<li><a href="/der_ndr/standorte_und_adressen/index.html" title="Zum Artikel: Standorte & Adressen" >Standorte & Adressen</a></li> +<li><a href="/der_ndr/technik/index.html" title="Zum Artikel: Technik" >Technik</a></li> +<li><a href="/der_ndr/unternehmen/geschichte/index.html" title="Zum Artikel: NDR Chronik" >NDR Chronik</a></li> +<li><a href="/der_ndr/unternehmen/rundfunkrat/index.html" title="Zum Artikel: NDR Rundfunkrat" >NDR Rundfunkrat</a></li> +<li><a href="/der_ndr/unternehmen/verwaltungsrat/index.html" title="Zum Artikel: NDR Verwaltungsrat" >NDR Verwaltungsrat</a></li> +</ul> +</div> +</div> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Service</h2> +<ul> +<li><a href="/nachrichten/wetter/index.html" title="Zum Artikel: Wetter" >Wetter</a></li> +<li><a href="/nachrichten/verkehr/index.html" title="Zum Artikel: Verkehr" >Verkehr</a></li> +<li><a href="/ratgeber/kochen/index.html" title="Zum Artikel: Rezepte" >Rezepte</a></li> +<li><a href="/fernsehen/videotext/index.html" title="Zum Artikel: NDR Text" >NDR Text</a></li> +<li><a href="/fernsehen/service/leichte_sprache/index.html" title="Zum Artikel: Leichte Sprache im NDR" >Leichte Sprache im NDR</a></li> +<li><a href="http://www.ndrticketshop.de/" title="Link: Externer Link zum NDR Ticketshop" target="_blank">Tickets</a></li> +<li><a href="https://www.ndrshop.de/willkommen" title="Link: Link zum NDR Shop" target="_blank">Shop</a></li> +<li><a href="/service/technische_hilfe/index.html" title="Zum Artikel: Hilfe" >Hilfe</a></li> +<li><a href="/korrekturuebersicht100.html" title="Zum Artikel: Korrekturen" >Korrekturen</a></li> +</ul> +</div> +</div> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Themen</h2> +<ul> +<li><a href="/nachrichten/bundestagswahl_2017/index.html" title="Zum Artikel: Bundestagswahl" >Bundestagswahl</a></li> +<li><a href="/nachrichten/niedersachsen/landtagswahl_2017/index.html" title="Zum Artikel: Niedersachsen-Wahl" >Niedersachsen-Wahl</a></li> +<li><a href="/kultur/elbphilharmonie/index.html" title="Zum Artikel: Elbphilharmonie" >Elbphilharmonie</a></li> +<li><a href="/nachrichten/fluechtlinge/Fluechtlinge-in-Norddeutschland,fluechtlinge603.html" title="Zum Artikel: Flüchtlinge im Norden" >Flüchtlinge im Norden</a></li> +<li><a href="/nachrichten/kreuzfahrtschiffe127.html" title="Zum Artikel: Kreuzschifffahrt im Norden" >Kreuzschifffahrt im Norden</a></li> +<li><a href="/Storytelling-bei-NDRde,storytelling128.html" title="Zum Artikel: Visual Storytelling" >Visual Storytelling</a></li> +<li><a href="/nachrichten/netzwelt/index.html" title="Zum Artikel: Netzwelt" >Netzwelt</a></li> +<li><a href="/nachrichten/netzwelt/NDR-twitter-facebook-googleplus-youtube,ndrsozialenetzwerke101.html" title="Zum Artikel: Social Media" >Social Media</a></li> +<li><a href="/kultur/geschichte/index.html" title="Zum Artikel: Geschichte" >Geschichte</a></li> +<li><a href="/kultur/norddeutsche_sprache/index.html" title="Zum Artikel: Plattdeutsch" >Plattdeutsch</a></li> +<li><a href="/hand_in_hand_fuer_norddeutschland/index.html" title="Zum Artikel: Hand in Hand" >Hand in Hand</a></li> +<li><a href="/home/thema108.html" title="Zum Artikel: Themen A-Z" >Themen A-Z</a></li> +</ul> +</div> +</div><div class="module footerblock w25"> +<div class="modulepadding"> +<h2>NDR Fernsehen</h2> +<ul> +<li><a href="/fernsehen/sendungen/index.html" title="Zum Artikel: Sendungen A-Z" >Sendungen A-Z</a></li> +<li><a href="/fernsehen/programm/index.html" title="Zum Artikel: Programm" >Programm</a></li> +<li><a href="/fernsehen/livestream/index.html" title="Zum Video-Livestream: Livestream" >Livestream</a></li> +<li><a href="http://www.ndr-mitschnittservice.de/" title="Link: Link zum NDR Mitschnittservice mit einer Übersicht der Preise" target="_blank">Mitschnitte</a></li> +<li><a href="/nachrichten/investigation/Ressort-Investigation-im-NDR,investigation102.html" title="Zum Artikel: Ressort Investigation" >Ressort Investigation</a></li> +<li><a href="/fernsehen/50_jahre/index.html" title="Zum Artikel: 50 Jahre NDR Fernsehen" >50 Jahre NDR Fernsehen</a></li> +</ul> +</div> +</div><div class="module footerblock metanav"> +<div class="modulepadding"> +<ul> +<li><a href="/service/impressum/index.html" title="Impressum">Impressum</a></li> +<li><a href="/service/kontakt/index.html" title="Kontakt">Kontakt</a></li> +<li><a href="/service/datenschutz/index.html" title="Datenschutzerklärung">Datenschutz</a></li> +<li><a href="http://www.ard.de" title="ARD.de">ARD.de</a></li> +<li><a href="#" class="showcopyrights">Bildrechte</a></li> +<li id="copy">© Norddeutscher Rundfunk</li> +</ul> +</div> +<!-- Begin Sitestat4 code --> +<script type='text/javascript'> +<!-- +var ZPIX="https://de.sitestat.com/ndr/ndr/s?fernsehen.sturmderliebe1816&cid=sturmderliebe1816&pdt=20180315T1049&pti=Folge_2881_Der_langersehnte_Antrag&otp=video&bra=ndrtv&sid=1300&src=-&ctp="; +function sitestat(ns_l){ns_l+='&ns__t='+(new Date()).getTime();ns_pixelUrl=ns_l; ns_0=document.referrer; ns_0=(ns_0.lastIndexOf('/')==ns_0.length-1)?ns_0.substring(ns_0.lastIndexOf('/'),0):ns_0; if(ns_0.length>0)ns_l+='&ns_referrer='+escape(ns_0); +if(document.images){ns_1=new Image();ns_1.src=ns_l;}else +document.write('<img src="'+ns_l+'" width="1" height="1" alt="" />');} +sitestat("https://de.sitestat.com/ndr/ndr/s?fernsehen.sturmderliebe1816&cid=sturmderliebe1816&pdt=20180315T1049&pti=Folge_2881_Der_langersehnte_Antrag&otp=video&bra=ndrtv&sid=1300&src=-&ctp=broadcast"); +//--> +</script> +<noscript> +<p class="invisible"><img src="https://de.sitestat.com/ndr/ndr/s?fernsehen.sturmderliebe1816&cid=sturmderliebe1816&pdt=20180315T1049&pti=Folge_2881_Der_langersehnte_Antrag&otp=video&bra=ndrtv&sid=1300&src=-&ctp=broadcast" width="1" height="1" alt="" /></p> +</noscript> +<!-- End Sitestat4 code --> +<!-- IVW SZMnG Tag --> +<script type="text/javascript"> +$(document).ready(function() { +window.setTimeout("getivw()", 1); +}); +</script> +</div> +</div> +</div> +<!-- googleon: index --> +</body> +</html> \ No newline at end of file diff --git a/src/test/resources/ndr/ndr_film_detail2.json b/src/test/resources/ndr/ndr_film_detail2.json new file mode 100644 index 0000000000000000000000000000000000000000..f9237e4495e9675938a080aebcf6731a019d284d --- /dev/null +++ b/src/test/resources/ndr/ndr_film_detail2.json @@ -0,0 +1,151 @@ +{ + "_type":"video", + "_isLive":false, + "_dvrEnabled":false, + "_geoblocked":true, + "_defaultQuality":[ + "auto", + 2, + 3, + 1, + 0 + ], + "_audioImage":{ + "s":"/fernsehen/screenshot494424_v-zweispaltig.jpg", + "m":"/fernsehen/screenshot494424_v-contentgross.jpg", + "l":"/fernsehen/screenshot494424_v-ardgalerie.jpg", + "xl":"/fernsehen/screenshot494424_v-contentxl.jpg" + }, + "_previewImage":"/fernsehen/screenshot494424_v-contentxl.jpg", + "_subtitleUrl":"/media/ut65560.html", + "_subtitleOffset":0, + "_mediaArray":[ + { + "_plugin":0, + "_mediaStreamArray":[ + { + "_quality":"auto", + "_server":"", + "_stream":"https://ndrod-vh.akamaihd.net/z/geo/2018/0315/TV-20180315-0915-0800.,hi,hq,hd,.mp4.csmil/manifest.f4m", + "_cdn":"akamai" + }, + { + "_quality":0, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.lo.mp4", + "_cdn":"default" + }, + { + "_quality":1, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.hi.mp4", + "_cdn":"default" + }, + { + "_quality":2, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.hq.mp4", + "_cdn":"default" + }, + { + "_quality":3, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.hd.mp4", + "_cdn":"default" + } + ] + }, + { + "_plugin":1, + "_mediaStreamArray":[ + { + "_quality":"auto", + "_server":"", + "_stream":"https://ndrod-vh.akamaihd.net/i/geo/2018/0315/TV-20180315-0915-0800.,lo,hi,hq,hd,.mp4.csmil/master.m3u8", + "_cdn":"flashhls" + }, + { + "_quality":0, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.lo.mp4", + "_cdn":"default" + }, + { + "_quality":1, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.hi.mp4", + "_cdn":"default" + }, + { + "_quality":2, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.hq.mp4", + "_cdn":"default" + }, + { + "_quality":3, + "_server":"", + "_stream":"https://mediandr-a.akamaihd.net/progressive_geo/2018/0315/TV-20180315-0915-0800.hd.mp4", + "_cdn":"default" + } + ] + } + ], + "_duration":2914, + "_sortierArray":[ + 1, + 0 + ], + "agfParams":[ + { + "tracker":"AGF", + "agfGlobalParamsSDK":{ + "clientid":"de-605508", + "vcid":"b04", + "sfcode":"eu", + "prod":"vc", + "apn":"ardplayer", + "apid":"PB226FA86-44DD-42B5-8991-682F1375CB67" + }, + "agfMetaDataSDK":{ + "nol_c2":"p2,Y", + "nol_c7":"p7,sturmderliebe1816", + "nol_c8":"p8,2914", + "nol_c9":"p9,Sturm der Liebe__15.03.2018_08:10", + "nol_c10":"p10,NDR Fernsehen", + "nol_c12":"p12,Content", + "nol_c15":"p15,196270954_8977803", + "nol_c18":"p18,N", + "censuscategory":"NDR Fernsehen_Sturm der Liebe__15.03.2018_08:10", + "assetid":"TV-20180315-0915-0800", + "title":"NDR Fernsehen_Sturm der Liebe__15.03.2018_08:10", + "program":"Sturm der Liebe", + "livestream":"no", + "length":"2914", + "type":"content", + "nol_c16":"p16,ARD_Fiction" + } + } + ], + "comScoreParams":[ + { + "url":"//de.sitestat.com/ndr/ndr/s?html5.player", + "tracker":"COMSCORE", + "islivestream":"1", + "id":"sturmderliebe1816", + "duration":"2914", + "contentId":"sturmderliebe1816", + "publicationDate":"20180315T1049", + "primaryType":"video", + "objectType":"video", + "ns_st_pr":"Sturm der Liebe", + "ns_st_ep":"Folge 2881: Der langersehnte Antrag - 15.03.2018 08:10", + "trackTitle":"Folge_2881_Der_langersehnte_Antrag", + "trackTitleEncoded":"Folge+2881%3A+Der+langersehnte+Antrag", + "assetFileName":"TV-20180315-0915-0800", + "showId":"1300", + "trackingId":"-", + "trackingContentType":"broadcast" + } + ] +} \ No newline at end of file diff --git a/src/test/resources/ndr/ndr_film_detail3.html b/src/test/resources/ndr/ndr_film_detail3.html new file mode 100644 index 0000000000000000000000000000000000000000..4253c0867ac36ec6927b274dbc4d24a423f21a05 --- /dev/null +++ b/src/test/resources/ndr/ndr_film_detail3.html @@ -0,0 +1,1010 @@ +<!DOCTYPE html> +<html lang="de" itemscope="itemscope" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns# video: http://ogp.me/ns/video#"> +<!-- base_head --> +<head> + +<title>Giegold: "Mehr europäische Kontroversen zeigen" | NDR.de - Fernsehen - Sendungen A-Z - ZAPP</title> +<meta charset="utf-8"> +<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<meta name="title" content="Giegold: "Mehr europäische Kontroversen zeigen" " /> +<meta name="googlebot" content="unavailable_after: 28-Mar-2019 23:20:00 CET"/> +<meta name="expires" content="2019-03-28T23:20:00.000"/> +<meta property="og:title" content="Giegold: "Mehr europäische Kontroversen zeigen" "/> +<meta name="description" content="Der Europaabgeordnete Sven Giegold (Grüne) fordert im ZAPP Interview einen Europakanal und kritisiert, dass die Gesetzgebung in Brüssel viel zu selten Thema ist." /> +<meta property="og:description" content="Der Europaabgeordnete Sven Giegold (Grüne) fordert im ZAPP Interview einen Europakanal und kritisiert, dass die Gesetzgebung in Brüssel viel zu selten Thema ist." /> +<meta property="og:image" content="https://www.ndr.de/fernsehen/sendungen/zapp/giegold120_v-contentxl.jpg" /> +<link rel="canonical" href="/fernsehen/sendungen/zapp/Mehr-europaeische-Kontroversen-zeigen,zapp11204.html" /> +<meta name="twitter:card" content="summary_large_image"> +<meta name="twitter:creator" content="@ndr"> +<meta name="twitter:site" content="@ndr"> +<meta name="twitter:domain" content="https://www.ndr.de/fernsehen/sendungen/zapp/Mehr-europaeische-Kontroversen-zeigen,zapp11204.html"/> +<meta name="twitter:title" content="Giegold: "Mehr europäische Kontroversen zeigen" "/> +<meta name="twitter:description" content="Der Europaabgeordnete Sven Giegold (Grüne) fordert im ZAPP Interview einen Europakanal und kritisiert, dass die Gesetzgebung in Brüssel viel zu selten Thema ist."/> +<meta name="twitter:image:src" content="https://www.ndr.de/fernsehen/sendungen/zapp/giegold120_v-contentxl.jpg" /> +<meta name="medium" content="video" /> +<meta property="og:locale" content="de_DE"/> +<meta property="og:type" content="video.episode"/> +<meta property="og:site_name" content="NDR Mediathek"/> +<meta property="og:url" content="https://www.ndr.de/fernsehen/sendungen/zapp/Mehr-europaeische-Kontroversen-zeigen,zapp11204.html"/> +<meta property="og:video" content="https://www.ndr.de/fernsehen/sendungen/zapp/Mehr-europaeische-Kontroversen-zeigen,zapp11204.html"/> +<meta property="og:video:type" content="text/html"/> +<meta property="video:duration" content="155"/> +<meta property="video:release_date" content="2018-03-28T23:20:00.000"/> +<meta name="keywords" lang="de" content="Sven Giegold, ARD, Europa, Öffentlich-Rechtlich, Grüne, Brüssel, EU,Europa,NDR,Norddeutscher Rundfunk" /> +<meta name="author" content="NDR" /> +<meta name="generator" content="orig4" /> +<meta name="robots" content="index, follow, noarchive" /> +<meta name="language" content="de" /> +<link rel="icon" href="/favicon.ico" type="image/x-icon" /> +<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> +<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png"> +<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png"> +<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png"> +<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png"> +<link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png"> +<link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png"> +<link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png"> +<link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png"> +<link rel="icon" type="image/png" href="/favicon-196x196.png" sizes="196x196"> +<link rel="icon" type="image/png" href="/favicon-160x160.png" sizes="160x160"> +<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"> +<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"> +<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"> +<meta name="msapplication-TileColor" content="#0c1754"> +<meta name="msapplication-TileImage" content="/mstile-144x144.png"> +<link type="text/css" rel="stylesheet" href="/resources/css/generated/ndrmerged.css" media="all" /> +<!--[if lte IE 8]> +<link type="text/css" rel="stylesheet" href="/resources/css/ie.css" media="all" /> +<![endif]--> +<!--[if IE 9 ]> +<link type="text/css" rel="stylesheet" href="/resources/css/ie9.css" media="all" /> +<![endif]--> +<link type="text/css" rel="stylesheet" href="/resources/css/generated/print.css" media="print" /> +<script type="text/javascript" src="/common/resources/lib/ndrde_base.js"></script> +<script type="text/javascript" src="/resources/js/scripts.js"></script> +<!--[if lt IE 9]> +<script> +document.createElement('header'); +document.createElement('nav'); +document.createElement('section'); +document.createElement('article'); +document.createElement('aside'); +document.createElement('footer'); +document.createElement('hgroup'); +</script> +<![endif]--> +</head> +<body class="" > +<a href="#content" title="Skip to content" class="skiplink">Direkt zum Inhalt</a> +<div id="page"> +<header id="pageheader" role="navigation"> +<div class="mainnav"> +<a id="dachmarkenlogo" href="/index.html" > +<span class="invisible srlabel">zur NDR Homepage</span> +<svg width="100%" height="100%" viewBox="0 -0.096 64 40"> +<path fill="#ffffff" d="M8.923,32.342L3.524,22.62v9.723H0V15.671h3.699l5.624,10.373V15.671h3.524v16.671H8.923z M12.847,15.671V0 +h1.975v15.671H12.847z M12.847,39.465v-7.123h1.975v7.123H12.847z M20.72,15.671c4.124,0,6.249,1.975,6.249,5.798v5.024 +c0,3.924-2.049,5.849-6.249,5.849h-5.898V15.671H20.72z M20.395,29.193c2,0,2.974-1,2.974-3.049v-4.299c0-2.024-1-3.024-2.974-3.024 +h-1.774v10.372H20.395z M37.341,32.342l-2.974-6.398h-2v6.398h-3.699V15.671h5.824c4.099,0,6.048,1.625,6.048,5.099 +c0,2.299-0.85,3.674-2.75,4.499l3.524,7.073H37.341z M34.642,22.919c1.475,0,2.349-0.85,2.349-2.274 +c0-1.475-0.649-2.024-2.349-2.024h-2.35v4.299H34.642z"/> +<path fill="#ffffff" d="M43.571,32.27v-2.647h2.038v2.647H43.571z"/> +<path fill="#ffffff" d="M53.002,32.268l-0.045-0.99c-0.273,0.275-0.652,0.542-1.138,0.801c-0.478,0.251-1.004,0.385-1.581,0.401 +c-0.842-0.016-1.501-0.316-1.979-0.902c-0.516-0.594-0.773-1.395-0.773-2.402V23.27c0.015-2.383,0.925-3.582,2.73-3.598 +c0.607,0.016,1.126,0.137,1.559,0.363c0.432,0.218,0.811,0.496,1.137,0.831v-5.108h1.943v16.51H53.002z M52.911,22.447 +c-0.198-0.203-0.476-0.41-0.833-0.621c-0.38-0.187-0.772-0.289-1.176-0.304c-1.014,0-1.504,0.671-1.473,2.014v5.244 +c0.015,1.218,0.499,1.834,1.45,1.85c0.403-0.016,0.803-0.137,1.199-0.363c0.358-0.21,0.636-0.41,0.833-0.597V22.447z"/> +<path fill="#ffffff" d="M64.171,28.972c-0.045,2.339-1.237,3.528-3.575,3.567c-2.467-0.07-3.693-1.344-3.677-3.82v-5.18 +c0.03-2.562,1.286-3.859,3.768-3.891c2.307,0.062,3.469,1.291,3.484,3.685v3.217h-5.285v2.398c-0.016,1.191,0.54,1.795,1.666,1.811 +c0.54,0.016,0.966-0.129,1.278-0.435c0.281-0.29,0.422-0.764,0.422-1.422v-0.459h1.918V28.972z M62.298,23.2 +c-0.015-1.243-0.582-1.873-1.7-1.888c-1.141,0.016-1.719,0.645-1.734,1.888v1.735h3.435V23.2z"/> +<image src="/resources/images/logos/NDR_logo.png" width="100%" height="100%" /> +</svg> +<span id="claim"> +<svg width="100%" height="100%" viewBox="18.923 35.779 69 8"> +<path d="M8.923,32.342L3.524,22.62v9.723H0V15.671h3.699l5.624,10.373V15.671h3.524v16.671H8.923z M12.847,15.671V0h1.975v15.671 +H12.847z M12.847,39.465v-7.123h1.975v7.123H12.847z M20.72,15.671c4.124,0,6.249,1.975,6.249,5.798v5.024 +c0,3.924-2.049,5.849-6.249,5.849h-5.898V15.671H20.72z M20.395,29.193c2,0,2.974-1,2.974-3.049v-4.299c0-2.024-1-3.024-2.974-3.024 +h-1.774v10.372H20.395z M37.341,32.342l-2.974-6.398h-2v6.398h-3.699V15.671h5.824c4.099,0,6.048,1.625,6.048,5.099 +c0,2.299-0.85,3.674-2.75,4.499l3.524,7.073H37.341z M34.642,22.919c1.475,0,2.349-0.85,2.349-2.274 +c0-1.475-0.649-2.024-2.349-2.024h-2.35v4.299H34.642z"/> +<path fill="#ffffff" d="M23.036,40.896c0.026,1.634-0.632,2.438-1.975,2.412h-1.394v-6.67H21c0.75,0,1.279,0.193,1.587,0.58 +c0.306,0.393,0.455,0.955,0.449,1.685V40.896z M22.197,38.663c-0.006-0.869-0.391-1.306-1.154-1.312h-0.546v5.245h0.565 +c0.77-0.023,1.148-0.529,1.135-1.518V38.663z"/> +<path fill="#ffffff" d="M26.229,43.309l-0.019-0.426c-0.334,0.323-0.689,0.484-1.064,0.484c-0.388-0.006-0.693-0.125-0.914-0.357 +c-0.218-0.228-0.327-0.536-0.327-0.924v-0.279c0.019-1.03,0.771-1.6,2.258-1.711v-0.674c0.006-0.479-0.207-0.715-0.641-0.709 +c-0.468-0.006-0.699,0.248-0.693,0.764c0,0.02,0,0.075,0,0.167h-0.78v-0.166c0.009-0.952,0.51-1.432,1.502-1.438 +c0.948,0.006,1.422,0.459,1.422,1.357v3.912H26.229z M26.163,40.701c-0.971,0.098-1.453,0.462-1.447,1.092v0.21 +c0,0.447,0.21,0.674,0.631,0.681c0.266,0,0.538-0.144,0.816-0.431V40.701z"/> +<path fill="#ffffff" d="M30.761,42.134c-0.006,0.398-0.142,0.71-0.406,0.937c-0.277,0.224-0.649,0.34-1.119,0.35 +c-1.02-0.016-1.539-0.479-1.558-1.386v-0.292h0.81v0.245c0,0.526,0.255,0.786,0.767,0.779c0.451-0.007,0.68-0.217,0.686-0.631 +c-0.006-0.026-0.009-0.052-0.009-0.078c-0.025-0.248-0.145-0.458-0.359-0.631c-0.211-0.167-0.455-0.336-0.732-0.509 +c-0.271-0.176-0.51-0.386-0.718-0.631c-0.211-0.248-0.32-0.563-0.326-0.944v-0.098c0.013-0.783,0.496-1.181,1.449-1.194 +c0.916,0.013,1.382,0.439,1.401,1.278v0.258h-0.781c0-0.114,0-0.185,0-0.211c-0.006-0.441-0.23-0.662-0.672-0.662 +c-0.224,0-0.385,0.054-0.483,0.162c-0.092,0.108-0.137,0.232-0.137,0.373c0,0.02,0.003,0.042,0.009,0.069 +c0.016,0.114,0.058,0.221,0.127,0.318c0.072,0.102,0.159,0.2,0.26,0.294c0.11,0.085,0.227,0.168,0.35,0.25 +c0.129,0.088,0.258,0.178,0.388,0.27c0.277,0.176,0.523,0.384,0.737,0.623c0.101,0.121,0.181,0.258,0.241,0.412 +c0.05,0.154,0.076,0.332,0.076,0.534V42.134z"/> +<path fill="#ffffff" d="M36.561,41.84c-0.013,0.965-0.577,1.455-1.692,1.468h-1.607v-6.67h1.499 +c1.097-0.006,1.639,0.447,1.626,1.362v0.62c0.006,0.585-0.292,0.952-0.897,1.098c0.708,0.091,1.065,0.521,1.071,1.289V41.84z +M35.546,38.152c0.013-0.551-0.297-0.818-0.929-0.802H34.1v2.081h0.621c0.557,0,0.832-0.305,0.825-0.915V38.152z M35.712,41.105 +c0-0.34-0.068-0.587-0.204-0.741c-0.142-0.154-0.386-0.23-0.73-0.23H34.1v2.462h0.64c0.648-0.006,0.972-0.338,0.972-0.996V41.105z" +/> +<path fill="#ffffff" d="M40.356,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34h-2.202v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M39.576,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M44.139,42.134c-0.006,0.398-0.142,0.71-0.406,0.937c-0.277,0.224-0.649,0.34-1.119,0.35 +c-1.02-0.016-1.539-0.479-1.558-1.386v-0.292h0.81v0.245c0,0.526,0.255,0.786,0.767,0.779c0.451-0.007,0.68-0.217,0.686-0.631 +c-0.006-0.026-0.009-0.052-0.009-0.078c-0.025-0.248-0.145-0.458-0.359-0.631c-0.211-0.167-0.455-0.336-0.732-0.509 +c-0.271-0.176-0.51-0.386-0.718-0.631c-0.211-0.248-0.32-0.563-0.326-0.944v-0.098c0.013-0.783,0.496-1.181,1.449-1.194 +c0.916,0.013,1.382,0.439,1.401,1.278v0.258h-0.781c0-0.114,0-0.185,0-0.211c-0.006-0.441-0.23-0.662-0.672-0.662 +c-0.224,0-0.385,0.054-0.483,0.162c-0.092,0.108-0.137,0.232-0.137,0.373c0,0.02,0.003,0.042,0.009,0.069 +c0.016,0.114,0.058,0.221,0.127,0.318c0.072,0.102,0.159,0.2,0.26,0.294c0.11,0.085,0.227,0.168,0.35,0.25 +c0.129,0.088,0.258,0.178,0.388,0.27c0.277,0.176,0.523,0.384,0.737,0.623c0.101,0.121,0.181,0.258,0.241,0.412 +c0.05,0.154,0.076,0.332,0.076,0.534V42.134z"/> +<path fill="#ffffff" d="M47.02,43.289c-0.265,0.052-0.487,0.078-0.667,0.078c-0.792,0.006-1.182-0.417-1.169-1.272V38.82h-0.67 +v-0.673h0.68v-1.464l0.81-0.143v1.606h0.951v0.673h-0.951v3.309c-0.006,0.382,0.166,0.57,0.516,0.564 +c0.135,0,0.293-0.023,0.473-0.069L47.02,43.289z"/> +<path fill="#ffffff" d="M50.614,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34h-2.202v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M49.833,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M55.468,43.309l-0.019-0.426c-0.334,0.323-0.689,0.484-1.064,0.484c-0.388-0.006-0.693-0.125-0.914-0.357 +c-0.218-0.228-0.327-0.536-0.327-0.924v-0.279c0.019-1.03,0.771-1.6,2.258-1.711v-0.674c0.006-0.479-0.207-0.715-0.641-0.709 +c-0.468-0.006-0.699,0.248-0.693,0.764c0,0.02,0,0.075,0,0.167h-0.78v-0.166c0.009-0.952,0.51-1.432,1.502-1.438 +c0.948,0.006,1.422,0.459,1.422,1.357v3.912H55.468z M55.402,40.701c-0.971,0.098-1.453,0.462-1.447,1.092v0.21 +c0,0.447,0.21,0.674,0.631,0.681c0.266,0,0.538-0.144,0.816-0.431V40.701z"/> +<path fill="#ffffff" d="M61.18,43.308v-3.76c0.006-0.459-0.155-0.685-0.485-0.679c-0.26,0.006-0.504,0.166-0.732,0.479v3.96h-0.81 +v-3.829c-0.006-0.407-0.18-0.61-0.521-0.61c-0.252,0-0.486,0.137-0.701,0.41v4.029h-0.814v-5.161h0.732l0.028,0.449 +c0.319-0.352,0.668-0.527,1.047-0.527c0.467-0.006,0.781,0.204,0.942,0.63c0.129-0.199,0.297-0.355,0.502-0.469 +c0.202-0.107,0.405-0.161,0.611-0.161c0.672,0,1.009,0.43,1.009,1.289v3.95H61.18z"/> +<path fill="#ffffff" d="M67.57,43.308l-1.433-3.85c-0.095-0.267-0.201-0.582-0.317-0.943c-0.124-0.368-0.189-0.562-0.195-0.582 +c0.013,0.146,0.029,0.646,0.049,1.5v3.875h-0.839v-6.67h1.091l1.248,3.332c0.098,0.248,0.202,0.538,0.312,0.87 +c0.11,0.362,0.168,0.549,0.175,0.562c-0.013-0.14-0.025-0.621-0.038-1.441v-3.322h0.839v6.67H67.57z"/> +<path fill="#ffffff" d="M72.568,41.859c-0.013,1.018-0.528,1.538-1.547,1.561c-1.035-0.029-1.552-0.55-1.552-1.562v-2.31 +c0-0.459,0.132-0.825,0.397-1.099c0.259-0.267,0.641-0.404,1.145-0.41c1.025,0.02,1.544,0.524,1.557,1.513V41.859z M71.759,39.571 +c0-0.247-0.065-0.44-0.195-0.58c-0.136-0.133-0.317-0.2-0.542-0.2c-0.222,0-0.398,0.067-0.528,0.2 +c-0.143,0.14-0.214,0.333-0.214,0.58v2.327c0.006,0.508,0.254,0.765,0.743,0.771c0.479,0,0.725-0.257,0.738-0.771V39.571z"/> +<path fill="#ffffff" d="M75.615,39.025c-0.381,0.026-0.668,0.125-0.861,0.298c-0.208,0.173-0.368,0.402-0.478,0.689v3.295h-0.807 +v-5.162h0.78v0.85c0.195-0.306,0.396-0.532,0.6-0.679c0.208-0.146,0.463-0.232,0.766-0.258V39.025z"/> +<path fill="#ffffff" d="M78.298,43.308l-0.019-0.413c-0.114,0.115-0.272,0.226-0.474,0.334c-0.199,0.104-0.418,0.161-0.659,0.167 +c-0.351-0.006-0.625-0.132-0.825-0.376C76.107,42.772,76,42.439,76,42.019v-2.461c0.006-0.993,0.385-1.493,1.137-1.499 +c0.253,0.006,0.469,0.057,0.649,0.151c0.18,0.091,0.338,0.207,0.474,0.346v-2.128h0.81v6.879H78.298z M78.26,39.215 +c-0.083-0.084-0.198-0.17-0.347-0.258c-0.159-0.078-0.322-0.121-0.49-0.127c-0.422,0-0.627,0.28-0.614,0.839v2.186 +c0.006,0.507,0.208,0.764,0.604,0.771c0.168-0.006,0.334-0.057,0.5-0.151c0.149-0.087,0.265-0.17,0.347-0.249V39.215z"/> +<path fill="#ffffff" d="M82.992,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34H80.79v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M82.211,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M86.021,43.308v-3.829c0.006-0.433-0.161-0.646-0.501-0.64c-0.183,0.006-0.349,0.062-0.497,0.166 +c-0.148,0.107-0.262,0.208-0.341,0.303v4h-0.814v-5.161h0.752l0.028,0.483c0.117-0.133,0.27-0.26,0.459-0.381 +c0.18-0.121,0.387-0.184,0.621-0.19c0.729-0.006,1.097,0.407,1.103,1.24v4.009H86.021z"/> +<image src="/resources/images/logos/NDR_claim.png" width="100%" height="100%" /> +</svg> +</span> +</a> +<!-- googleoff: index --> +<nav> +<ul id="navigation" role="navigation" > +<li > +<a href="/nachrichten/index.html" class="mn_item_1">Nachrichten</a> +<ul class="subnav subnav_item_1"> +<li><a href="/nachrichten/niedersachsen/index.html">Niedersachsen</a></li> +<li><a href="/nachrichten/schleswig-holstein/index.html">Schleswig-Holstein</a></li> +<li><a href="/nachrichten/mecklenburg-vorpommern/index.html">Mecklenburg-Vorpommern</a></li> +<li><a href="/nachrichten/hamburg/index.html">Hamburg</a></li> +<li><a href="/nachrichten/wetter/index.html">Wetter</a></li> +<li><a href="/nachrichten/verkehr/index.html">Verkehr</a></li> +</ul> +</li> +<li > +<a href="/sport/index.html" class="mn_item_2">Sport</a> +<ul class="subnav subnav_item_2"> +<li><a href="/sport/fussball/index.html">Fußball</a></li> +<li><a href="/sport/handball/index.html">Handball</a></li> +<li><a href="/sport/mehr_sport/index.html">Mehr Sport</a></li> +<li><a href="/sport/ergebnisse/index.html">Ergebnisse</a></li> +<li><a href="/sport/live/index.html">Live</a></li> +</ul> +</li> +<li > +<a href="/ratgeber/index.html" class="mn_item_3">Ratgeber</a> +<ul class="subnav subnav_item_3"> +<li><a href="/ratgeber/kochen/index.html">Kochen</a></li> +<li><a href="/ratgeber/reise/index.html">Reise</a></li> +<li><a href="/ratgeber/garten/index.html">Garten</a></li> +<li><a href="/ratgeber/gesundheit/index.html">Gesundheit</a></li> +<li><a href="/ratgeber/verbraucher/index.html">Verbraucher</a></li> +</ul> +</li> +<li > +<a href="/kultur/index.html" class="mn_item_4">Kultur</a> +<ul class="subnav subnav_item_4"> +<li><a href="/kultur/musik/index.html">Musik</a></li> +<li><a href="/kultur/film/index.html">Film</a></li> +<li><a href="/kultur/buch/index.html">Buch</a></li> +<li><a href="/kultur/kunst/index.html">Kunst</a></li> +<li><a href="/kultur/geschichte/index.html">Geschichte</a></li> +</ul> +</li> +<li > +<a href="/fernsehen/index.html" class="mn_item_5">Fernsehen</a> +<ul class="subnav subnav_item_5"> +<li><a href="/fernsehen/livestream/index.html">Livestream</a></li> +<li><a href="/fernsehen/sendungen/index.html">Sendungen A-Z</a></li> +<li><a href="/fernsehen/programm/index.html">Programm</a></li> +<li><a href="/fernsehen/service/index.html">Service</a></li> +<li class="socialmedia-link facebook"><a href="https://www.facebook.com/ndrfernsehen" title="NDR Fernsehen bei Facebook" tabindex="0"><span class="icon icon_facebook"></span><span class="socialmedia-label">NDR Fernsehen bei Facebook</span></a></li> +</ul> +</li> +<li > +<a href="/radio/index.html" class="mn_item_6">Radio</a> +<ul class="subnav subnav_item_6"> +</ul> +</li> +<li class="active"> +<a href="/mediathek/index.html" class="mn_item_7 active">Mediathek</a> +<ul class="subnav subnav_item_7"> +<li><a href="/mediathek/sendung_verpasst/index.html">Sendung verpasst</a></li> +<li><a href="/mediathek/sendungen_a-z/index.html">Sendungen A-Z</a></li> +<li><a href="/mediathek/audio/index.html">Audio</a></li> +</ul> +</li><li id="menusearch"> +<a href="#" class="menusearch" title=""><span class="invisible srlabel">Suche einblenden</span></a> +<div class="quicksearch group"> +<form id="search" action="/suche10.html" method="get"> +<div class="form_element w66"> +<div class="modulepadding"> +<label for="searchword" class="invisible">Suchbegriffe:</label> +<input id="searchword" type="text" name="query" placeholder="Suchbegriff" /> +</div> +</div> +<div class="form_element w33" id="quicksearchsubmit"> +<div class="modulepadding"> +<button type="submit" class="button_sprite w100"><span>Suchen</span></button> +</div> +</div> +<div class="form_element w100"> +<div class="modulepadding"> +<label for="check_mediathek" class="smallelement"> +<input id="check_mediathek" type="checkbox" name="search_mediathek" value="1" checked="checked"> +<span>nur in der Mediathek suchen</span></label> +</div> +</div> +</form> +</div> +</li> +</ul> +</nav> +</div> +<div class="subnavbar"> +<!-- googleon: index --><div class="horizon"></div> +<div id="brandinglogo"> +<a title="Zur Startseite: ZAPP" href="http://www.ndr.de/zapp"> +<img src="/resources/images/logos/ndr_brand_sprite_ndrtv_51.png" alt="ZAPP"/> +</a> +</div> +</div> +</header><div class="container w100"> +<!-- start ncc mediaplayer --> +<div class="projekktor_holder stagePlayer" itemscope itemtype="http://schema.org/VideoObject"> +<span itemprop="contentUrl" content="https://mediandr-a.akamaihd.net/progressive/2018/0313/TV-20180313-1245-1600.hq.mp4" /> +<meta itemprop="embedURL" content="http://www.ndr.de/fernsehen/sendungen/zapp/zapp11204-player.html" /> +<span itemprop="thumbnailUrl" content="http://www.ndr.de/fernsehen/sendungen/zapp/giegold120_v-einspaltig.jpg"></span> +<span itemprop="duration" content="02:35" /> +<span itemprop="uploadDate" content="2018-03-13T16:20:41.794+01:00" /> +<img width="192" height="144" src="/fernsehen/sendungen/zapp/giegold120_v-content.jpg" alt="Grünen-Europapolitiker Sven Giegold im NDR-Interview " title="Grünen-Europapolitiker Sven Giegold im NDR-Interview" width=0 height=0 style='display:none' /> +<iframe +id="pp_zapp11204" +width="100%" +height="100%" +frameborder="0" +style="display: block;" +webkitAllowFullScreen +mozallowfullscreen +allowFullScreen +src="/fernsehen/sendungen/zapp/zapp11204-ardplayer_image-00b52c24-345e-4e7e-ac78-30573c9294bc_theme-ndrde.html?autoplay=true" +></iframe> +<div class="mplayer_textcontent "> +<div class="padding group"> +<div class="textinfo"> +<h1> +Giegold: "Mehr europäische Kontroversen zeigen" +</h1> +<span itemprop="name" content="Video: Giegold: "Mehr europäische Kontroversen zeigen""></span> +<div class="subline"> +<span itemprop="alternateName"></span> +<span itemprop="alternateName">ZAPP</span> +- +<span itemprop="datePublished" content="2018-03-28T23:20:00.000+02:00">28.03.2018 23:20 Uhr </span> <span itemprop="author">Autor/in: Daniel Bouhs </span> +</div> +<p itemprop="description">Der Europaabgeordnete Sven Giegold (Grüne) fordert im ZAPP Interview einen Europakanal und kritisiert, dass die Gesetzgebung in Brüssel viel zu selten Thema ist.</p> +</div> +<div class="functions"> +<div class="social-media meta"> +<a href="http://de.facebook.com/sharer.php?u=https://www.ndr.de%2Ffernsehen%2Fsendungen%2Fzapp%2FMehr-europaeische-Kontroversen-zeigen%2Czapp11204.html&t=Giegold%3A+%22Mehr+europ%C3%A4ische+Kontroversen+zeigen%22" class="socialmedia"><span class="icon icon_facebook"></span></a> +<a href="http://twitter.com/share?url=https://www.ndr.de%2Ffernsehen%2Fsendungen%2Fzapp%2FMehr-europaeische-Kontroversen-zeigen%2Czapp11204.html&text=Giegold%3A+%22Mehr+europ%C3%A4ische+Kontroversen+zeigen%22" class="socialmedia"><span class="icon icon_twitter"></span></a> +</div> +<div class="features"> +<div class="rating_wrapper"> +<div class="rating_wrapper"> +<div class="rating" data-rating="4.666666666666667" data-uuid="da056d90-5b0b-4dc2-a4e0-a7d983337a52" data-obid="da056d90-5b0b-4dc2-a4e0-a7d983337a52" title="Bisherige Bewertung: 4,67 Sterne bei 3 Bewertungen"> +<ul> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +</ul> +<p> +<span>4,67</span> bei 3 Bewertungen +</p> +</div> +</div> +<div class="rating_confirm"> +<div class="panel send"> +<p>Mit <span class="amount"></span> von 5 Sternen</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>bewerten</a></p> +</div> +<div class="panel response"> +<p>Vielen Dank.</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>schließen</a></p> +</div> +<div class="panel reject"> +<p>Sie haben bereits abgestimmt.</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>schließen</a></p> +</div> +</div> +</div> +</div> +</div> +</div> +<div class="playerfooter daserste group"> +<div class="logo"></div> +<a href="/fernsehen/sendungen/zapp/Das-Medienmagazin,sendung756840.html" class="button"><span class="buttonshine"></span>Informationen zur Sendung</a> +</div> +</div> +</div> +<!-- ende mediaplayer --></div> +<div class="relatedmedia"> +<div class="container w100"> +<div class="modulepadding"> +<section class="w100 relatedmedia_slider group sliderelement same_serial_program" data-slider='{"elementSelectionType" : "class", "elementClass" : "mediathekslider", "theme" :"ndrslider3-light-theme", "leftMargin" : 30, "rightMargin" : 30, "endless" : false, "viewXS" : 2}'> +<h1><span>Mehr ZAPP</span></h1> +<div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/reschke498_v-zweispaltig.jpg" data-alt="ZAPP vom 07.03.2018 mit Moderatorin Anja Reschke. " data-title="ZAPP vom 07.03.2018 mit Moderatorin Anja Reschke." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/reschke498_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="ZAPP vom 07.03.2018 mit Moderatorin Anja Reschke. " title="ZAPP vom 07.03.2018 mit Moderatorin Anja Reschke." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:04</div> +<div class="textpadding left"><span class="icon "></span>ZAPP</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/zapp/ZAPP-Das-Medienmagazin,zapp11202.html" title="Zum Video: ZAPP: Gladbeck, "Bild", #NoBillag" > +ZAPP: Gladbeck, "Bild", #NoBillag +</a> +</h2> +<div class="teasertext"> +<div class="subline date">07.03.2018 23:20 Uhr</div> +<div class="subline show">ZAPP</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot489942_v-zweispaltig.jpg" data-alt="Anja Reschke " data-title="Anja Reschke" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot489942_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Anja Reschke " title="Anja Reschke" class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:55</div> +<div class="textpadding left"><span class="icon "></span>ZAPP</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/zapp/ZAPP-Das-Medienmagazin,zapp11192.html" title="Zum Video: ZAPP - Das Medienmagazin" > +ZAPP - Das Medienmagazin +</a> +</h2> +<div class="teasertext"> +<div class="subline date">28.02.2018 23:30 Uhr</div> +<div class="subline show">ZAPP</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot487614_v-zweispaltig.jpg" data-alt="Constantin Schreiber. " data-title="Constantin Schreiber." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot487614_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Constantin Schreiber. " title="Constantin Schreiber." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:47</div> +<div class="textpadding left"><span class="icon "></span>ZAPP</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/zapp/ZAPP-Das-Medienmagazin,zapp11180.html" title="Zum Video: ZAPP: #miomiogate, der Rundfunkbeitrag, der ORF" > +ZAPP: #miomiogate, der Rundfunkbeitrag, der ORF +</a> +</h2> +<div class="teasertext"> +<div class="subline date">21.02.2018 23:20 Uhr</div> +<div class="subline show">ZAPP</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/schreiber298_v-zweispaltig.jpg" data-alt="Zapp vom 14.02.2018 mit Moderator Constantin Schreiber. " data-title="Zapp vom 14.02.2018 mit Moderator Constantin Schreiber." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/schreiber298_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Zapp vom 14.02.2018 mit Moderator Constantin Schreiber. " title="Zapp vom 14.02.2018 mit Moderator Constantin Schreiber." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>28:37</div> +<div class="textpadding left"><span class="icon "></span>ZAPP</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/zapp/ZAPP-Das-Medienmagazin,zapp11162.html" title="Zum Video: ZAPP - Das Medienmagazin" > +ZAPP - Das Medienmagazin +</a> +</h2> +<div class="teasertext"> +<div class="subline date">14.02.2018 23:20 Uhr</div> +<div class="subline show">ZAPP</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/reschke492_v-zweispaltig.jpg" data-alt="Anja Reschke moderiert ZAPP. " data-title="Anja Reschke moderiert ZAPP." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/reschke492_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Anja Reschke moderiert ZAPP. " title="Anja Reschke moderiert ZAPP." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:07</div> +<div class="textpadding left"><span class="icon "></span>ZAPP</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/zapp/ZAPP-Das-Medienmagazin,zapp11138.html" title="Zum Video: ZAPP - Das Medienmagazin" > +ZAPP - Das Medienmagazin +</a> +</h2> +<div class="teasertext"> +<div class="subline date">07.02.2018 23:20 Uhr</div> +<div class="subline show">ZAPP</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/reschke488_v-zweispaltig.jpg" data-alt="Anja Reschke. " data-title="Anja Reschke." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/reschke488_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Anja Reschke. " title="Anja Reschke." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>26:55</div> +<div class="textpadding left"><span class="icon "></span>ZAPP</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/zapp/ZAPP-Das-Medienmagazin,zapp11126.html" title="Zum Video: ZAPP - Das Medienmagazin" > +ZAPP - Das Medienmagazin +</a> +</h2> +<div class="teasertext"> +<div class="subline date">31.01.2018 23:15 Uhr</div> +<div class="subline show">ZAPP</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/schreiber294_v-zweispaltig.jpg" data-alt="Constantin Schreiber. " data-title="Constantin Schreiber." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/schreiber294_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Constantin Schreiber. " title="Constantin Schreiber." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:16</div> +<div class="textpadding left"><span class="icon "></span>ZAPP</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/zapp/ZAPP-Das-Medienmagazin,zapp11114.html" title="Zum Video: ZAPP: Das Medienmagazin" > +ZAPP: Das Medienmagazin +</a> +</h2> +<div class="teasertext"> +<div class="subline date">24.01.2018 23:15 Uhr</div> +<div class="subline show">ZAPP</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/reschke480_v-zweispaltig.jpg" data-alt="Anja Reschke moderiert ZAPP. " data-title="Anja Reschke moderiert ZAPP." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/reschke480_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Anja Reschke moderiert ZAPP. " title="Anja Reschke moderiert ZAPP." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>30:16</div> +<div class="textpadding left"><span class="icon "></span>ZAPP</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/zapp/ZAPP-Shitstorm-nach-Kika-Doku-NetzDG-im-Test,zapp11092.html" title="Zum Video: ZAPP: Shitstorm nach Kika-Doku, NetzDG im Test" > +ZAPP: Shitstorm nach Kika-Doku, NetzDG im Test +</a> +</h2> +<div class="teasertext"> +<div class="subline date">17.01.2018 23:20 Uhr</div> +<div class="subline show">ZAPP</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/zapp11074_v-zweispaltig.jpg" data-alt="Constantin Schreiber. " data-title="Constantin Schreiber." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/zapp11074_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Constantin Schreiber. " title="Constantin Schreiber." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:51</div> +<div class="textpadding left"><span class="icon "></span>ZAPP</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/zapp/medienpolitik/ZAPP-Angriff-auf-oeffentlichen-Rundfunk,zappneu100.html" title="Zum Video: ZAPP: Angriff auf den öffentlichen Rundfunk" > +ZAPP: Angriff auf den öffentlichen Rundfunk +</a> +</h2> +<div class="teasertext"> +<div class="subline date">10.01.2018 23:15 Uhr</div> +<div class="subline show">ZAPP</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/reschke472_v-zweispaltig.jpg" data-alt="Anja Reschke moderiert Zapp. " data-title="Anja Reschke moderiert Zapp." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/reschke472_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Anja Reschke moderiert Zapp. " title="Anja Reschke moderiert Zapp." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:05</div> +<div class="textpadding left"><span class="icon "></span>ZAPP</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/zapp/ZAPP-Das-Medienmagazin,zapp11068.html" title="Zum Video: ZAPP: Auto-Journalisten, Hintergrundgespräche" > +ZAPP: Auto-Journalisten, Hintergrundgespräche +</a> +</h2> +<div class="teasertext"> +<div class="subline date">13.12.2017 23:20 Uhr</div> +<div class="subline show">ZAPP</div> +</div> +</div> +</div> +</div> +</div></section> +</div> +</div> +</div> +<div class="relatedmedia"> +<div class="container w100"> +<div class="modulepadding"> +<section class="w100 relatedmedia_slider group sliderelement similar_program" data-slider='{"elementSelectionType" : "class", "elementClass" : "mediathekslider", "theme" :"ndrslider3-light-theme", "leftMargin" : 30, "rightMargin" : 30, "endless" : false, "viewXS" : 2}'> +<h1><span>Das könnte Sie auch interessieren</span></h1> +<div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/stichler536_v-zweispaltig.jpg" data-alt="Susanne Stichler " data-title="Susanne Stichler" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/stichler536_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Susanne Stichler " title="Susanne Stichler" class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:24</div> +<div class="textpadding left"><span class="icon "></span>Panorama 3</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/panorama3/Panorama-3,panoramadrei2764.html" title="Zum Video: Panorama 3" > +Panorama 3 +</a> +</h2> +<div class="teasertext"> +<div class="subline date">20.03.2018 21:15 Uhr</div> +<div class="subline show">Panorama 3</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot494368_v-zweispaltig.jpg" data-alt="Christian Ehring. " data-title="Christian Ehring." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot494368_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Christian Ehring. " title="Christian Ehring." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:45</div> +<div class="textpadding left"><span class="icon "></span>extra 3</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/extra_3/Extra-3-vom-14032018,extra14270.html" title="Zum Video: Extra 3 vom 14.03.2018" > +Extra 3 vom 14.03.2018 +</a> +</h2> +<div class="teasertext"> +<div class="subline date">14.03.2018 22:50 Uhr</div> +<div class="subline show">extra 3</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot491260_v-zweispaltig.jpg" data-alt="Szene aus "Panorama - die Reporter": Reporterin Birgit Wärnke zu Besuch in ihrer alten Heimat in Brandenburg. " data-title="Szene aus "Panorama - die Reporter": Reporterin Birgit Wärnke zu Besuch in ihrer alten Heimat in Brandenburg." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot491260_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Szene aus "Panorama - die Reporter": Reporterin Birgit Wärnke zu Besuch in ihrer alten Heimat in Brandenburg. " title="Szene aus "Panorama - die Reporter": Reporterin Birgit Wärnke zu Besuch in ihrer alten Heimat in Brandenburg." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>30:00</div> +<div class="textpadding left"><span class="icon "></span>Panorama - die Reporter</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/panorama_die_reporter/Zurueck-im-Osten-Was-ist-in-meiner-Heimat-los,panorama8288.html" title="Zum Video: Zurück im Osten: Was ist in meiner Heimat los?" > +Zurück im Osten: Was ist in meiner Heimat los? +</a> +</h2> +<div class="teasertext"> +<div class="subline date">06.03.2018 21:15 Uhr</div> +<div class="subline show">Panorama - die Reporter</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot496060_v-zweispaltig.jpg" data-alt="Kulturjournal-Moderatorin Julia Westlake " data-title="Kulturjournal-Moderatorin Julia Westlake" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot496060_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Kulturjournal-Moderatorin Julia Westlake " title="Kulturjournal-Moderatorin Julia Westlake" class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>25:57</div> +<div class="textpadding left"><span class="icon "></span>Kulturjournal</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/kulturjournal/Kulturjournal-vom-19032018,kulturjournal6008.html" title="Zum Video: Kulturjournal vom 19.03.2018" > +Kulturjournal vom 19.03.2018 +</a> +</h2> +<div class="teasertext"> +<div class="subline date">19.03.2018 22:45 Uhr</div> +<div class="subline show">Kulturjournal</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot494114_v-zweispaltig.jpg" data-alt="Julia-Niharika Sen " data-title="Julia-Niharika Sen" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot494114_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Julia-Niharika Sen " title="Julia-Niharika Sen" class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:24</div> +<div class="textpadding left"><span class="icon "></span>Weltbilder</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/weltbilder/Weltbilder-die-ganze-Sendung,weltbilder6756.html" title="Zum Video: Weltbilder - die ganze Sendung" > +Weltbilder - die ganze Sendung +</a> +</h2> +<div class="teasertext"> +<div class="subline date">13.03.2018 23:30 Uhr</div> +<div class="subline show">Weltbilder</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot494102_v-zweispaltig.jpg" data-alt="Panorama 3-Moderatorin Susanne Stichler " data-title="Panorama 3-Moderatorin Susanne Stichler" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot494102_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Panorama 3-Moderatorin Susanne Stichler " title="Panorama 3-Moderatorin Susanne Stichler" class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:50</div> +<div class="textpadding left"><span class="icon "></span>Panorama 3</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/panorama3/Panorama-3,panoramadrei2756.html" title="Zum Video: Panorama 3" > +Panorama 3 +</a> +</h2> +<div class="teasertext"> +<div class="subline date">13.03.2018 21:15 Uhr</div> +<div class="subline show">Panorama 3</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/extrasendung100_v-zweispaltig.jpg" data-alt="Extra 3 vom 07.03.2018 " data-title="Extra 3 vom 07.03.2018" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/extrasendung100_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Extra 3 vom 07.03.2018 " title="Extra 3 vom 07.03.2018" class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:30</div> +<div class="textpadding left"><span class="icon "></span>extra 3</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/extra_3/Extra-3-vom-07032018,extra14234.html" title="Zum Video: Extra 3 vom 07.03.2018" > +Extra 3 vom 07.03.2018 +</a> +</h2> +<div class="teasertext"> +<div class="subline date">07.03.2018 22:50 Uhr</div> +<div class="subline show">extra 3</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/bakterien194_v-zweispaltig.jpg" data-alt="Jemand hält eine Platte mit Bakterien drauf. " data-title="Jemand hält eine Platte mit Bakterien drauf." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/bakterien194_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Jemand hält eine Platte mit Bakterien drauf. " title="Jemand hält eine Platte mit Bakterien drauf." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>29:56</div> +<div class="textpadding left"><span class="icon "></span>Panorama - die Reporter</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/panorama_die_reporter/Auf-der-Spur-der-Superkeime,panorama8258.html" title="Zum Video: Auf der Spur der Superkeime" > +Auf der Spur der Superkeime +</a> +</h2> +<div class="teasertext"> +<div class="subline date">06.02.2018 21:15 Uhr</div> +<div class="subline show">Panorama - die Reporter</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/screenshot491886_v-zweispaltig.jpg" data-alt="Moderatorin Julia-Niharika Sen im Studio. " data-title="Moderatorin Julia-Niharika Sen im Studio." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/screenshot491886_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Moderatorin Julia-Niharika Sen im Studio. " title="Moderatorin Julia-Niharika Sen im Studio." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>30:01</div> +<div class="textpadding left"><span class="icon "></span>Weltbilder</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/weltbilder/Weltbilder-die-ganze-Sendung,weltbilder6742.html" title="Zum Video: Weltbilder - die ganze Sendung" > +Weltbilder - die ganze Sendung +</a> +</h2> +<div class="teasertext"> +<div class="subline date">06.03.2018 23:30 Uhr</div> +<div class="subline show">Weltbilder</div> +</div> +</div> +</div> +</div> +</div><div class="module w100 mediathekslider"> +<div class="modulepadding"> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/westlake660_v-zweispaltig.jpg" data-alt="Julia Westlake. © NDR/Kulturjournal " data-title="Julia Westlake." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/westlake660_v-zweispaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Julia Westlake. © NDR/Kulturjournal " title="Julia Westlake." class="img resize" /> +</noscript> +</div> +<div class="overlay"><span class="icon icon_video"></span></div> +<div class="textpadding"><span class="icon "></span>27:12</div> +<div class="textpadding left"><span class="icon "></span>Kulturjournal</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/fernsehen/sendungen/kulturjournal/Kulturjournal-vom-05032018,kulturjournal5978.html" title="Zum Video: Kulturjournal vom 05.03.2018" > +Kulturjournal vom 05.03.2018 +</a> +</h2> +<div class="teasertext"> +<div class="subline date">05.03.2018 22:45 Uhr</div> +<div class="subline show">Kulturjournal</div> +</div> +</div> +</div> +</div> +</div></section> +</div> +</div> +</div><!-- googleoff: index --> +<div id="footer"> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Der NDR</h2> +<ul> +<li><a href="/der_ndr/index.html" title="Zum Artikel: Unternehmen" >Unternehmen</a></li> +<li><a href="/der_ndr/presse/index.html" title="Zum Artikel: Presse" >Presse</a></li> +<li><a href="/der_ndr/daten_und_fakten/index.html" title="Zum Artikel: Zahlen, Daten, Fakten" >Zahlen, Daten, Fakten</a></li> +<li><a href="http://www.rundfunkbeitrag.de" title="Link: Alle Informationen zu den Rundfunkgebühren ab 1. Januar 2013" target="_blank">Rundfunkbeitrag</a></li> +<li><a href="/der_ndr/karriere/index.html" title="Zum Artikel: Karriere" >Karriere</a></li> +<li><a href="/der_ndr/standorte_und_adressen/index.html" title="Zum Artikel: Standorte & Adressen" >Standorte & Adressen</a></li> +<li><a href="/der_ndr/technik/index.html" title="Zum Artikel: Technik" >Technik</a></li> +<li><a href="/der_ndr/unternehmen/geschichte/index.html" title="Zum Artikel: NDR Chronik" >NDR Chronik</a></li> +<li><a href="/der_ndr/unternehmen/rundfunkrat/index.html" title="Zum Artikel: NDR Rundfunkrat" >NDR Rundfunkrat</a></li> +<li><a href="/der_ndr/unternehmen/verwaltungsrat/index.html" title="Zum Artikel: NDR Verwaltungsrat" >NDR Verwaltungsrat</a></li> +</ul> +</div> +</div> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Service</h2> +<ul> +<li><a href="/nachrichten/wetter/index.html" title="Zum Artikel: Wetter" >Wetter</a></li> +<li><a href="/nachrichten/verkehr/index.html" title="Zum Artikel: Verkehr" >Verkehr</a></li> +<li><a href="/ratgeber/kochen/index.html" title="Zum Artikel: Rezepte" >Rezepte</a></li> +<li><a href="/fernsehen/videotext/index.html" title="Zum Artikel: NDR Text" >NDR Text</a></li> +<li><a href="/fernsehen/service/Barrierefreie-Angebote-im-NDR,barrierefrei141.html" title="Zum Artikel: Barrierefreiheit" >Barrierefreiheit</a></li> +<li><a href="/fernsehen/service/leichte_sprache/index.html" title="Zum Artikel: Leichte Sprache im NDR" >Leichte Sprache im NDR</a></li> +<li><a href="http://www.ndrticketshop.de/" title="Link: Externer Link zum NDR Ticketshop" target="_blank">Tickets</a></li> +<li><a href="https://www.ndrshop.de/willkommen" title="Link: Link zum NDR Shop" target="_blank">Shop</a></li> +<li><a href="/service/technische_hilfe/index.html" title="Zum Artikel: Hilfe" >Hilfe</a></li> +<li><a href="/korrekturuebersicht100.html" title="Zum Artikel: Korrekturen" >Korrekturen</a></li> +</ul> +</div> +</div> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Themen</h2> +<ul> +<li><a href="/nachrichten/bundestagswahl_2017/index.html" title="Zum Artikel: Bundestagswahl" >Bundestagswahl</a></li> +<li><a href="/nachrichten/niedersachsen/landtagswahl_2017/index.html" title="Zum Artikel: Niedersachsen-Wahl" >Niedersachsen-Wahl</a></li> +<li><a href="/kultur/elbphilharmonie/index.html" title="Zum Artikel: Elbphilharmonie" >Elbphilharmonie</a></li> +<li><a href="/nachrichten/fluechtlinge/Fluechtlinge-in-Norddeutschland,fluechtlinge603.html" title="Zum Artikel: Flüchtlinge im Norden" >Flüchtlinge im Norden</a></li> +<li><a href="/nachrichten/kreuzfahrtschiffe127.html" title="Zum Artikel: Kreuzschifffahrt im Norden" >Kreuzschifffahrt im Norden</a></li> +<li><a href="/Storytelling-bei-NDRde,storytelling128.html" title="Zum Artikel: Visual Storytelling" >Visual Storytelling</a></li> +<li><a href="/nachrichten/netzwelt/index.html" title="Zum Artikel: Netzwelt" >Netzwelt</a></li> +<li><a href="/nachrichten/netzwelt/NDR-twitter-facebook-googleplus-youtube,ndrsozialenetzwerke101.html" title="Zum Artikel: Social Media" >Social Media</a></li> +<li><a href="/kultur/geschichte/index.html" title="Zum Artikel: Geschichte" >Geschichte</a></li> +<li><a href="/kultur/norddeutsche_sprache/index.html" title="Zum Artikel: Plattdeutsch" >Plattdeutsch</a></li> +<li><a href="/hand_in_hand_fuer_norddeutschland/index.html" title="Zum Artikel: Hand in Hand" >Hand in Hand</a></li> +<li><a href="/home/thema108.html" title="Zum Artikel: Themen A-Z" >Themen A-Z</a></li> +</ul> +</div> +</div><div class="module footerblock w25"> +<div class="modulepadding"> +<h2>NDR Fernsehen</h2> +<ul> +<li><a href="/fernsehen/sendungen/index.html" title="Zum Artikel: Sendungen A-Z" >Sendungen A-Z</a></li> +<li><a href="/fernsehen/programm/index.html" title="Zum Artikel: Programm" >Programm</a></li> +<li><a href="/fernsehen/livestream/index.html" title="Zum Video-Livestream: Livestream" >Livestream</a></li> +<li><a href="http://www.ndr-mitschnittservice.de/" title="Link: Link zum NDR Mitschnittservice mit einer Übersicht der Preise" target="_blank">Mitschnitte</a></li> +<li><a href="/nachrichten/investigation/Ressort-Investigation-im-NDR,investigation102.html" title="Zum Artikel: Ressort Investigation" >Ressort Investigation</a></li> +<li><a href="/fernsehen/50_jahre/index.html" title="Zum Artikel: 50 Jahre NDR Fernsehen" >50 Jahre NDR Fernsehen</a></li> +</ul> +</div> +</div><div class="module footerblock metanav"> +<div class="modulepadding"> +<ul> +<li><a href="/service/impressum/index.html" title="Impressum">Impressum</a></li> +<li><a href="/service/kontakt/index.html" title="Kontakt">Kontakt</a></li> +<li><a href="/service/datenschutz/index.html" title="Datenschutzerklärung">Datenschutz</a></li> +<li><a href="http://www.ard.de" title="ARD.de">ARD.de</a></li> +<li><a href="#" class="showcopyrights">Bildrechte</a></li> +<li id="copy">© Norddeutscher Rundfunk</li> +</ul> +</div> +<!-- Begin Sitestat4 code --> +<script type='text/javascript'> +<!-- +var ZPIX="https://de.sitestat.com/ndr/ndr/s?fernsehen.sendungen.zapp.zapp11204&cid=zapp11204&pdt=20180313T1620&pti=Giegold_Mehr_europaeische_Kontroversen_zeigen&otp=video&bra=daserste&sid=51&src=-&ctp="; +function sitestat(ns_l){ns_l+='&ns__t='+(new Date()).getTime();ns_pixelUrl=ns_l; ns_0=document.referrer; ns_0=(ns_0.lastIndexOf('/')==ns_0.length-1)?ns_0.substring(ns_0.lastIndexOf('/'),0):ns_0; if(ns_0.length>0)ns_l+='&ns_referrer='+escape(ns_0); +if(document.images){ns_1=new Image();ns_1.src=ns_l;}else +document.write('<img src="'+ns_l+'" width="1" height="1" alt="" />');} +sitestat("https://de.sitestat.com/ndr/ndr/s?fernsehen.sendungen.zapp.zapp11204&cid=zapp11204&pdt=20180313T1620&pti=Giegold_Mehr_europaeische_Kontroversen_zeigen&otp=video&bra=daserste&sid=51&src=-&ctp=-"); +//--> +</script> +<noscript> +<p class="invisible"><img src="https://de.sitestat.com/ndr/ndr/s?fernsehen.sendungen.zapp.zapp11204&cid=zapp11204&pdt=20180313T1620&pti=Giegold_Mehr_europaeische_Kontroversen_zeigen&otp=video&bra=daserste&sid=51&src=-&ctp=-" width="1" height="1" alt="" /></p> +</noscript> +<!-- End Sitestat4 code --> +<!-- IVW SZMnG Tag --> +<script type="text/javascript"> +$(document).ready(function() { +window.setTimeout("getivw()", 1); +}); +</script> +</div> +</div> +</div> +<!-- googleon: index --> +</body> +</html> \ No newline at end of file diff --git a/src/test/resources/ndr/ndr_film_detail4.html b/src/test/resources/ndr/ndr_film_detail4.html new file mode 100644 index 0000000000000000000000000000000000000000..d86e13523dbb7598605ae6d352ed365f4fd36c55 --- /dev/null +++ b/src/test/resources/ndr/ndr_film_detail4.html @@ -0,0 +1,620 @@ +<!DOCTYPE html> +<html lang="de" xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" prefix="og: http://ogp.me/ns#"> +<!-- base_head --> +<head> + +<title>Sturm der Liebe | NDR.de - Fernsehen</title> +<meta charset="utf-8"> +<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<meta name="title" content="Sturm der Liebe " /> +<meta property="og:title" content="Sturm der Liebe "/> +<meta name="description" content="Werner setzt Christoph mit seinem Wissen unter Druck. In die Enge getrieben, verliert Christoph daraufhin die Beherrschung und es kommt zu einer lebensbedrohlichen Situation." /> +<meta property="og:description" content="Werner setzt Christoph mit seinem Wissen unter Druck. In die Enge getrieben, verliert Christoph daraufhin die Beherrschung und es kommt zu einer lebensbedrohlichen Situation." /> +<meta property="og:image" content="https://www.ndr.de/fernsehen/sturmderliebe100_v-contentxl.jpg" /> +<link rel="canonical" href="/fernsehen/Sturm-der-Liebe,sendung756612.html" /> +<meta name="twitter:card" content="summary_large_image"> +<meta name="twitter:creator" content="@ndr"> +<meta name="twitter:site" content="@ndr"> +<meta name="twitter:domain" content="https://www.ndr.de/fernsehen/Sturm-der-Liebe,sendung756612.html"/> +<meta name="twitter:title" content="Sturm der Liebe "/> +<meta name="twitter:description" content="Werner setzt Christoph mit seinem Wissen unter Druck. In die Enge getrieben, verliert Christoph daraufhin die Beherrschung und es kommt zu einer lebensbedrohlichen Situation."/> +<meta name="twitter:image:src" content="https://www.ndr.de/fernsehen/sturmderliebe100_v-contentxl.jpg" /> +<meta name="keywords" lang="de" content="NDR,Norddeutscher Rundfunk,Norddeutschland,Radio,Fernsehen,TV" /> +<meta name="author" content="NDR" /> +<meta name="generator" content="orig5" /> +<meta name="robots" content="index, follow, noarchive" /> +<meta name="language" content="de" /> +<link rel="icon" href="/favicon.ico" type="image/x-icon" /> +<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> +<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png"> +<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png"> +<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png"> +<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png"> +<link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png"> +<link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png"> +<link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png"> +<link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png"> +<link rel="icon" type="image/png" href="/favicon-196x196.png" sizes="196x196"> +<link rel="icon" type="image/png" href="/favicon-160x160.png" sizes="160x160"> +<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"> +<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"> +<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"> +<meta name="msapplication-TileColor" content="#0c1754"> +<meta name="msapplication-TileImage" content="/mstile-144x144.png"> +<link type="text/css" rel="stylesheet" href="/resources/css/generated/ndrmerged.css" media="all" /> +<!--[if lte IE 8]> +<link type="text/css" rel="stylesheet" href="/resources/css/ie.css" media="all" /> +<![endif]--> +<!--[if IE 9 ]> +<link type="text/css" rel="stylesheet" href="/resources/css/ie9.css" media="all" /> +<![endif]--> +<link type="text/css" rel="stylesheet" href="/resources/css/generated/print.css" media="print" /> +<script type="text/javascript" src="/common/resources/lib/ndrde_base.js"></script> +<script type="text/javascript" src="/resources/js/scripts.js"></script> +<!--[if lt IE 9]> +<script> +document.createElement('header'); +document.createElement('nav'); +document.createElement('section'); +document.createElement('article'); +document.createElement('aside'); +document.createElement('footer'); +document.createElement('hgroup'); +</script> +<![endif]--> +</head> +<body class="branding ndrtv" > +<a href="#content" title="Skip to content" class="skiplink">Direkt zum Inhalt</a> +<div id="page"> +<header id="pageheader" role="navigation"> +<div class="mainnav"> +<a id="dachmarkenlogo" href="/index.html" > +<span class="invisible srlabel">zur NDR Homepage</span> +<svg width="100%" height="100%" viewBox="0 -0.096 64 40"> +<path fill="#ffffff" d="M8.923,32.342L3.524,22.62v9.723H0V15.671h3.699l5.624,10.373V15.671h3.524v16.671H8.923z M12.847,15.671V0 +h1.975v15.671H12.847z M12.847,39.465v-7.123h1.975v7.123H12.847z M20.72,15.671c4.124,0,6.249,1.975,6.249,5.798v5.024 +c0,3.924-2.049,5.849-6.249,5.849h-5.898V15.671H20.72z M20.395,29.193c2,0,2.974-1,2.974-3.049v-4.299c0-2.024-1-3.024-2.974-3.024 +h-1.774v10.372H20.395z M37.341,32.342l-2.974-6.398h-2v6.398h-3.699V15.671h5.824c4.099,0,6.048,1.625,6.048,5.099 +c0,2.299-0.85,3.674-2.75,4.499l3.524,7.073H37.341z M34.642,22.919c1.475,0,2.349-0.85,2.349-2.274 +c0-1.475-0.649-2.024-2.349-2.024h-2.35v4.299H34.642z"/> +<path fill="#ffffff" d="M43.571,32.27v-2.647h2.038v2.647H43.571z"/> +<path fill="#ffffff" d="M53.002,32.268l-0.045-0.99c-0.273,0.275-0.652,0.542-1.138,0.801c-0.478,0.251-1.004,0.385-1.581,0.401 +c-0.842-0.016-1.501-0.316-1.979-0.902c-0.516-0.594-0.773-1.395-0.773-2.402V23.27c0.015-2.383,0.925-3.582,2.73-3.598 +c0.607,0.016,1.126,0.137,1.559,0.363c0.432,0.218,0.811,0.496,1.137,0.831v-5.108h1.943v16.51H53.002z M52.911,22.447 +c-0.198-0.203-0.476-0.41-0.833-0.621c-0.38-0.187-0.772-0.289-1.176-0.304c-1.014,0-1.504,0.671-1.473,2.014v5.244 +c0.015,1.218,0.499,1.834,1.45,1.85c0.403-0.016,0.803-0.137,1.199-0.363c0.358-0.21,0.636-0.41,0.833-0.597V22.447z"/> +<path fill="#ffffff" d="M64.171,28.972c-0.045,2.339-1.237,3.528-3.575,3.567c-2.467-0.07-3.693-1.344-3.677-3.82v-5.18 +c0.03-2.562,1.286-3.859,3.768-3.891c2.307,0.062,3.469,1.291,3.484,3.685v3.217h-5.285v2.398c-0.016,1.191,0.54,1.795,1.666,1.811 +c0.54,0.016,0.966-0.129,1.278-0.435c0.281-0.29,0.422-0.764,0.422-1.422v-0.459h1.918V28.972z M62.298,23.2 +c-0.015-1.243-0.582-1.873-1.7-1.888c-1.141,0.016-1.719,0.645-1.734,1.888v1.735h3.435V23.2z"/> +<image src="/resources/images/logos/NDR_logo.png" width="100%" height="100%" /> +</svg> +<span id="claim"> +<svg width="100%" height="100%" viewBox="18.923 35.779 69 8"> +<path d="M8.923,32.342L3.524,22.62v9.723H0V15.671h3.699l5.624,10.373V15.671h3.524v16.671H8.923z M12.847,15.671V0h1.975v15.671 +H12.847z M12.847,39.465v-7.123h1.975v7.123H12.847z M20.72,15.671c4.124,0,6.249,1.975,6.249,5.798v5.024 +c0,3.924-2.049,5.849-6.249,5.849h-5.898V15.671H20.72z M20.395,29.193c2,0,2.974-1,2.974-3.049v-4.299c0-2.024-1-3.024-2.974-3.024 +h-1.774v10.372H20.395z M37.341,32.342l-2.974-6.398h-2v6.398h-3.699V15.671h5.824c4.099,0,6.048,1.625,6.048,5.099 +c0,2.299-0.85,3.674-2.75,4.499l3.524,7.073H37.341z M34.642,22.919c1.475,0,2.349-0.85,2.349-2.274 +c0-1.475-0.649-2.024-2.349-2.024h-2.35v4.299H34.642z"/> +<path fill="#ffffff" d="M23.036,40.896c0.026,1.634-0.632,2.438-1.975,2.412h-1.394v-6.67H21c0.75,0,1.279,0.193,1.587,0.58 +c0.306,0.393,0.455,0.955,0.449,1.685V40.896z M22.197,38.663c-0.006-0.869-0.391-1.306-1.154-1.312h-0.546v5.245h0.565 +c0.77-0.023,1.148-0.529,1.135-1.518V38.663z"/> +<path fill="#ffffff" d="M26.229,43.309l-0.019-0.426c-0.334,0.323-0.689,0.484-1.064,0.484c-0.388-0.006-0.693-0.125-0.914-0.357 +c-0.218-0.228-0.327-0.536-0.327-0.924v-0.279c0.019-1.03,0.771-1.6,2.258-1.711v-0.674c0.006-0.479-0.207-0.715-0.641-0.709 +c-0.468-0.006-0.699,0.248-0.693,0.764c0,0.02,0,0.075,0,0.167h-0.78v-0.166c0.009-0.952,0.51-1.432,1.502-1.438 +c0.948,0.006,1.422,0.459,1.422,1.357v3.912H26.229z M26.163,40.701c-0.971,0.098-1.453,0.462-1.447,1.092v0.21 +c0,0.447,0.21,0.674,0.631,0.681c0.266,0,0.538-0.144,0.816-0.431V40.701z"/> +<path fill="#ffffff" d="M30.761,42.134c-0.006,0.398-0.142,0.71-0.406,0.937c-0.277,0.224-0.649,0.34-1.119,0.35 +c-1.02-0.016-1.539-0.479-1.558-1.386v-0.292h0.81v0.245c0,0.526,0.255,0.786,0.767,0.779c0.451-0.007,0.68-0.217,0.686-0.631 +c-0.006-0.026-0.009-0.052-0.009-0.078c-0.025-0.248-0.145-0.458-0.359-0.631c-0.211-0.167-0.455-0.336-0.732-0.509 +c-0.271-0.176-0.51-0.386-0.718-0.631c-0.211-0.248-0.32-0.563-0.326-0.944v-0.098c0.013-0.783,0.496-1.181,1.449-1.194 +c0.916,0.013,1.382,0.439,1.401,1.278v0.258h-0.781c0-0.114,0-0.185,0-0.211c-0.006-0.441-0.23-0.662-0.672-0.662 +c-0.224,0-0.385,0.054-0.483,0.162c-0.092,0.108-0.137,0.232-0.137,0.373c0,0.02,0.003,0.042,0.009,0.069 +c0.016,0.114,0.058,0.221,0.127,0.318c0.072,0.102,0.159,0.2,0.26,0.294c0.11,0.085,0.227,0.168,0.35,0.25 +c0.129,0.088,0.258,0.178,0.388,0.27c0.277,0.176,0.523,0.384,0.737,0.623c0.101,0.121,0.181,0.258,0.241,0.412 +c0.05,0.154,0.076,0.332,0.076,0.534V42.134z"/> +<path fill="#ffffff" d="M36.561,41.84c-0.013,0.965-0.577,1.455-1.692,1.468h-1.607v-6.67h1.499 +c1.097-0.006,1.639,0.447,1.626,1.362v0.62c0.006,0.585-0.292,0.952-0.897,1.098c0.708,0.091,1.065,0.521,1.071,1.289V41.84z +M35.546,38.152c0.013-0.551-0.297-0.818-0.929-0.802H34.1v2.081h0.621c0.557,0,0.832-0.305,0.825-0.915V38.152z M35.712,41.105 +c0-0.34-0.068-0.587-0.204-0.741c-0.142-0.154-0.386-0.23-0.73-0.23H34.1v2.462h0.64c0.648-0.006,0.972-0.338,0.972-0.996V41.105z" +/> +<path fill="#ffffff" d="M40.356,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34h-2.202v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M39.576,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M44.139,42.134c-0.006,0.398-0.142,0.71-0.406,0.937c-0.277,0.224-0.649,0.34-1.119,0.35 +c-1.02-0.016-1.539-0.479-1.558-1.386v-0.292h0.81v0.245c0,0.526,0.255,0.786,0.767,0.779c0.451-0.007,0.68-0.217,0.686-0.631 +c-0.006-0.026-0.009-0.052-0.009-0.078c-0.025-0.248-0.145-0.458-0.359-0.631c-0.211-0.167-0.455-0.336-0.732-0.509 +c-0.271-0.176-0.51-0.386-0.718-0.631c-0.211-0.248-0.32-0.563-0.326-0.944v-0.098c0.013-0.783,0.496-1.181,1.449-1.194 +c0.916,0.013,1.382,0.439,1.401,1.278v0.258h-0.781c0-0.114,0-0.185,0-0.211c-0.006-0.441-0.23-0.662-0.672-0.662 +c-0.224,0-0.385,0.054-0.483,0.162c-0.092,0.108-0.137,0.232-0.137,0.373c0,0.02,0.003,0.042,0.009,0.069 +c0.016,0.114,0.058,0.221,0.127,0.318c0.072,0.102,0.159,0.2,0.26,0.294c0.11,0.085,0.227,0.168,0.35,0.25 +c0.129,0.088,0.258,0.178,0.388,0.27c0.277,0.176,0.523,0.384,0.737,0.623c0.101,0.121,0.181,0.258,0.241,0.412 +c0.05,0.154,0.076,0.332,0.076,0.534V42.134z"/> +<path fill="#ffffff" d="M47.02,43.289c-0.265,0.052-0.487,0.078-0.667,0.078c-0.792,0.006-1.182-0.417-1.169-1.272V38.82h-0.67 +v-0.673h0.68v-1.464l0.81-0.143v1.606h0.951v0.673h-0.951v3.309c-0.006,0.382,0.166,0.57,0.516,0.564 +c0.135,0,0.293-0.023,0.473-0.069L47.02,43.289z"/> +<path fill="#ffffff" d="M50.614,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34h-2.202v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M49.833,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M55.468,43.309l-0.019-0.426c-0.334,0.323-0.689,0.484-1.064,0.484c-0.388-0.006-0.693-0.125-0.914-0.357 +c-0.218-0.228-0.327-0.536-0.327-0.924v-0.279c0.019-1.03,0.771-1.6,2.258-1.711v-0.674c0.006-0.479-0.207-0.715-0.641-0.709 +c-0.468-0.006-0.699,0.248-0.693,0.764c0,0.02,0,0.075,0,0.167h-0.78v-0.166c0.009-0.952,0.51-1.432,1.502-1.438 +c0.948,0.006,1.422,0.459,1.422,1.357v3.912H55.468z M55.402,40.701c-0.971,0.098-1.453,0.462-1.447,1.092v0.21 +c0,0.447,0.21,0.674,0.631,0.681c0.266,0,0.538-0.144,0.816-0.431V40.701z"/> +<path fill="#ffffff" d="M61.18,43.308v-3.76c0.006-0.459-0.155-0.685-0.485-0.679c-0.26,0.006-0.504,0.166-0.732,0.479v3.96h-0.81 +v-3.829c-0.006-0.407-0.18-0.61-0.521-0.61c-0.252,0-0.486,0.137-0.701,0.41v4.029h-0.814v-5.161h0.732l0.028,0.449 +c0.319-0.352,0.668-0.527,1.047-0.527c0.467-0.006,0.781,0.204,0.942,0.63c0.129-0.199,0.297-0.355,0.502-0.469 +c0.202-0.107,0.405-0.161,0.611-0.161c0.672,0,1.009,0.43,1.009,1.289v3.95H61.18z"/> +<path fill="#ffffff" d="M67.57,43.308l-1.433-3.85c-0.095-0.267-0.201-0.582-0.317-0.943c-0.124-0.368-0.189-0.562-0.195-0.582 +c0.013,0.146,0.029,0.646,0.049,1.5v3.875h-0.839v-6.67h1.091l1.248,3.332c0.098,0.248,0.202,0.538,0.312,0.87 +c0.11,0.362,0.168,0.549,0.175,0.562c-0.013-0.14-0.025-0.621-0.038-1.441v-3.322h0.839v6.67H67.57z"/> +<path fill="#ffffff" d="M72.568,41.859c-0.013,1.018-0.528,1.538-1.547,1.561c-1.035-0.029-1.552-0.55-1.552-1.562v-2.31 +c0-0.459,0.132-0.825,0.397-1.099c0.259-0.267,0.641-0.404,1.145-0.41c1.025,0.02,1.544,0.524,1.557,1.513V41.859z M71.759,39.571 +c0-0.247-0.065-0.44-0.195-0.58c-0.136-0.133-0.317-0.2-0.542-0.2c-0.222,0-0.398,0.067-0.528,0.2 +c-0.143,0.14-0.214,0.333-0.214,0.58v2.327c0.006,0.508,0.254,0.765,0.743,0.771c0.479,0,0.725-0.257,0.738-0.771V39.571z"/> +<path fill="#ffffff" d="M75.615,39.025c-0.381,0.026-0.668,0.125-0.861,0.298c-0.208,0.173-0.368,0.402-0.478,0.689v3.295h-0.807 +v-5.162h0.78v0.85c0.195-0.306,0.396-0.532,0.6-0.679c0.208-0.146,0.463-0.232,0.766-0.258V39.025z"/> +<path fill="#ffffff" d="M78.298,43.308l-0.019-0.413c-0.114,0.115-0.272,0.226-0.474,0.334c-0.199,0.104-0.418,0.161-0.659,0.167 +c-0.351-0.006-0.625-0.132-0.825-0.376C76.107,42.772,76,42.439,76,42.019v-2.461c0.006-0.993,0.385-1.493,1.137-1.499 +c0.253,0.006,0.469,0.057,0.649,0.151c0.18,0.091,0.338,0.207,0.474,0.346v-2.128h0.81v6.879H78.298z M78.26,39.215 +c-0.083-0.084-0.198-0.17-0.347-0.258c-0.159-0.078-0.322-0.121-0.49-0.127c-0.422,0-0.627,0.28-0.614,0.839v2.186 +c0.006,0.507,0.208,0.764,0.604,0.771c0.168-0.006,0.334-0.057,0.5-0.151c0.149-0.087,0.265-0.17,0.347-0.249V39.215z"/> +<path fill="#ffffff" d="M82.992,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34H80.79v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M82.211,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M86.021,43.308v-3.829c0.006-0.433-0.161-0.646-0.501-0.64c-0.183,0.006-0.349,0.062-0.497,0.166 +c-0.148,0.107-0.262,0.208-0.341,0.303v4h-0.814v-5.161h0.752l0.028,0.483c0.117-0.133,0.27-0.26,0.459-0.381 +c0.18-0.121,0.387-0.184,0.621-0.19c0.729-0.006,1.097,0.407,1.103,1.24v4.009H86.021z"/> +<image src="/resources/images/logos/NDR_claim.png" width="100%" height="100%" /> +</svg> +</span> +</a> +<!-- googleoff: index --> +<nav> +<ul id="navigation" role="navigation" > +<li > +<a href="/nachrichten/index.html" class="mn_item_1">Nachrichten</a> +<ul class="subnav subnav_item_1"> +<li><a href="/nachrichten/niedersachsen/index.html">Niedersachsen</a></li> +<li><a href="/nachrichten/schleswig-holstein/index.html">Schleswig-Holstein</a></li> +<li><a href="/nachrichten/mecklenburg-vorpommern/index.html">Mecklenburg-Vorpommern</a></li> +<li><a href="/nachrichten/hamburg/index.html">Hamburg</a></li> +<li><a href="/nachrichten/wetter/index.html">Wetter</a></li> +<li><a href="/nachrichten/verkehr/index.html">Verkehr</a></li> +</ul> +</li> +<li > +<a href="/sport/index.html" class="mn_item_2">Sport</a> +<ul class="subnav subnav_item_2"> +<li><a href="/sport/fussball/index.html">Fußball</a></li> +<li><a href="/sport/handball/index.html">Handball</a></li> +<li><a href="/sport/mehr_sport/index.html">Mehr Sport</a></li> +<li><a href="/sport/ergebnisse/index.html">Ergebnisse</a></li> +<li><a href="/sport/live/index.html">Live</a></li> +</ul> +</li> +<li > +<a href="/ratgeber/index.html" class="mn_item_3">Ratgeber</a> +<ul class="subnav subnav_item_3"> +<li><a href="/ratgeber/kochen/index.html">Kochen</a></li> +<li><a href="/ratgeber/reise/index.html">Reise</a></li> +<li><a href="/ratgeber/garten/index.html">Garten</a></li> +<li><a href="/ratgeber/gesundheit/index.html">Gesundheit</a></li> +<li><a href="/ratgeber/verbraucher/index.html">Verbraucher</a></li> +</ul> +</li> +<li > +<a href="/kultur/index.html" class="mn_item_4">Kultur</a> +<ul class="subnav subnav_item_4"> +<li><a href="/kultur/musik/index.html">Musik</a></li> +<li><a href="/kultur/film/index.html">Film</a></li> +<li><a href="/kultur/buch/index.html">Buch</a></li> +<li><a href="/kultur/kunst/index.html">Kunst</a></li> +<li><a href="/kultur/geschichte/index.html">Geschichte</a></li> +</ul> +</li> +<li class="active"> +<a href="/fernsehen/index.html" class="mn_item_5 active">Fernsehen</a> +<ul class="subnav subnav_item_5"> +<li><a href="/fernsehen/livestream/index.html">Livestream</a></li> +<li><a href="/fernsehen/sendungen/index.html">Sendungen A-Z</a></li> +<li><a href="/fernsehen/programm/index.html">Programm</a></li> +<li><a href="/fernsehen/service/index.html">Service</a></li> +<li class="socialmedia-link facebook"><a href="https://www.facebook.com/ndrfernsehen" title="NDR Fernsehen bei Facebook" tabindex="0"><span class="icon icon_facebook"></span><span class="socialmedia-label">NDR Fernsehen bei Facebook</span></a></li> +</ul> +</li> +<li > +<a href="/radio/index.html" class="mn_item_6">Radio</a> +<ul class="subnav subnav_item_6"> +</ul> +</li> +<li > +<a href="/mediathek/index.html" class="mn_item_7">Mediathek</a> +<ul class="subnav subnav_item_7"> +<li><a href="/mediathek/sendung_verpasst/index.html">Sendung verpasst</a></li> +<li><a href="/mediathek/sendungen_a-z/index.html">Sendungen A-Z</a></li> +<li><a href="/mediathek/audio/index.html">Audio</a></li> +</ul> +</li><li id="menusearch"> +<a href="#" class="menusearch" title=""><span class="invisible srlabel">Suche einblenden</span></a> +<div class="quicksearch group"> +<form id="search" action="/suche10.html" method="get"> +<div class="form_element w66"> +<div class="modulepadding"> +<label for="searchword" class="invisible">Suchbegriffe:</label> +<input id="searchword" type="text" name="query" placeholder="Suchbegriff" /> +</div> +</div> +<div class="form_element w33" id="quicksearchsubmit"> +<div class="modulepadding"> +<button type="submit" class="button_sprite w100"><span>Suchen</span></button> +</div> +</div> +<div class="form_element w100"> +<div class="modulepadding"> +<label for="check_mediathek" class="smallelement"> +<input id="check_epg" type="checkbox" name="search_epg" value="1" checked="checked"> +<input id="sort_by_checkbox" type="hidden" name="sort_by" value="date"> +<span>nur im Fernsehprogramm suchen</span></label> +</div> +</div> +</form> +</div> +</li> +</ul> +</nav> +</div> +<div class="subnavbar"> +<!-- googleon: index --><div class="horizon"></div> +<div id="brandinglogo"> +<a title="Zur Startseite: NDR Fernsehen" href="/fernsehen"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="svgbrand logo_ndrtv" viewBox="0 0 160 153" > +<title>NDR Fernsehen</title> +<path class="dm" d="M116.767,75.961c0-4.22-2.272-5.324-6.101-5.324h-6.101v11.166h6.101 +C114.301,81.804,116.767,79.726,116.767,75.961L116.767,75.961z M127.998,106.274h-10.321l-7.726-16.617h-5.192v16.617h-9.608 +V62.979h15.125c9.478,0,15.709,3.115,15.709,13.5c0,5.26-2.077,9.477-7.139,11.424L127.998,106.274L127.998,106.274z"/> +<polygon style="fill:#09E5FF;" points="59.192,62.979 59.192,22.279 54.064,22.279 54.064,62.979 "/> +<path class="dm" d="M81.392,90.176V79.011c0-5.258-2.402-7.854-7.724-7.854H69.06v26.937h4.608 +C78.99,98.095,81.392,95.434,81.392,90.176L81.392,90.176z M90.74,91.085c0,10.97-5.714,15.189-16.228,15.189h-15.32V62.979h15.319 +c10.125,0,16.228,4.479,16.228,15.058L90.74,91.085L90.74,91.085z"/> +<polygon class="dm" points="54.064,106.274 54.064,62.979 44.912,62.979 44.912,89.916 30.307,62.979 20.7,62.979 +20.7,106.274 29.852,106.274 29.852,81.024 43.874,106.274 "/> +<polygon style="fill:#09E5FF;" points="59.192,124.773 59.192,106.274 54.064,106.274 54.064,124.773 "/> +<polygon style="fill:#09E5FF;" points="75.703,118.033 71.259,118.033 71.259,122.948 75.105,122.948 75.105,124.599 +71.259,124.599 71.259,131.74 69.236,131.74 69.236,116.381 75.703,116.381 "/> +<polygon style="fill:#09E5FF;" points="84.039,131.74 77.315,131.74 77.315,116.381 83.815,116.381 83.815,118.033 79.34,118.033 +79.34,122.948 83.276,122.948 83.276,124.599 79.34,124.599 79.34,130.088 84.039,130.088 "/> +<path style="fill:#09E5FF;" d="M94.244,131.74h-2.125l-2.811-6.961l-1.631,0.046v6.915h-2.025v-15.359h3.498 +c1.543,0,2.702,0.423,3.473,1.27c0.631,0.681,0.945,1.597,0.945,2.744c0,1.123-0.308,2.073-0.922,2.844 +c-0.352,0.451-0.836,0.811-1.45,1.079L94.244,131.74z M87.678,123.262h0.832c2.025,0,3.035-0.926,3.035-2.777 +c0-0.847-0.22-1.469-0.662-1.867c-0.428-0.39-1.159-0.585-2.192-0.585h-1.012L87.678,123.262L87.678,123.262z"/> +<path style="fill:#09E5FF;" d="M104.315,131.74h-2.767c-1.589-4.76-2.825-8.805-3.71-12.133c0.029,2.976,0.044,4.735,0.044,5.276 +v6.858h-1.979v-15.359h2.79l0.101,0.325c1.551,4.926,2.739,8.853,3.565,11.786l-0.013-0.755l-0.011-1.203 +c-0.015-1.836-0.023-3.295-0.023-4.374v-5.779h2.002L104.315,131.74L104.315,131.74z"/> +<path style="fill:#09E5FF;" d="M112.362,120.686v-0.505c0-0.675-0.101-1.193-0.304-1.551c-0.277-0.488-0.794-0.731-1.551-0.731 +c-0.637,0-1.117,0.176-1.44,0.528c-0.256,0.277-0.381,0.641-0.381,1.09c0,0.436,0.138,0.878,0.415,1.329 +c0.308,0.486,0.989,1.184,2.046,2.09c1.507,1.291,2.471,2.366,2.89,3.228c0.346,0.698,0.518,1.417,0.518,2.159 +c0,1.163-0.371,2.073-1.113,2.733c-0.704,0.629-1.673,0.945-2.901,0.945c-1.425,0-2.501-0.394-3.228-1.182 +c-0.593-0.652-0.889-1.532-0.889-2.641v-1.249h2.025v0.945c0,1.551,0.704,2.327,2.113,2.327c0.683,0,1.201-0.195,1.553-0.585 +c0.291-0.314,0.438-0.734,0.438-1.26c0-0.532-0.168-1.067-0.505-1.608c-0.346-0.539-1.05-1.262-2.115-2.169 +c-0.899-0.757-1.622-1.478-2.169-2.159c-0.675-0.84-1.012-1.815-1.012-2.924c0-1.065,0.338-1.901,1.012-2.509 +c0.652-0.576,1.574-0.866,2.765-0.866c1.32,0,2.306,0.365,2.957,1.092c0.585,0.643,0.878,1.562,0.878,2.754v0.719L112.362,120.686 +L112.362,120.686z"/> +<polygon style="fill:#09E5FF;" points="123.51,131.74 116.786,131.74 116.786,116.381 123.286,116.381 123.286,118.033 +118.811,118.033 118.811,122.948 122.747,122.948 122.747,124.599 118.811,124.599 118.811,130.088 123.51,130.088 "/> +<polygon style="fill:#09E5FF;" points="133.21,131.74 131.209,131.74 131.209,124.454 127.126,124.454 127.126,131.74 +125.124,131.74 125.124,116.381 127.126,116.381 127.126,122.847 131.209,122.847 131.209,116.381 133.21,116.381 "/> +<polygon style="fill:#09E5FF;" points="142.47,131.74 135.746,131.74 135.746,116.381 142.246,116.381 142.246,118.033 +137.769,118.033 137.769,122.948 141.705,122.948 141.705,124.599 137.769,124.599 137.769,130.088 142.47,130.088 "/> +<path style="fill:#09E5FF;" d="M152.495,131.74h-2.767c-1.589-4.76-2.827-8.805-3.712-12.133c0.031,2.976,0.046,4.735,0.046,5.276 +v6.858h-1.979v-15.359h2.788l0.101,0.325c1.553,4.926,2.742,8.853,3.565,11.786l-0.011-0.755l-0.013-1.203 +c-0.015-1.836-0.021-3.295-0.021-4.374v-5.779h2.002v15.358H152.495z"/> +</svg> +<!--[if lt IE 9]> +<img src="/resources/images/logos/ndr_brand_sprite_ndrtv.png" alt="NDR Fernsehen"/> +<![endif]--> +</a> +</div> +</div> +</header><div class="pagepadding"> +<article class="w66 "> +<div class="modulepadding copytext"> +<div itemscope itemtype="http://schema.org/Episode"> +<header> +<h1><span itemprop="headline">Sturm der Liebe</span> +(<span itemprop="episodeNumber">2883</span>)</h1> +<p> +<span itemprop="publication" itemscope itemtype="http://schema.org/BroadcastEvent"> +<span itemprop="startDate" content="2018-03-20T08:10:00.000+01:00"> +Dienstag, 20. März 2018, 08:10</span> bis +<span itemprop="endDate" content="2018-03-20T09:00:00.000+01:00"> +09:00 Uhr</span</span><span class="icon icon_subtitles" title="mit Untertiteln"></span> +<span class="icon icon_hd" title="HD"></span><br /></p> +</header> +<span itemprop="thumbnailUrl" content="https://www.ndr.de/fernsehen/sturmderliebe100_v-einspaltig.jpg"></span> +<!-- start ncc mediaplayer --> +<div class="projekktor_holder " itemscope itemtype="http://schema.org/VideoObject"> +<span itemprop="contentUrl" content="https://mediandr-a.akamaihd.net/progressive_geo/2018/0320/TV-20180320-0915-0400.hq.mp4" /> +<meta itemprop="embedURL" content="http://www.ndr.de/fernsehen/sturmderliebe1822-player.html" /> +<span itemprop="thumbnailUrl" content="http://www.ndr.de/fernsehen/screenshot496080_v-einspaltig.jpg"></span> +<span itemprop="duration" content="49:28" /> +<span itemprop="uploadDate" content="2018-03-20T10:45:09.446+01:00" /> +<img width="192" height="144" src="/fernsehen/screenshot496080_v-content.jpg" alt="Ein Mann schaut kalt und abschätzig nach unten " title="Ein Mann schaut kalt und abschätzig nach unten" width=0 height=0 style='display:none' /> +<iframe +id="pp_sturmderliebe1822" +width="100%" +height="100%" +frameborder="0" +style="display: block;" +webkitAllowFullScreen +mozallowfullscreen +allowFullScreen +src="/fernsehen/sturmderliebe1822-ardplayer_image-1afbd693-e72e-406a-abec-7b7f7d0bb66f_theme-ndrde.html?autoplay=false" +></iframe> +<div class="mplayer_textcontent complete_embedded"> +<div class="padding group"> +<div class="functions"> +<div class="social-media meta"> +<a href="http://de.facebook.com/sharer.php?u=https://www.ndr.de%2Ffernsehen%2FFolge-2883-Lebensbedrohlicher-Streit%2Csturmderliebe1822.html&t=Folge+2883%3A+Lebensbedrohlicher+Streit" class="socialmedia"><span class="icon icon_facebook"></span></a> +<a href="http://twitter.com/share?url=https://www.ndr.de%2Ffernsehen%2FFolge-2883-Lebensbedrohlicher-Streit%2Csturmderliebe1822.html&text=Folge+2883%3A+Lebensbedrohlicher+Streit" class="socialmedia"><span class="icon icon_twitter"></span></a> +</div> +<div class="features"> +<div class="rating_wrapper"> +<div class="rating_wrapper"> +<div class="rating" data-rating="0.0" data-uuid="0ff6bd36-4059-4052-b77f-f999db6757dd" data-obid="0ff6bd36-4059-4052-b77f-f999db6757dd" title="Bisherige Bewertung: 0 Sterne bei 0 Bewertungen"> +<ul> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +<li><span class="icon icon_favorit"></span></li> +</ul> +<p> +<span>0</span> bei 0 Bewertungen +</p> +</div> +</div> +<div class="rating_confirm"> +<div class="panel send"> +<p>Mit <span class="amount"></span> von 5 Sternen</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>bewerten</a></p> +</div> +<div class="panel response"> +<p>Vielen Dank.</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>schließen</a></p> +</div> +<div class="panel reject"> +<p>Sie haben bereits abgestimmt.</p> +<p><a href="#" class="button" style="position: relative;"><span class="buttonshine"></span>schließen</a></p> +</div> +</div> +</div> +</div> +</div> +</div> +<div class="playerfooter group"> +<div class="logo"></div> +</div> +</div> +</div> +<!-- ende mediaplayer --> +<span itemprop="video" itemscope itemtype="http://schema.org/VideoObject"> +<span itemprop="contentUrl" content="https://mediandr-a.akamaihd.net/progressive_geo/2018/0320/TV-20180320-0915-0400.hq.mp4" /> +<meta itemprop="embedURL" content="https://www.ndr.de/fernsehen/sturmderliebe1822-externalPlayer.html" /> +</span> +<span itemprop="text"><p>Werner setzt Christoph mit seinem Wissen unter Druck. In die Enge getrieben, verliert Christoph daraufhin die Beherrschung und es kommt zu einer lebensbedrohlichen Situation.</p> +<p>Um einen möglichst guten Eindruck bei Pfarrer Rimpel zu hinterlassen, ist André bei seinem Beichtgespräch ausgesprochen ehrlich. Doch Pfarrer Rimpel ist von Andrés Geständnissen so geschockt, dass er Melli von der Hochzeit mit ihm abrät.</p> +<p>Fabien möchte Tinas Missgeschick wieder in Ordnung bringen. Da er aber alleine keine Lösung findet, bittet er Paul um Hilfe.</p> +<p>Tina ist von Nils' selbstlosem Einsatz beeindruckt. Als sie einen Spaziergang mit Tom macht, vergisst sie seinen Teddy auf der Parkbank - und jemand Unbekanntes nimmt ihn prompt an sich.</p></span> +<div class="contentbox w100 broadcastdetails"> +<div class="textpadding"> +<dl> +<dt>Redaktion</dt> +<dd> +<span itemprop="editor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Ahrens, Meibrit</span></span> +</dd> +</dl> +</div> +</div> +<div class="contentbox w100 list"> +<div class="boxhead">Weitere Informationen</div> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/sturmderliebe100_v-einspaltig.jpg" data-alt="Sturm der Liebe - Der Fürstenhof © ARD Fotograf: Jo Bischoff" data-title="Sturm der Liebe - Der Fürstenhof" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/sturmderliebe100_v-einspaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Sturm der Liebe - Der Fürstenhof © ARD Fotograf: Jo Bischoff" title="Sturm der Liebe - Der Fürstenhof" class="img resize" /> +</noscript> +</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/mediathek/mediatheksuche105_broadcast-1300.html" title="Zum Artikel: Link zur Übersicht mit aktuellen Folgen" > +Sturm der Liebe +</a> +</h2> +<div class="teasertext"> +<p> +Hier finden Sie die aktuellen Folgen! +<a title="Zum Artikel: Sturm der Liebe" href="/mediathek/mediatheksuche105_broadcast-1300.html" class="cta " >mehr</a> +</p> +</div> +</div> +</div> +</div> +</div> +<!-- allow comment false --> +<div class="meta"> +<a href="#" class="socialmedia to_facebook"><span class="icon icon_facebook"></span></a> +<a href="#" class="socialmedia to_twitter"><span class="icon icon_twitter"></span></a> +<div class="right"> +<a href="#" class="printlink"><span class="icon icon_print"></span>Drucken</a> +<a href="/fernsehen/sendung756612-termin.ics" title="In meinen Kalender eintragen" class="epg_reminder"><span class="icon icon_calendar_v2"></span>Kalendereintrag</a> +</div> +</div> +<div id="printbox"> +<img src="/resources/images/logos/ndr_printlogo.gif" alt="NDR Logo" title="NDR Logo" /> +<div class="clearfix"> +<span>Dieser Artikel wurde ausgedruckt unter der Adresse:</span> +<span id="article_url"><a href="https://www.ndr.de/fernsehen/Sturm-der-Liebe,sendung756612.html">https://www.ndr.de/fernsehen/Sturm-der-Liebe,sendung756612.html</a></span> +</div> +</div> +</div> +</article> +<aside class="w33"> +<!-- googleoff: index --> +<div class="box module w100 tvschedule"> +<div class="modulepadding"> +<div class="boxhead"><span>Jetzt im Fernsehen</span></div> +<div class="teaser list"> +<div class="teaserimage"><div class="image-container"><img width="184" height="104" src="/fernsehen/sendungen/weltbilder/logo1110_v-einspaltig.jpg" alt="Schriftzug Weltbilder über der Weltkugel © NDR " title="Schriftzug Weltbilder über der Weltkugel" /></div></div><div class="teaserpadding"> +<p class="subline" style="cursor: pointer;">seit 23:30 Uhr:</p> +<h2><a href="/fernsehen/sendungen/weltbilder/Weltbilder,sendung751234.html" title="Weltbilder" >Weltbilder</a></h2><br clear="all" /> +<a href="/fernsehen/livestream/index.html" class="button" style="position: relative;"><span class="buttonshine"></span><span class="icon icon_video"></span>Livestream starten</a><a href="/fernsehen/programm/index.html" class="button" style="position: relative;"><span class="buttonshine"></span><span class="icon icon_text"></span>Programm</a> +</div> +<table class="tvschedule"> +<caption>TV Programm</caption> +<thead></thead> +<tbody> +<tr><td class="tv_time">00:00</td><td><a href="/fernsehen/epg/import/Lehrkraft-im-Vorbereitungsdienst,sendung576520.html" title="Lehrkraft im Vorbereitungsdienst" >Lehrkraft im Vorbereitungsdienst</a></td></tr></tbody> +</table> +</div> +</div> +</div> +<div class="module box w100 list"> +<div class="modulepadding"> +<div class="boxhead">Wünsch Dir Deinen NDR</div> +<div class="teaser" > +<div class="teaserimage"> +<div class="image-container landscape"> +<noscript data-basename="/der_ndr/wunschprogramm178_v-einspaltig.jpg" data-alt="Logo der Aktion Wünsch dir deinen NDR in einem Fensehmonitor, daneben steht ein Hund mit einer Leine im Maul (Montage) © NDR, Nicolas Maack, istockphoto, Fotolia.com Fotograf: George Peters, René Mansi, DragoNika" data-title="Logo der Aktion Wünsch dir deinen NDR in einem Fensehmonitor, daneben steht ein Hund mit einer Leine im Maul (Montage)" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/der_ndr/wunschprogramm178_v-einspaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Logo der Aktion Wünsch dir deinen NDR in einem Fensehmonitor, daneben steht ein Hund mit einer Leine im Maul (Montage) © NDR, Nicolas Maack, istockphoto, Fotolia.com Fotograf: George Peters, René Mansi, DragoNika" title="Logo der Aktion Wünsch dir deinen NDR in einem Fensehmonitor, daneben steht ein Hund mit einer Leine im Maul (Montage)" class="img resize" /> +</noscript> +</div> +</div> +<div class="teaserpadding"> +<h2> +<a href="/wuensch_dir_deinen_ndr/Besuch-vom-NDR-Auswahl-der-Teilnehmer,deinndr101.html" title="Zum Artikel: Besuch vom NDR - Auswahl der Teilnehmer" > +Besuch vom NDR - Auswahl der Teilnehmer +</a> +</h2> +<div class="teasertext"> +<p> +Der NDR kommt zu Besuch! Danke für Ihre Bewerbungen. +<a title="Zum Artikel: Besuch vom NDR - Auswahl der Teilnehmer" href="/wuensch_dir_deinen_ndr/Besuch-vom-NDR-Auswahl-der-Teilnehmer,deinndr101.html" class="cta " >mehr</a> +</p> +</div> +</div> +</div> +</div> +</div><!-- googleon: index --> +</aside> +</div> +<!-- googleoff: index --> +<div id="footer"> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Der NDR</h2> +<ul> +<li><a href="/der_ndr/index.html" title="Zum Artikel: Unternehmen" >Unternehmen</a></li> +<li><a href="/der_ndr/presse/index.html" title="Zum Artikel: Presse" >Presse</a></li> +<li><a href="/der_ndr/daten_und_fakten/index.html" title="Zum Artikel: Zahlen, Daten, Fakten" >Zahlen, Daten, Fakten</a></li> +<li><a href="http://www.rundfunkbeitrag.de" title="Link: Alle Informationen zu den Rundfunkgebühren ab 1. Januar 2013" target="_blank">Rundfunkbeitrag</a></li> +<li><a href="/der_ndr/karriere/index.html" title="Zum Artikel: Karriere" >Karriere</a></li> +<li><a href="/der_ndr/standorte_und_adressen/index.html" title="Zum Artikel: Standorte & Adressen" >Standorte & Adressen</a></li> +<li><a href="/der_ndr/technik/index.html" title="Zum Artikel: Technik" >Technik</a></li> +<li><a href="/der_ndr/unternehmen/geschichte/index.html" title="Zum Artikel: NDR Chronik" >NDR Chronik</a></li> +<li><a href="/der_ndr/unternehmen/rundfunkrat/index.html" title="Zum Artikel: NDR Rundfunkrat" >NDR Rundfunkrat</a></li> +<li><a href="/der_ndr/unternehmen/verwaltungsrat/index.html" title="Zum Artikel: NDR Verwaltungsrat" >NDR Verwaltungsrat</a></li> +</ul> +</div> +</div> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Service</h2> +<ul> +<li><a href="/nachrichten/wetter/index.html" title="Zum Artikel: Wetter" >Wetter</a></li> +<li><a href="/nachrichten/verkehr/index.html" title="Zum Artikel: Verkehr" >Verkehr</a></li> +<li><a href="/ratgeber/kochen/index.html" title="Zum Artikel: Rezepte" >Rezepte</a></li> +<li><a href="/fernsehen/videotext/index.html" title="Zum Artikel: NDR Text" >NDR Text</a></li> +<li><a href="/fernsehen/service/Barrierefreie-Angebote-im-NDR,barrierefrei141.html" title="Zum Artikel: Barrierefreiheit" >Barrierefreiheit</a></li> +<li><a href="/fernsehen/service/leichte_sprache/index.html" title="Zum Artikel: Leichte Sprache im NDR" >Leichte Sprache im NDR</a></li> +<li><a href="http://www.ndrticketshop.de/" title="Link: Externer Link zum NDR Ticketshop" target="_blank">Tickets</a></li> +<li><a href="https://www.ndrshop.de/willkommen" title="Link: Link zum NDR Shop" target="_blank">Shop</a></li> +<li><a href="/service/technische_hilfe/index.html" title="Zum Artikel: Hilfe" >Hilfe</a></li> +<li><a href="/korrekturuebersicht100.html" title="Zum Artikel: Korrekturen" >Korrekturen</a></li> +</ul> +</div> +</div> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Themen</h2> +<ul> +<li><a href="/nachrichten/bundestagswahl_2017/index.html" title="Zum Artikel: Bundestagswahl" >Bundestagswahl</a></li> +<li><a href="/nachrichten/niedersachsen/landtagswahl_2017/index.html" title="Zum Artikel: Niedersachsen-Wahl" >Niedersachsen-Wahl</a></li> +<li><a href="/kultur/elbphilharmonie/index.html" title="Zum Artikel: Elbphilharmonie" >Elbphilharmonie</a></li> +<li><a href="/nachrichten/fluechtlinge/Fluechtlinge-in-Norddeutschland,fluechtlinge603.html" title="Zum Artikel: Flüchtlinge im Norden" >Flüchtlinge im Norden</a></li> +<li><a href="/nachrichten/kreuzfahrtschiffe127.html" title="Zum Artikel: Kreuzschifffahrt im Norden" >Kreuzschifffahrt im Norden</a></li> +<li><a href="/Storytelling-bei-NDRde,storytelling128.html" title="Zum Artikel: Visual Storytelling" >Visual Storytelling</a></li> +<li><a href="/nachrichten/netzwelt/index.html" title="Zum Artikel: Netzwelt" >Netzwelt</a></li> +<li><a href="/nachrichten/netzwelt/NDR-twitter-facebook-googleplus-youtube,ndrsozialenetzwerke101.html" title="Zum Artikel: Social Media" >Social Media</a></li> +<li><a href="/kultur/geschichte/index.html" title="Zum Artikel: Geschichte" >Geschichte</a></li> +<li><a href="/kultur/norddeutsche_sprache/index.html" title="Zum Artikel: Plattdeutsch" >Plattdeutsch</a></li> +<li><a href="/hand_in_hand_fuer_norddeutschland/index.html" title="Zum Artikel: Hand in Hand" >Hand in Hand</a></li> +<li><a href="/home/thema108.html" title="Zum Artikel: Themen A-Z" >Themen A-Z</a></li> +</ul> +</div> +</div><div class="module footerblock w25"> +<div class="modulepadding"> +<h2>NDR Fernsehen</h2> +<ul> +<li><a href="/fernsehen/sendungen/index.html" title="Zum Artikel: Sendungen A-Z" >Sendungen A-Z</a></li> +<li><a href="/fernsehen/programm/index.html" title="Zum Artikel: Programm" >Programm</a></li> +<li><a href="/fernsehen/livestream/index.html" title="Zum Video-Livestream: Livestream" >Livestream</a></li> +<li><a href="http://www.ndr-mitschnittservice.de/" title="Link: Link zum NDR Mitschnittservice mit einer Übersicht der Preise" target="_blank">Mitschnitte</a></li> +<li><a href="/nachrichten/investigation/Ressort-Investigation-im-NDR,investigation102.html" title="Zum Artikel: Ressort Investigation" >Ressort Investigation</a></li> +<li><a href="/fernsehen/50_jahre/index.html" title="Zum Artikel: 50 Jahre NDR Fernsehen" >50 Jahre NDR Fernsehen</a></li> +</ul> +</div> +</div><div class="module footerblock metanav"> +<div class="modulepadding"> +<ul> +<li><a href="/service/impressum/index.html" title="Impressum">Impressum</a></li> +<li><a href="/service/kontakt/index.html" title="Kontakt">Kontakt</a></li> +<li><a href="/service/datenschutz/index.html" title="Datenschutzerklärung">Datenschutz</a></li> +<li><a href="http://www.ard.de" title="ARD.de">ARD.de</a></li> +<li><a href="#" class="showcopyrights">Bildrechte</a></li> +<li id="copy">© Norddeutscher Rundfunk</li> +</ul> +</div> +<!-- Begin Sitestat4 code --> +<script type='text/javascript'> +<!-- +var ZPIX="https://de.sitestat.com/ndr/ndr/s?fernsehen.sendung756612&cid=sendung756612&pdt=20180320T1031&pti=Sturm_der_Liebe&otp=program&bra=ndrtv&sid=1300&src=-&ctp="; +function sitestat(ns_l){ns_l+='&ns__t='+(new Date()).getTime();ns_pixelUrl=ns_l; ns_0=document.referrer; ns_0=(ns_0.lastIndexOf('/')==ns_0.length-1)?ns_0.substring(ns_0.lastIndexOf('/'),0):ns_0; if(ns_0.length>0)ns_l+='&ns_referrer='+escape(ns_0); +if(document.images){ns_1=new Image();ns_1.src=ns_l;}else +document.write('<img src="'+ns_l+'" width="1" height="1" alt="" />');} +sitestat("https://de.sitestat.com/ndr/ndr/s?fernsehen.sendung756612&cid=sendung756612&pdt=20180320T1031&pti=Sturm_der_Liebe&otp=program&bra=ndrtv&sid=1300&src=-&ctp=-"); +//--> +</script> +<noscript> +<p class="invisible"><img src="https://de.sitestat.com/ndr/ndr/s?fernsehen.sendung756612&cid=sendung756612&pdt=20180320T1031&pti=Sturm_der_Liebe&otp=program&bra=ndrtv&sid=1300&src=-&ctp=-" width="1" height="1" alt="" /></p> +</noscript> +<!-- End Sitestat4 code --> +<!-- IVW SZMnG Tag --> +<script type="text/javascript"> +$(document).ready(function() { +window.setTimeout("getivw()", 1); +}); +</script> +</div> +</div> +</div> +<!-- googleon: index --> +</body> +</html> \ No newline at end of file diff --git a/src/test/resources/ndr/ndr_film_detail_m3u8.html b/src/test/resources/ndr/ndr_film_detail_m3u8.html new file mode 100644 index 0000000000000000000000000000000000000000..b3acbc1d0571d0c76e8d7ae2a4b370336e4abf68 --- /dev/null +++ b/src/test/resources/ndr/ndr_film_detail_m3u8.html @@ -0,0 +1,574 @@ +<!DOCTYPE html> +<html lang="de" xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" prefix="og: http://ogp.me/ns#"> +<!-- base_head --> +<head> + +<title>Blutschuld | NDR.de - Fernsehen - Sendungen A-Z - Tatort</title> +<meta charset="utf-8"> +<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<meta name="title" content="Blutschuld " /> +<meta property="og:title" content="Blutschuld "/> +<meta name="description" content="Der Abfallunternehmer Harald Kosen ist in seinem Schlafzimmer erschlagen worden. Die Kommissare Saalfeld und Keppler sind geschockt von dem kaltblütigen Vorgehen des Mörders." /> +<meta property="og:description" content="Der Abfallunternehmer Harald Kosen ist in seinem Schlafzimmer erschlagen worden. Die Kommissare Saalfeld und Keppler sind geschockt von dem kaltblütigen Vorgehen des Mörders." /> +<meta property="og:image" content="https://www.ndr.de/fernsehen/blutschuld100_v-contentxl.jpg" /> +<link rel="canonical" href="/fernsehen/sendungen/tatort/Blutschuld,sendung751232.html" /> +<meta name="twitter:card" content="summary_large_image"> +<meta name="twitter:creator" content="@ndr"> +<meta name="twitter:site" content="@ndr"> +<meta name="twitter:domain" content="https://www.ndr.de/fernsehen/sendungen/tatort/Blutschuld,sendung751232.html"/> +<meta name="twitter:title" content="Blutschuld "/> +<meta name="twitter:description" content="Der Abfallunternehmer Harald Kosen ist in seinem Schlafzimmer erschlagen worden. Die Kommissare Saalfeld und Keppler sind geschockt von dem kaltblütigen Vorgehen des Mörders."/> +<meta name="twitter:image:src" content="https://www.ndr.de/fernsehen/blutschuld100_v-contentxl.jpg" /> +<meta name="keywords" lang="de" content="NDR,Norddeutscher Rundfunk,Norddeutschland,Radio,Fernsehen,TV" /> +<meta name="author" content="NDR" /> +<meta name="generator" content="orig3" /> +<meta name="robots" content="index, follow, noarchive" /> +<meta name="language" content="de" /> +<link rel="icon" href="/favicon.ico" type="image/x-icon" /> +<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> +<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png"> +<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png"> +<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png"> +<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png"> +<link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png"> +<link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png"> +<link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png"> +<link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png"> +<link rel="icon" type="image/png" href="/favicon-196x196.png" sizes="196x196"> +<link rel="icon" type="image/png" href="/favicon-160x160.png" sizes="160x160"> +<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"> +<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"> +<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"> +<meta name="msapplication-TileColor" content="#0c1754"> +<meta name="msapplication-TileImage" content="/mstile-144x144.png"> +<link type="text/css" rel="stylesheet" href="/resources/css/generated/ndrmerged.css" media="all" /> +<!--[if lte IE 8]> +<link type="text/css" rel="stylesheet" href="/resources/css/ie.css" media="all" /> +<![endif]--> +<!--[if IE 9 ]> +<link type="text/css" rel="stylesheet" href="/resources/css/ie9.css" media="all" /> +<![endif]--> +<link type="text/css" rel="stylesheet" href="/resources/css/generated/print.css" media="print" /> +<script type="text/javascript" src="/common/resources/lib/ndrde_base.js"></script> +<script type="text/javascript" src="/resources/js/scripts.js"></script> +<!--[if lt IE 9]> +<script> +document.createElement('header'); +document.createElement('nav'); +document.createElement('section'); +document.createElement('article'); +document.createElement('aside'); +document.createElement('footer'); +document.createElement('hgroup'); +</script> +<![endif]--> +</head> +<body class="branding tv ndrtv_64" > +<a href="#content" title="Skip to content" class="skiplink">Direkt zum Inhalt</a> +<div id="page"> +<header id="pageheader" role="navigation"> +<div class="mainnav"> +<a id="dachmarkenlogo" href="/index.html" > +<span class="invisible srlabel">zur NDR Homepage</span> +<svg width="100%" height="100%" viewBox="0 -0.096 64 40"> +<path fill="#ffffff" d="M8.923,32.342L3.524,22.62v9.723H0V15.671h3.699l5.624,10.373V15.671h3.524v16.671H8.923z M12.847,15.671V0 +h1.975v15.671H12.847z M12.847,39.465v-7.123h1.975v7.123H12.847z M20.72,15.671c4.124,0,6.249,1.975,6.249,5.798v5.024 +c0,3.924-2.049,5.849-6.249,5.849h-5.898V15.671H20.72z M20.395,29.193c2,0,2.974-1,2.974-3.049v-4.299c0-2.024-1-3.024-2.974-3.024 +h-1.774v10.372H20.395z M37.341,32.342l-2.974-6.398h-2v6.398h-3.699V15.671h5.824c4.099,0,6.048,1.625,6.048,5.099 +c0,2.299-0.85,3.674-2.75,4.499l3.524,7.073H37.341z M34.642,22.919c1.475,0,2.349-0.85,2.349-2.274 +c0-1.475-0.649-2.024-2.349-2.024h-2.35v4.299H34.642z"/> +<path fill="#ffffff" d="M43.571,32.27v-2.647h2.038v2.647H43.571z"/> +<path fill="#ffffff" d="M53.002,32.268l-0.045-0.99c-0.273,0.275-0.652,0.542-1.138,0.801c-0.478,0.251-1.004,0.385-1.581,0.401 +c-0.842-0.016-1.501-0.316-1.979-0.902c-0.516-0.594-0.773-1.395-0.773-2.402V23.27c0.015-2.383,0.925-3.582,2.73-3.598 +c0.607,0.016,1.126,0.137,1.559,0.363c0.432,0.218,0.811,0.496,1.137,0.831v-5.108h1.943v16.51H53.002z M52.911,22.447 +c-0.198-0.203-0.476-0.41-0.833-0.621c-0.38-0.187-0.772-0.289-1.176-0.304c-1.014,0-1.504,0.671-1.473,2.014v5.244 +c0.015,1.218,0.499,1.834,1.45,1.85c0.403-0.016,0.803-0.137,1.199-0.363c0.358-0.21,0.636-0.41,0.833-0.597V22.447z"/> +<path fill="#ffffff" d="M64.171,28.972c-0.045,2.339-1.237,3.528-3.575,3.567c-2.467-0.07-3.693-1.344-3.677-3.82v-5.18 +c0.03-2.562,1.286-3.859,3.768-3.891c2.307,0.062,3.469,1.291,3.484,3.685v3.217h-5.285v2.398c-0.016,1.191,0.54,1.795,1.666,1.811 +c0.54,0.016,0.966-0.129,1.278-0.435c0.281-0.29,0.422-0.764,0.422-1.422v-0.459h1.918V28.972z M62.298,23.2 +c-0.015-1.243-0.582-1.873-1.7-1.888c-1.141,0.016-1.719,0.645-1.734,1.888v1.735h3.435V23.2z"/> +<image src="/resources/images/logos/NDR_logo.png" width="100%" height="100%" /> +</svg> +<span id="claim"> +<svg width="100%" height="100%" viewBox="18.923 35.779 69 8"> +<path d="M8.923,32.342L3.524,22.62v9.723H0V15.671h3.699l5.624,10.373V15.671h3.524v16.671H8.923z M12.847,15.671V0h1.975v15.671 +H12.847z M12.847,39.465v-7.123h1.975v7.123H12.847z M20.72,15.671c4.124,0,6.249,1.975,6.249,5.798v5.024 +c0,3.924-2.049,5.849-6.249,5.849h-5.898V15.671H20.72z M20.395,29.193c2,0,2.974-1,2.974-3.049v-4.299c0-2.024-1-3.024-2.974-3.024 +h-1.774v10.372H20.395z M37.341,32.342l-2.974-6.398h-2v6.398h-3.699V15.671h5.824c4.099,0,6.048,1.625,6.048,5.099 +c0,2.299-0.85,3.674-2.75,4.499l3.524,7.073H37.341z M34.642,22.919c1.475,0,2.349-0.85,2.349-2.274 +c0-1.475-0.649-2.024-2.349-2.024h-2.35v4.299H34.642z"/> +<path fill="#ffffff" d="M23.036,40.896c0.026,1.634-0.632,2.438-1.975,2.412h-1.394v-6.67H21c0.75,0,1.279,0.193,1.587,0.58 +c0.306,0.393,0.455,0.955,0.449,1.685V40.896z M22.197,38.663c-0.006-0.869-0.391-1.306-1.154-1.312h-0.546v5.245h0.565 +c0.77-0.023,1.148-0.529,1.135-1.518V38.663z"/> +<path fill="#ffffff" d="M26.229,43.309l-0.019-0.426c-0.334,0.323-0.689,0.484-1.064,0.484c-0.388-0.006-0.693-0.125-0.914-0.357 +c-0.218-0.228-0.327-0.536-0.327-0.924v-0.279c0.019-1.03,0.771-1.6,2.258-1.711v-0.674c0.006-0.479-0.207-0.715-0.641-0.709 +c-0.468-0.006-0.699,0.248-0.693,0.764c0,0.02,0,0.075,0,0.167h-0.78v-0.166c0.009-0.952,0.51-1.432,1.502-1.438 +c0.948,0.006,1.422,0.459,1.422,1.357v3.912H26.229z M26.163,40.701c-0.971,0.098-1.453,0.462-1.447,1.092v0.21 +c0,0.447,0.21,0.674,0.631,0.681c0.266,0,0.538-0.144,0.816-0.431V40.701z"/> +<path fill="#ffffff" d="M30.761,42.134c-0.006,0.398-0.142,0.71-0.406,0.937c-0.277,0.224-0.649,0.34-1.119,0.35 +c-1.02-0.016-1.539-0.479-1.558-1.386v-0.292h0.81v0.245c0,0.526,0.255,0.786,0.767,0.779c0.451-0.007,0.68-0.217,0.686-0.631 +c-0.006-0.026-0.009-0.052-0.009-0.078c-0.025-0.248-0.145-0.458-0.359-0.631c-0.211-0.167-0.455-0.336-0.732-0.509 +c-0.271-0.176-0.51-0.386-0.718-0.631c-0.211-0.248-0.32-0.563-0.326-0.944v-0.098c0.013-0.783,0.496-1.181,1.449-1.194 +c0.916,0.013,1.382,0.439,1.401,1.278v0.258h-0.781c0-0.114,0-0.185,0-0.211c-0.006-0.441-0.23-0.662-0.672-0.662 +c-0.224,0-0.385,0.054-0.483,0.162c-0.092,0.108-0.137,0.232-0.137,0.373c0,0.02,0.003,0.042,0.009,0.069 +c0.016,0.114,0.058,0.221,0.127,0.318c0.072,0.102,0.159,0.2,0.26,0.294c0.11,0.085,0.227,0.168,0.35,0.25 +c0.129,0.088,0.258,0.178,0.388,0.27c0.277,0.176,0.523,0.384,0.737,0.623c0.101,0.121,0.181,0.258,0.241,0.412 +c0.05,0.154,0.076,0.332,0.076,0.534V42.134z"/> +<path fill="#ffffff" d="M36.561,41.84c-0.013,0.965-0.577,1.455-1.692,1.468h-1.607v-6.67h1.499 +c1.097-0.006,1.639,0.447,1.626,1.362v0.62c0.006,0.585-0.292,0.952-0.897,1.098c0.708,0.091,1.065,0.521,1.071,1.289V41.84z +M35.546,38.152c0.013-0.551-0.297-0.818-0.929-0.802H34.1v2.081h0.621c0.557,0,0.832-0.305,0.825-0.915V38.152z M35.712,41.105 +c0-0.34-0.068-0.587-0.204-0.741c-0.142-0.154-0.386-0.23-0.73-0.23H34.1v2.462h0.64c0.648-0.006,0.972-0.338,0.972-0.996V41.105z" +/> +<path fill="#ffffff" d="M40.356,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34h-2.202v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M39.576,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M44.139,42.134c-0.006,0.398-0.142,0.71-0.406,0.937c-0.277,0.224-0.649,0.34-1.119,0.35 +c-1.02-0.016-1.539-0.479-1.558-1.386v-0.292h0.81v0.245c0,0.526,0.255,0.786,0.767,0.779c0.451-0.007,0.68-0.217,0.686-0.631 +c-0.006-0.026-0.009-0.052-0.009-0.078c-0.025-0.248-0.145-0.458-0.359-0.631c-0.211-0.167-0.455-0.336-0.732-0.509 +c-0.271-0.176-0.51-0.386-0.718-0.631c-0.211-0.248-0.32-0.563-0.326-0.944v-0.098c0.013-0.783,0.496-1.181,1.449-1.194 +c0.916,0.013,1.382,0.439,1.401,1.278v0.258h-0.781c0-0.114,0-0.185,0-0.211c-0.006-0.441-0.23-0.662-0.672-0.662 +c-0.224,0-0.385,0.054-0.483,0.162c-0.092,0.108-0.137,0.232-0.137,0.373c0,0.02,0.003,0.042,0.009,0.069 +c0.016,0.114,0.058,0.221,0.127,0.318c0.072,0.102,0.159,0.2,0.26,0.294c0.11,0.085,0.227,0.168,0.35,0.25 +c0.129,0.088,0.258,0.178,0.388,0.27c0.277,0.176,0.523,0.384,0.737,0.623c0.101,0.121,0.181,0.258,0.241,0.412 +c0.05,0.154,0.076,0.332,0.076,0.534V42.134z"/> +<path fill="#ffffff" d="M47.02,43.289c-0.265,0.052-0.487,0.078-0.667,0.078c-0.792,0.006-1.182-0.417-1.169-1.272V38.82h-0.67 +v-0.673h0.68v-1.464l0.81-0.143v1.606h0.951v0.673h-0.951v3.309c-0.006,0.382,0.166,0.57,0.516,0.564 +c0.135,0,0.293-0.023,0.473-0.069L47.02,43.289z"/> +<path fill="#ffffff" d="M50.614,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34h-2.202v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M49.833,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M55.468,43.309l-0.019-0.426c-0.334,0.323-0.689,0.484-1.064,0.484c-0.388-0.006-0.693-0.125-0.914-0.357 +c-0.218-0.228-0.327-0.536-0.327-0.924v-0.279c0.019-1.03,0.771-1.6,2.258-1.711v-0.674c0.006-0.479-0.207-0.715-0.641-0.709 +c-0.468-0.006-0.699,0.248-0.693,0.764c0,0.02,0,0.075,0,0.167h-0.78v-0.166c0.009-0.952,0.51-1.432,1.502-1.438 +c0.948,0.006,1.422,0.459,1.422,1.357v3.912H55.468z M55.402,40.701c-0.971,0.098-1.453,0.462-1.447,1.092v0.21 +c0,0.447,0.21,0.674,0.631,0.681c0.266,0,0.538-0.144,0.816-0.431V40.701z"/> +<path fill="#ffffff" d="M61.18,43.308v-3.76c0.006-0.459-0.155-0.685-0.485-0.679c-0.26,0.006-0.504,0.166-0.732,0.479v3.96h-0.81 +v-3.829c-0.006-0.407-0.18-0.61-0.521-0.61c-0.252,0-0.486,0.137-0.701,0.41v4.029h-0.814v-5.161h0.732l0.028,0.449 +c0.319-0.352,0.668-0.527,1.047-0.527c0.467-0.006,0.781,0.204,0.942,0.63c0.129-0.199,0.297-0.355,0.502-0.469 +c0.202-0.107,0.405-0.161,0.611-0.161c0.672,0,1.009,0.43,1.009,1.289v3.95H61.18z"/> +<path fill="#ffffff" d="M67.57,43.308l-1.433-3.85c-0.095-0.267-0.201-0.582-0.317-0.943c-0.124-0.368-0.189-0.562-0.195-0.582 +c0.013,0.146,0.029,0.646,0.049,1.5v3.875h-0.839v-6.67h1.091l1.248,3.332c0.098,0.248,0.202,0.538,0.312,0.87 +c0.11,0.362,0.168,0.549,0.175,0.562c-0.013-0.14-0.025-0.621-0.038-1.441v-3.322h0.839v6.67H67.57z"/> +<path fill="#ffffff" d="M72.568,41.859c-0.013,1.018-0.528,1.538-1.547,1.561c-1.035-0.029-1.552-0.55-1.552-1.562v-2.31 +c0-0.459,0.132-0.825,0.397-1.099c0.259-0.267,0.641-0.404,1.145-0.41c1.025,0.02,1.544,0.524,1.557,1.513V41.859z M71.759,39.571 +c0-0.247-0.065-0.44-0.195-0.58c-0.136-0.133-0.317-0.2-0.542-0.2c-0.222,0-0.398,0.067-0.528,0.2 +c-0.143,0.14-0.214,0.333-0.214,0.58v2.327c0.006,0.508,0.254,0.765,0.743,0.771c0.479,0,0.725-0.257,0.738-0.771V39.571z"/> +<path fill="#ffffff" d="M75.615,39.025c-0.381,0.026-0.668,0.125-0.861,0.298c-0.208,0.173-0.368,0.402-0.478,0.689v3.295h-0.807 +v-5.162h0.78v0.85c0.195-0.306,0.396-0.532,0.6-0.679c0.208-0.146,0.463-0.232,0.766-0.258V39.025z"/> +<path fill="#ffffff" d="M78.298,43.308l-0.019-0.413c-0.114,0.115-0.272,0.226-0.474,0.334c-0.199,0.104-0.418,0.161-0.659,0.167 +c-0.351-0.006-0.625-0.132-0.825-0.376C76.107,42.772,76,42.439,76,42.019v-2.461c0.006-0.993,0.385-1.493,1.137-1.499 +c0.253,0.006,0.469,0.057,0.649,0.151c0.18,0.091,0.338,0.207,0.474,0.346v-2.128h0.81v6.879H78.298z M78.26,39.215 +c-0.083-0.084-0.198-0.17-0.347-0.258c-0.159-0.078-0.322-0.121-0.49-0.127c-0.422,0-0.627,0.28-0.614,0.839v2.186 +c0.006,0.507,0.208,0.764,0.604,0.771c0.168-0.006,0.334-0.057,0.5-0.151c0.149-0.087,0.265-0.17,0.347-0.249V39.215z"/> +<path fill="#ffffff" d="M82.992,41.934c-0.019,0.975-0.516,1.47-1.489,1.486c-1.028-0.029-1.539-0.56-1.532-1.592V39.67 +c0.013-1.068,0.536-1.608,1.57-1.621c0.961,0.026,1.445,0.538,1.452,1.535v1.34H80.79v1c-0.006,0.497,0.225,0.748,0.694,0.754 +c0.225,0.006,0.402-0.054,0.533-0.181c0.117-0.121,0.176-0.318,0.176-0.593v-0.191h0.799V41.934z M82.211,39.529 +c-0.006-0.518-0.243-0.78-0.708-0.787c-0.476,0.006-0.716,0.269-0.723,0.787v0.723h1.431V39.529z"/> +<path fill="#ffffff" d="M86.021,43.308v-3.829c0.006-0.433-0.161-0.646-0.501-0.64c-0.183,0.006-0.349,0.062-0.497,0.166 +c-0.148,0.107-0.262,0.208-0.341,0.303v4h-0.814v-5.161h0.752l0.028,0.483c0.117-0.133,0.27-0.26,0.459-0.381 +c0.18-0.121,0.387-0.184,0.621-0.19c0.729-0.006,1.097,0.407,1.103,1.24v4.009H86.021z"/> +<image src="/resources/images/logos/NDR_claim.png" width="100%" height="100%" /> +</svg> +</span> +</a> +<!-- googleoff: index --> +<nav> +<ul id="navigation" role="navigation" > +<li > +<a href="/nachrichten/index.html" class="mn_item_1">Nachrichten</a> +<ul class="subnav subnav_item_1"> +<li><a href="/nachrichten/niedersachsen/index.html">Niedersachsen</a></li> +<li><a href="/nachrichten/schleswig-holstein/index.html">Schleswig-Holstein</a></li> +<li><a href="/nachrichten/mecklenburg-vorpommern/index.html">Mecklenburg-Vorpommern</a></li> +<li><a href="/nachrichten/hamburg/index.html">Hamburg</a></li> +<li><a href="/nachrichten/wetter/index.html">Wetter</a></li> +<li><a href="/nachrichten/verkehr/index.html">Verkehr</a></li> +</ul> +</li> +<li > +<a href="/sport/index.html" class="mn_item_2">Sport</a> +<ul class="subnav subnav_item_2"> +<li><a href="/sport/fussball/index.html">Fußball</a></li> +<li><a href="/sport/handball/index.html">Handball</a></li> +<li><a href="/sport/mehr_sport/index.html">Mehr Sport</a></li> +<li><a href="/sport/ergebnisse/index.html">Ergebnisse</a></li> +<li><a href="/sport/live/index.html">Live</a></li> +</ul> +</li> +<li > +<a href="/ratgeber/index.html" class="mn_item_3">Ratgeber</a> +<ul class="subnav subnav_item_3"> +<li><a href="/ratgeber/kochen/index.html">Kochen</a></li> +<li><a href="/ratgeber/reise/index.html">Reise</a></li> +<li><a href="/ratgeber/garten/index.html">Garten</a></li> +<li><a href="/ratgeber/gesundheit/index.html">Gesundheit</a></li> +<li><a href="/ratgeber/verbraucher/index.html">Verbraucher</a></li> +</ul> +</li> +<li > +<a href="/kultur/index.html" class="mn_item_4">Kultur</a> +<ul class="subnav subnav_item_4"> +<li><a href="/kultur/musik/index.html">Musik</a></li> +<li><a href="/kultur/film/index.html">Film</a></li> +<li><a href="/kultur/buch/index.html">Buch</a></li> +<li><a href="/kultur/kunst/index.html">Kunst</a></li> +<li><a href="/kultur/geschichte/index.html">Geschichte</a></li> +</ul> +</li> +<li class="active"> +<a href="/fernsehen/index.html" class="mn_item_5 active">Fernsehen</a> +<ul class="subnav subnav_item_5"> +<li><a href="/fernsehen/livestream/index.html">Livestream</a></li> +<li><a class="active" href="/fernsehen/sendungen/index.html">Sendungen A-Z</a></li> +<li><a href="/fernsehen/programm/index.html">Programm</a></li> +<li><a href="/fernsehen/service/index.html">Service</a></li> +<li class="socialmedia-link facebook"><a href="https://www.facebook.com/ndrfernsehen" title="NDR Fernsehen bei Facebook" tabindex="0"><span class="icon icon_facebook"></span><span class="socialmedia-label">NDR Fernsehen bei Facebook</span></a></li> +</ul> +</li> +<li > +<a href="/radio/index.html" class="mn_item_6">Radio</a> +<ul class="subnav subnav_item_6"> +</ul> +</li> +<li > +<a href="/mediathek/index.html" class="mn_item_7">Mediathek</a> +<ul class="subnav subnav_item_7"> +<li><a href="/mediathek/sendung_verpasst/index.html">Sendung verpasst</a></li> +<li><a href="/mediathek/sendungen_a-z/index.html">Sendungen A-Z</a></li> +<li><a href="/mediathek/audio/index.html">Audio</a></li> +</ul> +</li><li id="menusearch"> +<a href="#" class="menusearch" title=""><span class="invisible srlabel">Suche einblenden</span></a> +<div class="quicksearch group"> +<form id="search" action="/suche10.html" method="get"> +<div class="form_element w66"> +<div class="modulepadding"> +<label for="searchword" class="invisible">Suchbegriffe:</label> +<input id="searchword" type="text" name="query" placeholder="Suchbegriff" /> +</div> +</div> +<div class="form_element w33" id="quicksearchsubmit"> +<div class="modulepadding"> +<button type="submit" class="button_sprite w100"><span>Suchen</span></button> +</div> +</div> +<div class="form_element w100"> +<div class="modulepadding"> +<label for="check_mediathek" class="smallelement"> +<input id="check_epg" type="checkbox" name="search_epg" value="1" checked="checked"> +<input id="sort_by_checkbox" type="hidden" name="sort_by" value="date"> +<span>nur im Fernsehprogramm suchen</span></label> +</div> +</div> +</form> +</div> +</li> +</ul> +</nav> +</div> +<div class="subnavbar"> +<!-- googleon: index --><div class="horizon"></div> +<div id="brandinglogo"> +<a title="Zur Startseite: Tatort" href="http://www.ndr.de/tatort"> +<img src="/resources/images/logos/ndr_brand_sprite_ndrtv_64.png" alt="Tatort"/> +</a> +</div> +</div> +</header><div class="pagepadding"> +<article class="w66 "> +<div class="modulepadding copytext"> +<div itemscope itemtype="http://schema.org/Episode"> +<header> +<h1><span itemprop="headline">Tatort</span></h1> +<div class="subtitle"><span itemprop="alternateName">Blutschuld</span></div><p> +<span itemprop="publication" itemscope itemtype="http://schema.org/BroadcastEvent"> +<span itemprop="startDate" content="2018-03-20T22:00:00.000+01:00"> +Dienstag, 20. März 2018, 22:00</span> bis +<span itemprop="endDate" content="2018-03-20T23:30:00.000+01:00"> +23:30 Uhr</span</span><span class="icon icon_subtitles" title="mit Untertiteln"></span> +<span class="icon icon_hd" title="HD"></span> +<span class="icon icon_audio_description" title="Audio Description"></span><br /></p> +</header> +<span itemprop="thumbnailUrl" content="https://www.ndr.de/fernsehen/blutschuld100_v-einspaltig.jpg"></span> +<!-- start ncc mediaplayer --> +<div class="projekktor_holder " itemscope itemtype="http://schema.org/"> +<span itemprop="contentUrl" content="https://mediandr-a.akamaihd.net/progressive///.hq.mp4" /> +<meta itemprop="embedURL" content="http://www.ndr.de/fernsehen/livestream/livestream217-player.html" /> +<span itemprop="thumbnailUrl" content="http://www.ndr.de/mediathek/ndrtafel100_v-einspaltig.jpg"></span> +<span itemprop="duration" content="" /> +<span itemprop="uploadDate" content="2018-02-19T10:43:09.437+01:00" /> +<img width="192" height="144" src="/mediathek/ndrtafel100_v-content.jpg" alt="NDR - Das Beste am Norden © NDR " title="NDR - Das Beste am Norden" width=0 height=0 style='display:none' /> +<iframe +id="pp_livestream217" +width="100%" +height="100%" +frameborder="0" +style="display: block;" +webkitAllowFullScreen +mozallowfullscreen +allowFullScreen +src="/fernsehen/livestream/livestream217-ardplayer_image-5e9560f0-bc96-4d5b-8a92-cddd3f77966f_theme-ndrde.html?autoplay=false" +></iframe> +<div class="mplayer_textcontent "> +<div class="padding group"> +<div class="textinfo"> +<h2> +NDR Fernsehen Niedersachsen +</h2> +<span itemprop="name" content="Video: NDR Fernsehen Niedersachsen"></span> +<div class="subline"> +<span itemprop="alternateName"></span><span itemprop="datePublished" content=""></span> <span itemprop="author"></span> +</div> +<p itemprop="description"></p> +</div> +<div class="functions"> +<div class="social-media meta"> +<a href="http://de.facebook.com/sharer.php?u=https://www.ndr.de%2Ffernsehen%2Flivestream%2Findex.html&t=NDR+Fernsehen+Niedersachsen" class="socialmedia"><span class="icon icon_facebook"></span></a> +<a href="http://twitter.com/share?url=https://www.ndr.de%2Ffernsehen%2Flivestream%2Findex.html&text=NDR+Fernsehen+Niedersachsen" class="socialmedia"><span class="icon icon_twitter"></span></a> +</div> +</div> +</div> +<div class="playerfooter ndrtv group"> +<div class="logo"></div> +</div> +</div> +</div> +<!-- ende mediaplayer --><span itemprop="text"><p>Die Kommissare Eva Saalfeld und Andreas Keppler werden zu einem Tatort am Stadtrand gerufen. Dort ist der Abfallunternehmer Harald Kosen im Schlafzimmer seines Hauses erschlagen worden. Obwohl viel Bargeld aus dem Wandtresor gestohlen wurde, deutet die Brutalität des Mordes für die Kommissare auf eine Tat aus Wut oder Hass hin.</p> +<p>Der erste Verdacht fällt auf den ehemaligen Firmenpartner Kosens, Christian Scheidt. Seine Tochter wurde vor einigen Jahren von Harald Kosen bei einem Verkehrsunfall getötet. Wollte Scheidt sich rächen?</p> +<div class="contentimage w100"> +<div class="image-container landscape"> +<noscript data-basename="/fernsehen/sendungen/tatort/sendungsbild59156_v-einspaltig.jpg" data-alt="Der Abfallunternehmer Harald Kosen (Bernhard Schütz, links) ist erbost, dass sich sein Schwiegersohn Frank Bachmann (Alexander Khuon, rechts) in seine Geschäfte einmischt und ihm versucht hat zu drohen. © NDR/MDR/Steffen Junghans, honorarfrei " data-title="Der Abfallunternehmer Harald Kosen (Bernhard Schütz, links) ist erbost, dass sich sein Schwiegersohn Frank Bachmann (Alexander Khuon, rechts) in seine Geschäfte einmischt und ihm versucht hat zu drohen." data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig"> +<img src="/fernsehen/sendungen/tatort/sendungsbild59156_v-einspaltig.jpg" data-type="contentklein,contentgross,contentxl,einspaltig,zweispaltig,vierspaltig,thumbnailgross,anderthalbspaltig" alt="Der Abfallunternehmer Harald Kosen (Bernhard Schütz, links) ist erbost, dass sich sein Schwiegersohn Frank Bachmann (Alexander Khuon, rechts) in seine Geschäfte einmischt und ihm versucht hat zu drohen. © NDR/MDR/Steffen Junghans, honorarfrei " title="Der Abfallunternehmer Harald Kosen (Bernhard Schütz, links) ist erbost, dass sich sein Schwiegersohn Frank Bachmann (Alexander Khuon, rechts) in seine Geschäfte einmischt und ihm versucht hat zu drohen." class="img resize" /> +</noscript> +</div> +<span class="caption">Der Abfallunternehmer Harald Kosen (Bernhard Schütz, links) ist erbost, dass sich sein Schwiegersohn Frank Bachmann (Alexander Khuon, rechts) in seine Geschäfte einmischt und ihm versucht hat zu drohen.</span> +</div><p>Kosens herzkranke Ehefrau Astrid hat die letzten Tage im Krankenhaus verbracht, sie kommt als Täterin nicht infrage. Ihre erwachsenen Kinder Sofie und Patrick wohnen nicht mehr im Haus.</p> +<p>Patrick ist von seiner Familie enttäuscht, die ihm keinen Schutz geboten hat, als er in Schwierigkeiten war. Nach einer Jugendstrafe wegen Raubes mit schwerer Körperverletzung gibt er sich geläutert und sucht anscheinend die Versöhnung mit seiner Familie.</p> +<h3>Hatte der Schwiegersohn ein Mordmotiv?</h3> +<p>Sofies Mann Frank ist in Kosens Recyclingfirma angestellt. Beruflich steht es für ihn nicht zum Besten. Sein Schwiegervater wollte ihn nach einem Erpressungsversuch aus der Firma werfen. Franks Ehe mit Sofie steht vor dem Aus, weil sie immer mehr zu ihrem Vater hielt als zu ihm.</p> +<p>Nach einem verzweifelten Anruf von Sofie finden die Kommissare die junge Frau kurz darauf tot auf. Als die Kommissare ihren Mann Frank verhaften wollen, stoßen sie auf ein weiteres Opfer.</p></span> +<div class="contentbox w100 broadcastdetails"> +<div class="textpadding"> +<dl> +<dt>Schauspieler/in</dt> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Simone Thomalla</span></span> +<i> als Hauptkommissarin Eva Saalfeld</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Martin Wuttke</span></span> +<i> als Hauptkommissar Andreas Keppler</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Maxim Mehmet</span></span> +<i> als Kriminaltechniker Wolfgang Menzel</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Uwe Bohm</span></span> +<i> als Christian Scheidt</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Bernhard Schütz</span></span> +<i> als Harald Kosen</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Natalia Rudziewicz</span></span> +<i> als Sofie Kosen</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Tino Hillebrand</span></span> +<i> als Patrick Kosen</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Alexander Khuon</span></span> +<i> als Frank Bachmann</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Lisa Hagemeister</span></span> +<i> als Leonie Krajczinsky</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Lina Wendel</span></span> +<i> als Astrid Kosen</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Ulf Manhenke</span></span> +<i> als Einsatzleiter</i></dd> +<dd> +<span itemprop="actor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Jonas Fürstenau</span></span> +<i> als Polizist der SoKo</i></dd> +<dt>Musik</dt> +<dd> +Stefan Will</dd> +<dd> +Marco Dreckkötter</dd> +<dt>Kamera</dt> +<dd> +Andreas Doub</dd> +<dt>Autor/in (Drehbuch)</dt> +<dd> +<span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Stefan Kornatz</span></span> +</dd> +<dt>Regie</dt> +<dd> +<span itemprop="director" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Stefan Kornatz</span></span> +</dd> +<dt>Redaktion</dt> +<dd> +<span itemprop="editor" itemscope itemtype="http://schema.org/Person"><span itemprop="name"> +Matthiesen, Karen</span></span> +</dd> +</dl> +</div> +</div> +</div> +<!-- allow comment false --> +<div class="meta"> +<a href="#" class="socialmedia to_facebook"><span class="icon icon_facebook"></span></a> +<a href="#" class="socialmedia to_twitter"><span class="icon icon_twitter"></span></a> +<div class="right"> +<a href="#" class="printlink"><span class="icon icon_print"></span>Drucken</a> +<a href="/fernsehen/sendungen/tatort/sendung751232-termin.ics" title="In meinen Kalender eintragen" class="epg_reminder"><span class="icon icon_calendar_v2"></span>Kalendereintrag</a> +</div> +</div> +<div id="printbox"> +<img src="/resources/images/logos/ndr_printlogo.gif" alt="NDR Logo" title="NDR Logo" /> +<div class="clearfix"> +<span>Dieser Artikel wurde ausgedruckt unter der Adresse:</span> +<span id="article_url"><a href="https://www.ndr.de/fernsehen/sendungen/tatort/Blutschuld,sendung751232.html">https://www.ndr.de/fernsehen/sendungen/tatort/Blutschuld,sendung751232.html</a></span> +</div> +</div> +</div> +</article> +<aside class="w33"> +<!-- googleoff: index --> +<div class="box module w100 tvschedule"> +<div class="modulepadding"> +<div class="boxhead"><span>Jetzt im Fernsehen</span></div> +<div class="teaser list"> +<div class="teaserimage"><div class="image-container"><img width="184" height="104" src="/fernsehen/blutschuld100_v-einspaltig.jpg" alt="Die Hauptkommissare Eva Saalfeld (Simone Thomalla, rechts) und Andreas Keppler (Martin Wuttke, links) sind geschockt von dem kaltblütigen Vorgehen des Mörders. © MDR/Steffen Junghans " title="Die Hauptkommissare Eva Saalfeld (Simone Thomalla, rechts) und Andreas Keppler (Martin Wuttke, links) sind geschockt von dem kaltblütigen Vorgehen des Mörders." /></div></div><div class="teaserpadding"> +<p class="subline" style="cursor: pointer;">seit 22:00 Uhr:</p> +<h2><a href="/fernsehen/sendungen/tatort/Blutschuld,sendung751232.html" title="Tatort" >Tatort</a></h2><br clear="all" /> +<a href="/fernsehen/livestream/index.html" class="button" style="position: relative;"><span class="buttonshine"></span><span class="icon icon_video"></span>Livestream starten</a><a href="/fernsehen/programm/index.html" class="button" style="position: relative;"><span class="buttonshine"></span><span class="icon icon_text"></span>Programm</a> +</div> +<table class="tvschedule"> +<caption>TV Programm</caption> +<thead></thead> +<tbody> +<tr><td class="tv_time">23:30</td><td><a href="/fernsehen/sendungen/weltbilder/Weltbilder,sendung751234.html" title="Weltbilder" >Weltbilder</a></td></tr></tbody> +</table> +</div> +</div> +</div><!-- googleon: index --> +</aside> +</div> +<!-- googleoff: index --> +<div id="footer"> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Der NDR</h2> +<ul> +<li><a href="/der_ndr/index.html" title="Zum Artikel: Unternehmen" >Unternehmen</a></li> +<li><a href="/der_ndr/presse/index.html" title="Zum Artikel: Presse" >Presse</a></li> +<li><a href="/der_ndr/daten_und_fakten/index.html" title="Zum Artikel: Zahlen, Daten, Fakten" >Zahlen, Daten, Fakten</a></li> +<li><a href="http://www.rundfunkbeitrag.de" title="Link: Alle Informationen zu den Rundfunkgebühren ab 1. Januar 2013" target="_blank">Rundfunkbeitrag</a></li> +<li><a href="/der_ndr/karriere/index.html" title="Zum Artikel: Karriere" >Karriere</a></li> +<li><a href="/der_ndr/standorte_und_adressen/index.html" title="Zum Artikel: Standorte & Adressen" >Standorte & Adressen</a></li> +<li><a href="/der_ndr/technik/index.html" title="Zum Artikel: Technik" >Technik</a></li> +<li><a href="/der_ndr/unternehmen/geschichte/index.html" title="Zum Artikel: NDR Chronik" >NDR Chronik</a></li> +<li><a href="/der_ndr/unternehmen/rundfunkrat/index.html" title="Zum Artikel: NDR Rundfunkrat" >NDR Rundfunkrat</a></li> +<li><a href="/der_ndr/unternehmen/verwaltungsrat/index.html" title="Zum Artikel: NDR Verwaltungsrat" >NDR Verwaltungsrat</a></li> +</ul> +</div> +</div> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Service</h2> +<ul> +<li><a href="/nachrichten/wetter/index.html" title="Zum Artikel: Wetter" >Wetter</a></li> +<li><a href="/nachrichten/verkehr/index.html" title="Zum Artikel: Verkehr" >Verkehr</a></li> +<li><a href="/ratgeber/kochen/index.html" title="Zum Artikel: Rezepte" >Rezepte</a></li> +<li><a href="/fernsehen/videotext/index.html" title="Zum Artikel: NDR Text" >NDR Text</a></li> +<li><a href="/fernsehen/service/Barrierefreie-Angebote-im-NDR,barrierefrei141.html" title="Zum Artikel: Barrierefreiheit" >Barrierefreiheit</a></li> +<li><a href="/fernsehen/service/leichte_sprache/index.html" title="Zum Artikel: Leichte Sprache im NDR" >Leichte Sprache im NDR</a></li> +<li><a href="http://www.ndrticketshop.de/" title="Link: Externer Link zum NDR Ticketshop" target="_blank">Tickets</a></li> +<li><a href="https://www.ndrshop.de/willkommen" title="Link: Link zum NDR Shop" target="_blank">Shop</a></li> +<li><a href="/service/technische_hilfe/index.html" title="Zum Artikel: Hilfe" >Hilfe</a></li> +<li><a href="/korrekturuebersicht100.html" title="Zum Artikel: Korrekturen" >Korrekturen</a></li> +</ul> +</div> +</div> +<div class="module footerblock w25"> +<div class="modulepadding"> +<h2>Themen</h2> +<ul> +<li><a href="/nachrichten/bundestagswahl_2017/index.html" title="Zum Artikel: Bundestagswahl" >Bundestagswahl</a></li> +<li><a href="/nachrichten/niedersachsen/landtagswahl_2017/index.html" title="Zum Artikel: Niedersachsen-Wahl" >Niedersachsen-Wahl</a></li> +<li><a href="/kultur/elbphilharmonie/index.html" title="Zum Artikel: Elbphilharmonie" >Elbphilharmonie</a></li> +<li><a href="/nachrichten/fluechtlinge/Fluechtlinge-in-Norddeutschland,fluechtlinge603.html" title="Zum Artikel: Flüchtlinge im Norden" >Flüchtlinge im Norden</a></li> +<li><a href="/nachrichten/kreuzfahrtschiffe127.html" title="Zum Artikel: Kreuzschifffahrt im Norden" >Kreuzschifffahrt im Norden</a></li> +<li><a href="/Storytelling-bei-NDRde,storytelling128.html" title="Zum Artikel: Visual Storytelling" >Visual Storytelling</a></li> +<li><a href="/nachrichten/netzwelt/index.html" title="Zum Artikel: Netzwelt" >Netzwelt</a></li> +<li><a href="/nachrichten/netzwelt/NDR-twitter-facebook-googleplus-youtube,ndrsozialenetzwerke101.html" title="Zum Artikel: Social Media" >Social Media</a></li> +<li><a href="/kultur/geschichte/index.html" title="Zum Artikel: Geschichte" >Geschichte</a></li> +<li><a href="/kultur/norddeutsche_sprache/index.html" title="Zum Artikel: Plattdeutsch" >Plattdeutsch</a></li> +<li><a href="/hand_in_hand_fuer_norddeutschland/index.html" title="Zum Artikel: Hand in Hand" >Hand in Hand</a></li> +<li><a href="/home/thema108.html" title="Zum Artikel: Themen A-Z" >Themen A-Z</a></li> +</ul> +</div> +</div><div class="module footerblock w25"> +<div class="modulepadding"> +<h2>NDR Fernsehen</h2> +<ul> +<li><a href="/fernsehen/sendungen/index.html" title="Zum Artikel: Sendungen A-Z" >Sendungen A-Z</a></li> +<li><a href="/fernsehen/programm/index.html" title="Zum Artikel: Programm" >Programm</a></li> +<li><a href="/fernsehen/livestream/index.html" title="Zum Video-Livestream: Livestream" >Livestream</a></li> +<li><a href="http://www.ndr-mitschnittservice.de/" title="Link: Link zum NDR Mitschnittservice mit einer Übersicht der Preise" target="_blank">Mitschnitte</a></li> +<li><a href="/nachrichten/investigation/Ressort-Investigation-im-NDR,investigation102.html" title="Zum Artikel: Ressort Investigation" >Ressort Investigation</a></li> +<li><a href="/fernsehen/50_jahre/index.html" title="Zum Artikel: 50 Jahre NDR Fernsehen" >50 Jahre NDR Fernsehen</a></li> +</ul> +</div> +</div><div class="module footerblock metanav"> +<div class="modulepadding"> +<ul> +<li><a href="/service/impressum/index.html" title="Impressum">Impressum</a></li> +<li><a href="/service/kontakt/index.html" title="Kontakt">Kontakt</a></li> +<li><a href="/service/datenschutz/index.html" title="Datenschutzerklärung">Datenschutz</a></li> +<li><a href="http://www.ard.de" title="ARD.de">ARD.de</a></li> +<li><a href="#" class="showcopyrights">Bildrechte</a></li> +<li id="copy">© Norddeutscher Rundfunk</li> +</ul> +</div> +<!-- Begin Sitestat4 code --> +<script type='text/javascript'> +<!-- +var ZPIX="https://de.sitestat.com/ndr/ndr/s?fernsehen.sendungen.tatort.sendung751232&cid=sendung751232&pdt=20180320T0221&pti=Blutschuld&otp=program&bra=ndrtv&sid=64&src=-&ctp="; +function sitestat(ns_l){ns_l+='&ns__t='+(new Date()).getTime();ns_pixelUrl=ns_l; ns_0=document.referrer; ns_0=(ns_0.lastIndexOf('/')==ns_0.length-1)?ns_0.substring(ns_0.lastIndexOf('/'),0):ns_0; if(ns_0.length>0)ns_l+='&ns_referrer='+escape(ns_0); +if(document.images){ns_1=new Image();ns_1.src=ns_l;}else +document.write('<img src="'+ns_l+'" width="1" height="1" alt="" />');} +sitestat("https://de.sitestat.com/ndr/ndr/s?fernsehen.sendungen.tatort.sendung751232&cid=sendung751232&pdt=20180320T0221&pti=Blutschuld&otp=program&bra=ndrtv&sid=64&src=-&ctp=-"); +//--> +</script> +<noscript> +<p class="invisible"><img src="https://de.sitestat.com/ndr/ndr/s?fernsehen.sendungen.tatort.sendung751232&cid=sendung751232&pdt=20180320T0221&pti=Blutschuld&otp=program&bra=ndrtv&sid=64&src=-&ctp=-" width="1" height="1" alt="" /></p> +</noscript> +<!-- End Sitestat4 code --> +<!-- IVW SZMnG Tag --> +<script type="text/javascript"> +$(document).ready(function() { +window.setTimeout("getivw()", 1); +}); +</script> +</div> +</div> +</div> +<!-- googleon: index --> +</body> +</html> \ No newline at end of file diff --git a/src/test/resources/ndr/ndr_film_detail_m3u8.json b/src/test/resources/ndr/ndr_film_detail_m3u8.json new file mode 100644 index 0000000000000000000000000000000000000000..f59d386ba431dee6062187276fb29e8e477469e4 --- /dev/null +++ b/src/test/resources/ndr/ndr_film_detail_m3u8.json @@ -0,0 +1,111 @@ +{ + "_type":"video", + "_isLive":true, + "_dvrEnabled":true, + "_geoblocked":false, + "_defaultQuality":[ + "auto", + 2, + 3, + 1, + 0 + ], + "_audioImage":{ + "s":"/mediathek/ndrtafel100_v-zweispaltig.jpg", + "m":"/mediathek/ndrtafel100_v-contentgross.jpg", + "l":"/mediathek/ndrtafel100_v-ardgalerie.jpg", + "xl":"/mediathek/ndrtafel100_v-contentxl.jpg" + }, + "_previewImage":"/mediathek/ndrtafel100_v-contentxl.jpg", + "_subtitleOffset":0, + "_mediaArray":[ + { + "_plugin":0, + "_mediaStreamArray":[ + { + "_quality":"auto", + "_server":"", + "_stream":"https://ndrfs-lh.akamaihd.net/z/ndrfs_nds@430233/manifest.f4m", + "_cdn":"akamai" + } + ] + }, + { + "_plugin":1, + "_mediaStreamArray":[ + { + "_quality":"auto", + "_server":"", + "_stream":"http://localhost:8589/i/ndrfs_nds@430233/master.m3u8", + "_cdn":"flashls" + } + ] + } + ], + "_alternativeMediaArray":[ + { + "_type":[ + "untertitel" + ], + "_mediaArray":[ + + ] + } + ], + "_duration":0, + "_sortierArray":[ + 1, + 0 + ], + "agfParams":[ + { + "tracker":"AGF", + "agfGlobalParamsSDK":{ + "clientid":"de-605508", + "vcid":"b04", + "sfcode":"eu", + "prod":"vc", + "apn":"ardplayer", + "apid":"PB226FA86-44DD-42B5-8991-682F1375CB67" + }, + "agfMetaDataSDK":{ + "nol_c2":"p2,N", + "nol_c7":"p7,livestream217", + "nol_c8":"p8,86400", + "nol_c9":"p9,Livestream_NDR Fernsehen Niedersachsen", + "nol_c10":"p10,NDR Fernsehen Niedersachsen", + "nol_c12":"p12,Content", + "nol_c15":"p15,", + "nol_c18":"p18,Y", + "censuscategory":"NDR Fernsehen Niedersachsen_Livestream_NDR Fernsehen Niedersachsen", + "assetid":"livestream217", + "title":"Livestream_NDR Fernsehen Niedersachsen", + "program":"Unknown", + "livestream":"yes", + "length":"86400", + "type":"content" + } + } + ], + "comScoreParams":[ + { + "url":"//de.sitestat.com/ndr/ndr/s?html5.player", + "tracker":"COMSCORE", + "islivestream":"1", + "id":"livestream217", + "duration":"0", + "contentId":"livestream217", + "publicationDate":"20180219T1043", + "primaryType":"videolivestream", + "objectType":"videolivestream", + "ns_st_pr":"-", + "ns_st_ep":"NDR Fernsehen Niedersachsen", + "trackTitle":"NDR_Fernsehen_Niedersachsen", + "trackTitleEncoded":"NDR+Fernsehen+Niedersachsen", + "assetFileName":"-", + "showId":"-", + "trackingId":"-", + "trackingContentType":"videoLivestream" + } + ] +} \ No newline at end of file diff --git a/src/test/resources/ndr/ndr_film_detail_m3u8.m3u8 b/src/test/resources/ndr/ndr_film_detail_m3u8.m3u8 new file mode 100644 index 0000000000000000000000000000000000000000..afff5def2a8a3a139f244445c3a2ef43fac746ac --- /dev/null +++ b/src/test/resources/ndr/ndr_film_detail_m3u8.m3u8 @@ -0,0 +1,29 @@ +#EXTM3U +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=184000,RESOLUTION=320x180,CODECS="avc1.66.30, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_184_av-p.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=184000,RESOLUTION=320x180,CODECS="avc1.66.30, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_184_av-b.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=320000,RESOLUTION=480x270,CODECS="avc1.66.30, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_320_av-p.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=320000,RESOLUTION=480x270,CODECS="avc1.66.30, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_320_av-b.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=608000,RESOLUTION=512x288,CODECS="avc1.77.30, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_608_av-p.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=608000,RESOLUTION=512x288,CODECS="avc1.77.30, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_608_av-b.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1216000,RESOLUTION=640x360,CODECS="avc1.77.30, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1216_av-p.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1216000,RESOLUTION=640x360,CODECS="avc1.77.30, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1216_av-b.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1992000,RESOLUTION=960x540,CODECS="avc1.77.30, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1992_av-p.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1992000,RESOLUTION=960x540,CODECS="avc1.77.30, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1992_av-b.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3776000,RESOLUTION=1280x720,CODECS="avc1.64001f, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_3776_av-p.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3776000,RESOLUTION=1280x720,CODECS="avc1.64001f, mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_3776_av-b.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=56000,CODECS="mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_184_a-p.m3u8?sd=10&rebase=on&id= +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=56000,CODECS="mp4a.40.2" +https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_184_a-b.m3u8?sd=10&rebase=on&id=