Skip to content

Commit

Permalink
phoenix: fix missing title #869
Browse files Browse the repository at this point in the history
  • Loading branch information
pidoubleyou committed Dec 26, 2022
1 parent 027de69 commit e6f5d9a
Show file tree
Hide file tree
Showing 5 changed files with 1,086 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class PhoenixFilmDetailDeserializer
private static final String ELEMENT_SUBTITLE = "subtitel";
private static final String ELEMENT_TITLE = "titel";
private static final String ELEMENT_TYP = "typ";
private static final String ELEMENT_VERORTUNG = "verortung";
private static final String ELEMENT_VORSPANN = "vorspann";

private static final String TYP_VIDEO = "video-smubl";
Expand All @@ -31,27 +32,60 @@ public Optional<PhoenixFilmDetailDto> deserialize(

final JsonObject jsonObject = aJsonElement.getAsJsonObject();

final Optional<String> topic = JsonUtils.getAttributeAsString(jsonObject, ELEMENT_TITLE);
final Optional<String> title = JsonUtils.getAttributeAsString(jsonObject, ELEMENT_SUBTITLE);
final Optional<String> title = JsonUtils.getAttributeAsString(jsonObject, ELEMENT_TITLE);
final Optional<String> subtitle = JsonUtils.getAttributeAsString(jsonObject, ELEMENT_SUBTITLE);
final Optional<String> description =
JsonUtils.getAttributeAsString(jsonObject, ELEMENT_VORSPANN);
final Optional<String> baseName = parseBaseName(jsonObject);
final Optional<String> website = parseWebsite(jsonObject);

if (!topic.isPresent() || !title.isPresent() || !baseName.isPresent()) {
if (!title.isPresent() || !subtitle.isPresent() || !baseName.isPresent()) {
return Optional.empty();
}

final Optional<String> verortung = parseFirstVerortung(jsonObject);

PhoenixFilmDetailDto dto = new PhoenixFilmDetailDto();
dto.setBaseName(baseName.get());
dto.setTopic(topic.get());
dto.setTitle(title.get());
dto.setTopic(determineTopic(title, verortung));
dto.setTitle(determineTitle(title, subtitle, verortung));
description.ifPresent(dto::setDescription);
website.ifPresent(dto::setWebsite);

return Optional.of(dto);
}

private String determineTitle(Optional<String> title, Optional<String> subtitle, Optional<String> verortung) {
if (verortung.isEmpty() || verortung.get().equalsIgnoreCase(title.get())) {
return subtitle.get();
}

if (subtitle.isEmpty() || subtitle.get().isEmpty()) {
return title.get();
}

return String.format("%s - %s", title.get(), subtitle.get());
}

private String determineTopic(Optional<String> title, Optional<String> verortung) {
if (verortung.isEmpty()) {
return title.get();
}
return verortung.get();
}

private Optional<String> parseFirstVerortung(JsonObject jsonObject) {
if (!jsonObject.has(ELEMENT_VERORTUNG)) {
return Optional.empty();
}

final JsonArray verortungArray = jsonObject.get(ELEMENT_VERORTUNG).getAsJsonArray();
if (verortungArray.size() > 0) {
return JsonUtils.getAttributeAsString(verortungArray.get(0).getAsJsonObject(), ELEMENT_TITLE);
}
return Optional.empty();
}

private Optional<String> parseWebsite(JsonObject aJsonObject) {
if (!aJsonObject.has(ELEMENT_META)) {
return Optional.empty();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ protected void processRestTarget(final CrawlerUrlDTO aDTO, final WebTarget aTarg
final Set<Film> films = zdfFilmDetailTask.invoke();
films.forEach(
film -> {
film.setThema(filmDetailDto.getTopic());
film.setTitel(filmDetailDto.getTitle());
if (filmDetailDto.getWebsite().isPresent()) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,17 +40,33 @@ public PhoenixFilmDetailDeserializerTest(

@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(
new Object[][]{
{
"/phoenix/phoenix_film_detail1.json",
"Presseclub",
"Mehr Grenzschutz und eine neue Asylpolitik – letzte Rettung für Europa und Merkel?",
"Moderation: Sonia Seymour Mikich",
"293872",
"https://www.phoenix.de/sendungen/gespraeche/presseclub/mehr-grenzschutz-und-eine-neue-asylpolitik--letzte-rettung-fuer-europa-und-merkel-a-271252.html"
}
});
return Arrays.asList(
new Object[][] {
{
"/phoenix/phoenix_film_detail1.json",
"Presseclub",
"Mehr Grenzschutz und eine neue Asylpolitik – letzte Rettung für Europa und Merkel?",
"Moderation: Sonia Seymour Mikich",
"293872",
"https://www.phoenix.de/sendungen/gespraeche/presseclub/mehr-grenzschutz-und-eine-neue-asylpolitik--letzte-rettung-fuer-europa-und-merkel-a-271252.html"
},
{
"/phoenix/phoenix_film_detail_title_contains_not_topic.json",
"Dokumentationen",
"Ungezähmtes Albanien",
"Film von Barbara Fally-Puskás, ORF ",
"3030967",
"https://www.phoenix.de/sendungen/dokumentationen/ungezaehmtes-albanien-a-2081815.html"
},
{
"/phoenix/phoenix_film_detail_title_and_subtitle.json",
"Dokumentationen",
"The Wall - Mauern der Welt - Nordirlands \"Friedenslinien\"",
"Film von Caryl Ebenezer, phoenix 2022",
"2752659",
"https://www.phoenix.de/sendungen/dokumentationen/the-wall---mauern-der-wel-a-2642819.html"
}
});
}

@Test
Expand Down
Loading

0 comments on commit e6f5d9a

Please sign in to comment.